Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- _Key_
- // Comment
- /* Comment */
- TypeName {Type KeyName, ...} = typedef
- ChildType : ParentType {...} = typedef with inheritence (always public)
- public = exported object/variable. Rest are "virtual"/confined to this document
- type(Var) references the type pointed to by the value of Var. Var must be a StringID
- type[#] = array of type with optional length #
- uint<#> = #-bit uint
- int[min, max] = int bounded between min and max. Standard interval notation used
- UTF8 = UTF8Char[]
- ASCII = ASCIIChar[]
- StringID<DBType, # = 64> = uint<#> index to a DBType entry in the future, case-insensitive ASCII for now
- ObjectRef {StringID Object}
- MonoMediaObject : ObjectRef {StringID MediaType}
- Rank = int[0, 2]
- RankedObject : ObjectRef {Rank Rank}
- RankedOriginObject : RankedObject {Bool Originating}
- ExternalIDList<source = StringID> {[source]: ASCII, ...}
- AuthorID {StringID Source, ASCII IDs}
- LangStrings<content = UTF8, lang = StringID> {[lang]: content, ...}
- OR LangStrings<content = UTF8, _> = content - if user passes a language to the url
- RankedLangStrings : LangStrings {Rank Rank}
- AuthoredLangStrings<append = {}> : LangStrings<{AuthorID[] Authors, UTF8 Content} + append> {}
- // Experimental: Subsections can be under multiple parent sections
- // The uint is the index of the parent in the greater SectionLangString array
- SectionLangStrings : AuthoredLangStrings<{UTF8 Title}> {uint[] Parents}
- ------------------------------------------------------------------------------
- DBObject : Object
- {
- $StringID<Object> ObjectType, // Object type
- $StringID<type(ObjectType)> ID // Object ID, relative to the object type
- }
- PageObject : DBObject
- {
- LangStrings Name,
- // TODO: Should multiple translations be supported?
- RankedLangStrings AlternateNames,
- AuthoredLangStrings Intro,
- SectionLangStrings[] Sections,
- StringID<Source>[] ExternalIDs
- }
- Source : PageObject
- {
- ASCII[] BaseDomains,
- // TODO: fetching rules
- }
- /* Category objects */
- CategoryObject : DBObject
- {}
- public Sense : CategoryObject // Sight, Hearing, Taste
- {}
- public VirtualSense : CategoryObject // Language, Music Comprehension
- {
- StringID[] PerceptibleSenses
- }
- public Descriptor : SensoryObject
- {
- StringID ObjectType = "descriptor"
- StringID DescriptorType,
- // TODO: Should these be ranked?
- StringID[] ParentDescriptors
- }
- CulturalObject : CategoryObject
- {
- RankedOriginObject[] Locations, // ORIGINATING?
- RankedOriginObject[] Cultures // ORIGINATING?
- }
- public Division : CategoryObject
- {
- StringID ObjectType = "division"
- StringID[] ParentDivisions
- }
- public Movement : CulturalObject
- {
- StringID ObjectType = "movement"
- RankedObject[] InfluencingMovements // No inheritence on any RankedObject
- }
- public Scene : CulturalObject, MonoMediaObject
- {
- StringID ObjectType = "scene"
- // Experimental: Make scenes context free. Noise Rock bands could be part
- // of a Noise scene. Non-Punk Rock bands are part of NYHC. Let how scenes
- // are tagged on releases reflect its genres/movements
- RankedObject[] InfluencingScenes
- }
- public Meta : Division, MonoMediaObject
- {
- StringID ObjectType = "meta"
- StringID[] ParentMetas
- }
- public Style : Meta, Movement
- {
- StringID ObjectType = "style"
- StringID[] ParentStyles,
- RankedObject[] HistoricalInfluencingStyles,
- RankedObject[] SonicInfluencingStyles
- }
- public Trend : Style
- {
- StringID ObjectType = "trend"
- RankedObject[] InfluencingTrends
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement