#define SETUP_BLOB(v) \\r
SQBlob *self = NULL; \\r
{ if(SQ_FAILED(sq_getinstanceup(v,1,(SQUserPointer*)&self,(SQUserPointer)SQSTD_BLOB_TYPE_TAG))) \\r
- return sq_throwerror(v,_SC("invalid type tag")); } \\r
- if(!self || !self->IsValid()) \\r
- return sq_throwerror(v,_SC("the blob is invalid"));\r
+ return SQ_ERROR; }\r
\r
\r
static SQInteger _blob_resize(HSQUIRRELVM v)\r
static SQInteger _blob_releasehook(SQUserPointer p, SQInteger size)\r
{\r
SQBlob *self = (SQBlob*)p;\r
- self->~SQBlob();\r
- sq_free(self,sizeof(SQBlob));\r
+ delete self;\r
return 1;\r
}\r
\r
sq_getinteger(v, 2, &size);\r
}\r
if(size < 0) return sq_throwerror(v, _SC("cannot create blob with negative size"));\r
- //SQBlob *b = new SQBlob(size);\r
-\r
- SQBlob *b = new (sq_malloc(sizeof(SQBlob)))SQBlob(size);\r
+ SQBlob *b = new SQBlob(size);\r
if(SQ_FAILED(sq_setinstanceup(v,1,b))) {\r
- b->~SQBlob();\r
- sq_free(b,sizeof(SQBlob));\r
- return sq_throwerror(v, _SC("cannot create blob"));\r
- }\r
- sq_setreleasehook(v,1,_blob_releasehook);\r
- return 0;\r
-}\r
-\r
-static SQInteger _blob__cloned(HSQUIRRELVM v)\r
-{\r
- SQBlob *other = NULL;\r
- { \r
- if(SQ_FAILED(sq_getinstanceup(v,2,(SQUserPointer*)&other,(SQUserPointer)SQSTD_BLOB_TYPE_TAG)))\r
- return SQ_ERROR; \r
- }\r
- //SQBlob *thisone = new SQBlob(other->Len());\r
- SQBlob *thisone = new (sq_malloc(sizeof(SQBlob)))SQBlob(other->Len());\r
- memcpy(thisone->GetBuf(),other->GetBuf(),thisone->Len());\r
- if(SQ_FAILED(sq_setinstanceup(v,1,thisone))) {\r
- thisone->~SQBlob();\r
- sq_free(thisone,sizeof(SQBlob));\r
- return sq_throwerror(v, _SC("cannot clone blob"));\r
+ delete b;\r
+ return sq_throwerror(v, _SC("cannot create blob with negative size"));\r
}\r
sq_setreleasehook(v,1,_blob_releasehook);\r
return 0;\r
_DECL_BLOB_FUNC(_get,2,_SC("xn")),\r
_DECL_BLOB_FUNC(_typeof,1,_SC("x")),\r
_DECL_BLOB_FUNC(_nexti,2,_SC("x")),\r
- _DECL_BLOB_FUNC(_cloned,2,_SC("xx")),\r
{0,0,0,0}\r
};\r
\r