forked from LeenkxTeam/LNXSDK
61 lines
1.0 KiB
Haxe
61 lines
1.0 KiB
Haxe
|
package webidl;
|
||
|
|
||
|
typedef Data = Array<Definition>;
|
||
|
|
||
|
typedef Position = {
|
||
|
var file : String;
|
||
|
var line : Int;
|
||
|
var pos : Int;
|
||
|
}
|
||
|
|
||
|
typedef Definition = {
|
||
|
var pos : Position;
|
||
|
var kind : DefinitionKind;
|
||
|
}
|
||
|
|
||
|
enum DefinitionKind {
|
||
|
DInterface( name : String, attrs : Array<Attrib>, fields : Array<Field> );
|
||
|
DImplements( type : String, interfaceName : String );
|
||
|
DEnum( name : String, values : Array<String> );
|
||
|
}
|
||
|
|
||
|
typedef Field = {
|
||
|
var name : String;
|
||
|
var kind : FieldKind;
|
||
|
var pos : Position;
|
||
|
}
|
||
|
|
||
|
enum FieldKind {
|
||
|
FMethod( args : Array<FArg>, ret : TypeAttr );
|
||
|
FAttribute( t : TypeAttr );
|
||
|
DConst( name : String, type : Type, value : String );
|
||
|
}
|
||
|
|
||
|
typedef FArg = { name : String, opt : Bool, t : TypeAttr };
|
||
|
typedef TypeAttr = { var t : Type; var attr : Array<Attrib>; };
|
||
|
|
||
|
enum Type {
|
||
|
TVoid;
|
||
|
TInt;
|
||
|
TShort;
|
||
|
TFloat;
|
||
|
TDouble;
|
||
|
TBool;
|
||
|
TAny;
|
||
|
TVoidPtr;
|
||
|
TCustom( id : String );
|
||
|
TArray( t : Type );
|
||
|
}
|
||
|
|
||
|
enum Attrib {
|
||
|
// fields
|
||
|
AValue;
|
||
|
ARef;
|
||
|
AConst;
|
||
|
AOperator( op : String );
|
||
|
// interfaces
|
||
|
ANoDelete;
|
||
|
APrefix( prefix : String );
|
||
|
AJSImplementation( name : String );
|
||
|
}
|