5
BOOL CreateStaticNamespace(HSQUIRRELVM v,ScriptNamespaceDecl *sn)
9
sq_pushstring(v,sn->name,-1);
11
const ScriptClassMemberDecl *members = sn->members;
12
const ScriptClassMemberDecl *m = NULL;
13
while(members[n].name) {
15
sq_pushstring(v,m->name,-1);
16
sq_newclosure(v,m->func,0);
17
sq_setparamscheck(v,m->params,m->typemask);
18
sq_setnativeclosurename(v,-1,m->name);
22
const ScriptConstantDecl *consts = sn->constants;
23
const ScriptConstantDecl *c = NULL;
25
while(consts[n].name) {
27
sq_pushstring(v,c->name,-1);
29
case OT_STRING: sq_pushstring(v,c->val.s,-1);break;
30
case OT_INTEGER: sq_pushinteger(v,c->val.i);break;
31
case OT_FLOAT: sq_pushfloat(v,c->val.f);break;
32
// C::B patch: Handle all switch cases
39
const ScriptClassMemberDecl *members = sn->delegate;
40
const ScriptClassMemberDecl *m = NULL;
42
while(members[n].name) {
44
sq_pushstring(v,m->name,-1);
45
sq_newclosure(v,m->func,0);
46
sq_setparamscheck(v,m->params,m->typemask);
47
sq_setnativeclosurename(v,-1,m->name);
59
BOOL CreateClass(HSQUIRRELVM v,SquirrelClassDecl *cd)
62
SQInteger oldtop = sq_gettop(v);
64
sq_pushstring(v,cd->name,-1);
66
sq_pushstring(v,cd->base,-1);
67
if(SQ_FAILED(sq_get(v,-3))) { // Make sure the base exists if specified by cd->base name.
72
if(SQ_FAILED(sq_newclass(v,cd->base?1:0))) { // Will inherit from base class on stack from sq_get() above.
76
// sq_settypetag(v,-1,(unsigned int)cd);
77
// C::B patch: Use pragmas only for MS compilers
78
#if defined(_WIN32) && defined(_MSC_VER)
79
#pragma warning(disable : 4311)
81
sq_settypetag(v,-1,reinterpret_cast<SQUserPointer>(cd));
82
const ScriptClassMemberDecl *members = cd->members;
83
const ScriptClassMemberDecl *m = NULL;
85
while(members[n].name) {
87
sq_pushstring(v,m->name,-1);
88
sq_newclosure(v,m->func,0);
89
sq_setparamscheck(v,m->params,m->typemask);
90
sq_setnativeclosurename(v,-1,m->name);
100
BOOL CreateNativeClassInstance(HSQUIRRELVM v,const SQChar *classname,SQUserPointer ud,SQRELEASEHOOK hook)
102
SQInteger oldtop = sq_gettop(v);
104
sq_pushstring(v,classname,-1);
105
if(SQ_FAILED(sq_rawget(v,-2))){ // Get the class (created with sq_newclass()).
109
//sq_pushroottable(v);
110
if(SQ_FAILED(sq_createinstance(v,-1))) {
114
sq_remove(v,-3); //removes the root table
115
sq_remove(v,-2); //removes the class
116
if(SQ_FAILED(sq_setinstanceup(v,-1,ud))) {
120
sq_setreleasehook(v,-1,hook);