Initial commit.
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
|
||||
enum{
|
||||
BBTYPE_END=0,
|
||||
BBTYPE_INT=1,BBTYPE_FLOAT=2,
|
||||
BBTYPE_STRING=3,BBTYPE_CSTR=4,
|
||||
BBTYPE_OBJECT=5,BBTYPE_VECTOR=6
|
||||
};
|
||||
|
||||
typedef int bbInt;
|
||||
typedef float bbFloat;
|
||||
typedef bbStringhandle *bbString;
|
||||
typedef bbObjectHandle *bbObject;
|
||||
typedef bbVectorHandle *bbVector;
|
||||
typedef const char * bbCStr;
|
||||
|
||||
union bbValue{
|
||||
bbInt INT;
|
||||
bbFloat FLOAT;
|
||||
bbString STRING;
|
||||
bbObject OBJECT;
|
||||
bbVector VECTOR;
|
||||
bbCStr CSTR;
|
||||
};
|
||||
|
||||
struct bbType{
|
||||
int id;
|
||||
bbType( int n ):id(n(){}
|
||||
};
|
||||
|
||||
struct bbInstance{
|
||||
bbValue value;
|
||||
};
|
||||
|
||||
struct bbHandle{
|
||||
bbInstance *instance;
|
||||
int ref_cnt;
|
||||
bbType *type;
|
||||
};
|
||||
|
||||
struct bbEnviron{
|
||||
bbVector *variables;
|
||||
};
|
||||
|
||||
struct bbIntType : public bbType{
|
||||
bbInt():bbType( BBTYPE_INT ){}
|
||||
};
|
||||
|
||||
struct bbFloatType : public bbType{
|
||||
bbFloat():bbType( BBTYPE_FLOAT ){}
|
||||
};
|
||||
|
||||
struct bbCStrType : public bbType{
|
||||
bbCStrType():bbType( BBTYPE_CSTR ){}
|
||||
};
|
||||
|
||||
struct bbStringType : public bbType{
|
||||
bbStringType():bbType( BBTYPE_STRING ){}
|
||||
};
|
||||
|
||||
struct bbVectorType : public bbType{
|
||||
bbType *element_type;
|
||||
bbVectorType( bbType *e ):bbType( BBTYPE_VECTOR ),element_type( e ){}
|
||||
}
|
||||
|
||||
struct bbObjectType : public bbType{
|
||||
bbEnviron *environ;
|
||||
bbObject *first_used,*last_used;
|
||||
bbObject *first_free,*last_free;
|
||||
bbObjectType( bbEnviron *e ):bbType( BBTYPE_OBJECT ),environ( e ){}
|
||||
};
|
||||
|
||||
struct bbStringHandle : public bbHandle{
|
||||
};
|
||||
|
||||
struct bbObjectHandle : public bbHandle{
|
||||
bbObject *next,*prev;
|
||||
};
|
||||
|
||||
struct bbVectorHandle : public bbHandle{
|
||||
};
|
||||
|
||||
void assign( bbHandleVariable dest,bbHandle src );
|
||||
Reference in New Issue
Block a user