Producing more data structures
This commit is contained in:
parent
7e972e2132
commit
f3f744c348
11
analyzer/accessors.go
Normal file
11
analyzer/accessors.go
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
package analyzer
|
||||||
|
|
||||||
|
func (section TypeSection) Kind () (kind SectionKind) {
|
||||||
|
kind = SectionKindType
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (section TypeSection) Name () (name string) {
|
||||||
|
name = section.name
|
||||||
|
return
|
||||||
|
}
|
24
analyzer/primitives.go
Normal file
24
analyzer/primitives.go
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
package analyzer
|
||||||
|
|
||||||
|
// This is a global, cannonical list of primitive and built-in types.
|
||||||
|
|
||||||
|
var PrimitiveInt = TypeSection { name: "Int" }
|
||||||
|
var PrimitiveUInt = TypeSection { name: "UInt" }
|
||||||
|
var PrimitiveI8 = TypeSection { name: "I8" }
|
||||||
|
var PrimitiveI16 = TypeSection { name: "I16" }
|
||||||
|
var PrimitiveI32 = TypeSection { name: "I32" }
|
||||||
|
var PrimitiveI64 = TypeSection { name: "I64" }
|
||||||
|
var PrimitiveU8 = TypeSection { name: "U8" }
|
||||||
|
var PrimitiveU16 = TypeSection { name: "U16" }
|
||||||
|
var PrimitiveU32 = TypeSection { name: "U32" }
|
||||||
|
var PrimitiveU64 = TypeSection { name: "U64" }
|
||||||
|
|
||||||
|
var PrimitiveObjt = TypeSection { name: "Objt" }
|
||||||
|
var PrimitiveFace = TypeSection { name: "Face" }
|
||||||
|
|
||||||
|
var BuiltInString = TypeSection {
|
||||||
|
inherits: Type {
|
||||||
|
actual: PrimitiveU8,
|
||||||
|
kind: TypeKindVariableArray,
|
||||||
|
},
|
||||||
|
}
|
@ -14,7 +14,7 @@ type SectionTable map[locator] Section
|
|||||||
type SectionKind int
|
type SectionKind int
|
||||||
|
|
||||||
const (
|
const (
|
||||||
SectionKindType = iota
|
SectionKindType SectionKind = iota
|
||||||
SectionKindObjt
|
SectionKindObjt
|
||||||
SectionKindEnum
|
SectionKindEnum
|
||||||
SectionKindFace
|
SectionKindFace
|
||||||
@ -27,3 +27,34 @@ type Section interface {
|
|||||||
Kind () (kind SectionKind)
|
Kind () (kind SectionKind)
|
||||||
Name () (name string)
|
Name () (name string)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TypeKind represents what kind of type a type is.
|
||||||
|
type TypeKind int
|
||||||
|
|
||||||
|
const (
|
||||||
|
// TypeKindBasic means it's a single value, or a fixed length array.
|
||||||
|
TypeKindBasic TypeKind = iota
|
||||||
|
|
||||||
|
// TypeKindPointer means it's a pointer
|
||||||
|
TypeKindPointer
|
||||||
|
|
||||||
|
// TypeKindVariableArray means it's an array of variable length.
|
||||||
|
TypeKindVariableArray
|
||||||
|
)
|
||||||
|
|
||||||
|
// Type represents a description of a type. It must eventually point to a
|
||||||
|
// TypeSection.
|
||||||
|
type Type struct {
|
||||||
|
actual Section
|
||||||
|
points *Type
|
||||||
|
|
||||||
|
mutable bool
|
||||||
|
kind TypeKind
|
||||||
|
length uint64
|
||||||
|
}
|
||||||
|
|
||||||
|
// TypeSection represents a type definition section.
|
||||||
|
type TypeSection struct {
|
||||||
|
name string
|
||||||
|
inherits Type
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user