parser

package
v0.0.0-...-6f9c769 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 10, 2023 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const IsBigEndian = false
View Source
const IsLittleEndian = true

Variables

View Source
var (
	Bool  = Type{Name: "bool", Code: TypeCodeBool, Number: &Number{Code: TypeCodeBool}}
	I8    = Type{Name: "i8", Code: TypeCodeI8, Number: &Number{Code: TypeCodeI8}}
	I16   = Type{Name: "i16", Code: TypeCodeI16, Number: &Number{TypeCodeI16, EndianLittle}}
	I16B  = Type{Name: "i16b", Code: TypeCodeI16, Number: &Number{TypeCodeI16, EndianBig}}
	I16N  = Type{Name: "i16n", Code: TypeCodeI16, Number: &Number{TypeCodeI16, EndianNative}}
	I32   = Type{Name: "i32", Code: TypeCodeI32, Number: &Number{TypeCodeI32, EndianLittle}}
	I32B  = Type{Name: "i32b", Code: TypeCodeI32, Number: &Number{TypeCodeI32, EndianBig}}
	I32N  = Type{Name: "i32n", Code: TypeCodeI32, Number: &Number{TypeCodeI32, EndianNative}}
	I64   = Type{Name: "i64", Code: TypeCodeI64, Number: &Number{TypeCodeI64, EndianLittle}}
	I64B  = Type{Name: "i64b", Code: TypeCodeI64, Number: &Number{TypeCodeI64, EndianBig}}
	I64N  = Type{Name: "i64n", Code: TypeCodeI64, Number: &Number{TypeCodeI64, EndianNative}}
	I128  = Type{Name: "i128", Code: TypeCodeI128, Number: &Number{TypeCodeI128, EndianLittle}}
	I128B = Type{Name: "i128b", Code: TypeCodeI128, Number: &Number{TypeCodeI128, EndianBig}}
	I128N = Type{Name: "i128n", Code: TypeCodeI128, Number: &Number{TypeCodeI128, EndianNative}}
	U8    = Type{Name: "u8", Code: TypeCodeU8, Number: &Number{Code: TypeCodeU8}}
	U16   = Type{Name: "u16", Code: TypeCodeU16, Number: &Number{TypeCodeU16, EndianLittle}}
	U16B  = Type{Name: "u16b", Code: TypeCodeU16, Number: &Number{TypeCodeU16, EndianBig}}
	U16N  = Type{Name: "u16n", Code: TypeCodeU16, Number: &Number{TypeCodeU16, EndianNative}}
	U32   = Type{Name: "u32", Code: TypeCodeU32, Number: &Number{TypeCodeU32, EndianLittle}}
	U32B  = Type{Name: "u32b", Code: TypeCodeU32, Number: &Number{TypeCodeU32, EndianBig}}
	U32N  = Type{Name: "u32n", Code: TypeCodeU32, Number: &Number{TypeCodeU32, EndianNative}}
	U64   = Type{Name: "u64", Code: TypeCodeU64, Number: &Number{TypeCodeU64, EndianLittle}}
	U64B  = Type{Name: "u64b", Code: TypeCodeU64, Number: &Number{TypeCodeU64, EndianBig}}
	U64N  = Type{Name: "u64n", Code: TypeCodeU64, Number: &Number{TypeCodeU64, EndianNative}}
	U128  = Type{Name: "u128", Code: TypeCodeU128, Number: &Number{TypeCodeU128, EndianLittle}}
	U128B = Type{Name: "u128b", Code: TypeCodeU128, Number: &Number{TypeCodeU128, EndianBig}}
	U128N = Type{Name: "u128n", Code: TypeCodeU128, Number: &Number{TypeCodeU128, EndianNative}}
	F32   = Type{Name: "f32", Code: TypeCodeF32, Number: &Number{TypeCodeF64, EndianLittle}}
	F32B  = Type{Name: "f32b", Code: TypeCodeF32, Number: &Number{TypeCodeF64, EndianBig}}
	F32N  = Type{Name: "f32n", Code: TypeCodeF32, Number: &Number{TypeCodeF64, EndianNative}}
	F64   = Type{Name: "f64", Code: TypeCodeF64, Number: &Number{TypeCodeF64, EndianLittle}}
	F64B  = Type{Name: "f64b", Code: TypeCodeF64, Number: &Number{TypeCodeF64, EndianBig}}
	F64N  = Type{Name: "f64n", Code: TypeCodeF64, Number: &Number{TypeCodeF64, EndianNative}}
)

Functions

func MaxNumber

func MaxNumber(code TypeCode) uint64

func MinNumber

func MinNumber(code TypeCode) int64

Types

type Alias

type Alias struct {
	Type     Type
	Computed *Type
}

type AlignAttribute

type AlignAttribute struct {
	Value int
}

type Attribute

type Attribute struct {
	Name string
	Args []string
}

type Comment

type Comment struct {
	Star   bool
	Inline bool
	Lines  []CommentLine
}

type CommentLine

type CommentLine struct {
	Line Line
	Text string
}

type Const

type Const struct {
	Type  *Type
	Name  string
	Value Value
}

type Endian

type Endian byte
const (
	EndianLittle Endian = 0
	EndianBig    Endian = 1
	EndianNative Endian = 2
)

type Enum

type Enum struct {
	Type      *Type
	ValueType *Type
	Options   []*EnumOption
}

type EnumOption

type EnumOption struct {
	Enum     *Enum
	JsonName string
	Value    NumberValue
}

type Error

type Error struct {
	Line   Line
	Index  int
	Reason string
}

func (Error) Error

func (e Error) Error() string

type Field

type Field struct {
	Struct         *Struct
	Name           string
	Number         int // 1 based field index
	NumberDeclared bool
	JsonNames      []string // Json names to match
	ProtoNumber    int      // Protobuf field number. Defaults to Number
	Type           *Type
	Size           int
	Offset         int
	Initial        Value
}

func (*Field) AsUnion

func (f *Field) AsUnion() *Struct

type FieldValue

type FieldValue struct {
	Field *Field
	Value Value
}

type File

type File struct {
	Constants []*Const
	Structs   []*Struct
	Enums     []*Enum
	Variants  []*Variant
	Types     map[string]*Type
}

type Import

type Import struct {
	Name string
	File File
}

type Line

type Line struct {
	Data      string
	Number    int
	ColStart  int // offset of the first non-whitespace rune
	ColEnd    int
	Start     int
	End       int
	ByteStart int
	ByteEnd   int
	Pos       Token
	Done      bool
}

type Map

type Map struct {
	Type  *Type
	Kind  TypeCode
	Key   *Type
	Value *Type
}

type Number

type Number struct {
	Code   TypeCode
	Endian Endian
}

func (*Number) Size

func (n *Number) Size() int

func (*Number) ToValue

func (n *Number) ToValue(v uint64) *NumberValue

func (*Number) ToValueSigned

func (n *Number) ToValueSigned(v int64) *NumberValue

type NumberValue

type NumberValue struct {
	*Number
	// contains filtered or unexported fields
}

func (*NumberValue) Append

func (nv *NumberValue) Append(b []byte) []byte

func (*NumberValue) Get

func (nv *NumberValue) Get() uint64

func (*NumberValue) Get128

func (nv *NumberValue) Get128()

func (*NumberValue) Set

func (nv *NumberValue) Set(value uint64)

func (*NumberValue) Set128

func (nv *NumberValue) Set128(value [16]byte)

func (*NumberValue) Size

func (nv *NumberValue) Size() int

type Object

type Object struct {
	Props  []*ObjectProperty
	ByName map[string]*ObjectProperty
	Curly  bool
}

type ObjectProperty

type ObjectProperty struct {
	Index   int
	Name    string
	Value   interface{}
	HasName bool
}

type Optional

type Optional struct {
	Type      *Type
	IndexType *Type
}

type Order

type Order struct {
	// contains filtered or unexported fields
}

func NewOrderHeap

func NewOrderHeap() *Order

func (*Order) AsReader

func (o *Order) AsReader() OrderReader

func (*Order) ID

func (o *Order) ID() int32

func (*Order) IDbe

func (o *Order) IDbe() int32

func (*Order) Price

func (o *Order) Price() float32

func (*Order) SetID

func (o *Order) SetID(v int32)

func (*Order) SetPrice

func (o *Order) SetPrice(v float32)

type OrderBuilder

type OrderBuilder struct {
	// contains filtered or unexported fields
}

func NewOrderBuilder

func NewOrderBuilder(o **Order) OrderBuilder

func (OrderBuilder) ID

func (o OrderBuilder) ID() int32

func (OrderBuilder) SetID

func (o OrderBuilder) SetID(v int32)

type OrderHeapContainer

type OrderHeapContainer struct {
	O *Order
	// contains filtered or unexported fields
}

func (*OrderHeapContainer) ID

func (o *OrderHeapContainer) ID() int32

type OrderReader

type OrderReader struct {
	// contains filtered or unexported fields
}

func NewOrderReader

func NewOrderReader(o *Order, end uintptr) OrderReader

func (OrderReader) ID

func (o OrderReader) ID() int32

func (OrderReader) SetID

func (o OrderReader) SetID(v int32)

func (OrderReader) Unsafe

func (o OrderReader) Unsafe() *Order

type OrderStruct

type OrderStruct struct {
	// contains filtered or unexported fields
}

func (*OrderStruct) ID

func (o *OrderStruct) ID() int32

func (*OrderStruct) Price

func (o *OrderStruct) Price() float32

func (*OrderStruct) SetID

func (o *OrderStruct) SetID(v int32)

func (*OrderStruct) SetPrice

func (o *OrderStruct) SetPrice(v float32)

type OrderStructContainer

type OrderStructContainer struct {
	O *OrderStruct
	// contains filtered or unexported fields
}

func (*OrderStructContainer) ID

func (o *OrderStructContainer) ID() int32

type PackAttribute

type PackAttribute struct {
	Value int
}

type Parser

type Parser struct {
	// contains filtered or unexported fields
}

func NewParser

func NewParser(data []byte) *Parser

func (*Parser) NextLine

func (p *Parser) NextLine() (Line, error)

func (*Parser) Parse

func (p *Parser) Parse() error

type Pointer

type Pointer struct {
	Type *Type
	Size int
}

type Protocol

type Protocol struct {
}

type String

type String struct {
	Type        *Type
	Code        TypeCode
	PointerSize int
	Inline      int
	Max         int
}

func (*String) FieldSize

func (s *String) FieldSize() int

func (*String) IsPointer

func (s *String) IsPointer() bool

type Struct

type Struct struct {
	Parent *Struct
	Type   *Type
	Inline *Field
	Fields []*Field
	Align  int
	Pack   int
	Size   int
	Inner  []*Type
}

func NewStruct

func NewStruct(name string, line Line, comments []*Comment) *Struct

func (*Struct) IsUnion

func (s *Struct) IsUnion() bool

func (*Struct) NewField

func (s *Struct) NewField(line Line, comments []*Comment) *Field

func (*Struct) Unaligned

func (s *Struct) Unaligned() int

type StructValue

type StructValue struct {
	Fields []FieldValue
	Data   []byte
}

func (*StructValue) Append

func (sv *StructValue) Append(b []byte) []byte

type Token

type Token struct {
	Begin int
	End   int
	Data  string
}

type Type

type Type struct {
	Parent    *Type
	Name      string
	StartLine Line
	EndLine   Line
	Comments  []*Comment
	Optional  *Optional
	Pointer   *Pointer
	Const     *Const
	Number    *Number
	Enum      *Enum
	Field     *Field
	Struct    *Struct
	Alias     *Alias
	Variant   *Variant
	Value     *Value
	Vector    *Vector
	Map       *Map
	Code      TypeCode
}

Type variant

func (*Type) Equal

func (lhs *Type) Equal(rhs *Type)

func (*Type) ParentConst

func (t *Type) ParentConst() (*Type, *Const)

func (*Type) ParentField

func (t *Type) ParentField() (*Type, *Field)

func (*Type) ParentStruct

func (t *Type) ParentStruct() (*Type, *Struct)

func (*Type) Size

func (t *Type) Size() int

type TypeCode

type TypeCode byte
const (
	TypeCodeUnknown      TypeCode = 0
	TypeCodeBool         TypeCode = 1
	TypeCodeI8           TypeCode = 2
	TypeCodeU8           TypeCode = 3
	TypeCodeI16          TypeCode = 4
	TypeCodeU16          TypeCode = 5
	TypeCodeI32          TypeCode = 6
	TypeCodeU32          TypeCode = 7
	TypeCodeI64          TypeCode = 8
	TypeCodeU64          TypeCode = 9
	TypeCodeI128         TypeCode = 10
	TypeCodeU128         TypeCode = 11
	TypeCodeF32          TypeCode = 12
	TypeCodeF64          TypeCode = 13
	TypeCodeF128         TypeCode = 14
	TypeString           TypeCode = 20 // heap allocated string
	TypeStringInline     TypeCode = 21 // string embedded inline
	TypeStringInlinePlus TypeCode = 22 // string embedded inline with a heap allocated spill-over
	TypeCodeEnum         TypeCode = 25
	TypeCodeStruct       TypeCode = 30
	TypeCodeUnion        TypeCode = 31
	TypeCodeVariant      TypeCode = 32
	TypeCodeOptional     TypeCode = 33
	TypeCodePointer      TypeCode = 34
	TypeCodeArray        TypeCode = 40
	TypeCodeVector       TypeCode = 41
	TypeCodeMap          TypeCode = 50 // robin-hood map
	TypeCodeMapOrdered   TypeCode = 51 // ART radix tree
	TypeCodeMapTree      TypeCode = 52 // B+Tree
	TypeCodeSet          TypeCode = 60
	TypeCodeSetOrdered   TypeCode = 61
	TypeCodeSetTree      TypeCode = 62
	TypeCodeConst        TypeCode = 90
	TypeCodePad          TypeCode = 100
)

type UnknownValue

type UnknownValue struct {
	Value string
}

type Value

type Value struct {
	Type    *Type
	Const   *Const
	Enum    *EnumOption
	Variant *VariantOption
	Struct  *StructValue
	Number  *NumberValue
	Object  *Object
	Unknown *UnknownValue
}

func (*Value) Append

func (v *Value) Append(b []byte) []byte

type Variant

type Variant struct {
	Type     *Type
	Inline   *Field
	Options  []VariantOption
	Optional bool
}

type VariantOption

type VariantOption struct {
	Variant *Variant
	Type    *Type
}

func (*VariantOption) Size

func (vo *VariantOption) Size() int

type Vector

type Vector struct {
	Type    *Type
	Kind    TypeCode
	Element *Type
	Length  int
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL