Made it work again - everything needs to be _stdcall it seems.
This commit is contained in:
@@ -67,7 +67,7 @@
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
@@ -104,7 +104,7 @@
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
@@ -101,7 +101,7 @@
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
@@ -89,7 +89,6 @@
|
||||
<LinkDLL>true</LinkDLL>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<ImportLibrary>.\Debug\linker.lib</ImportLibrary>
|
||||
<AdditionalOptions> /FIXED:NO</AdditionalOptions>
|
||||
<AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
@@ -103,7 +102,7 @@
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
@@ -125,7 +124,6 @@
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<LinkDLL>true</LinkDLL>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<ImportLibrary>.\Release\linker.lib</ImportLibrary>
|
||||
<AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
@@ -93,7 +93,7 @@
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
@@ -89,7 +89,6 @@
|
||||
<LinkDLL>true</LinkDLL>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<ImportLibrary>.\Debug\runtime.lib</ImportLibrary>
|
||||
<AdditionalOptions> /FIXED:NO</AdditionalOptions>
|
||||
<AdditionalDependencies>dxguid.lib;d3dx9.lib;d3d9.lib;dsound.lib;dinput8.lib;ddraw.lib;wsock32.lib;winmm.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)#ThirdParty\;$(DXSDK_DIR)Lib\x86\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
@@ -105,7 +104,7 @@
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
@@ -127,7 +126,6 @@
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<LinkDLL>true</LinkDLL>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<ImportLibrary>.\Release\runtime.lib</ImportLibrary>
|
||||
<AdditionalDependencies>dxguid.lib;d3dx9.lib;d3d9.lib;dsound.lib;dinput8.lib;ddraw.lib;wsock32.lib;winmm.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(SolutionDir)#ThirdParty\;$(DXSDK_DIR)Lib\x86\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
|
||||
+330
-331
@@ -1,4 +1,3 @@
|
||||
|
||||
#include "std.h"
|
||||
#include "bbsys.h"
|
||||
|
||||
@@ -12,10 +11,10 @@ static int objCnt;
|
||||
static int unrelObjCnt;
|
||||
|
||||
//how many objects to alloc per block
|
||||
static const int OBJ_NEW_INC=512;
|
||||
static const int OBJ_NEW_INC = 512;
|
||||
|
||||
//how many strings to alloc per block
|
||||
static const int STR_NEW_INC=512;
|
||||
static const int STR_NEW_INC = 512;
|
||||
|
||||
//current data ptr
|
||||
static BBData *dataPtr;
|
||||
@@ -24,571 +23,571 @@ static BBData *dataPtr;
|
||||
//static list<char*> memBlks;
|
||||
|
||||
//strings
|
||||
static BBStr usedStrs,freeStrs;
|
||||
static BBStr usedStrs, freeStrs;
|
||||
|
||||
//object handle number
|
||||
static int next_handle;
|
||||
|
||||
//object<->handle maps
|
||||
static map<int,BBObj*> handle_map;
|
||||
static map<BBObj*,int> object_map;
|
||||
static map<int, BBObj*> handle_map;
|
||||
static map<BBObj*, int> object_map;
|
||||
|
||||
static BBType _bbIntType( BBTYPE_INT );
|
||||
static BBType _bbFltType( BBTYPE_FLT );
|
||||
static BBType _bbStrType( BBTYPE_STR );
|
||||
static BBType _bbCStrType( BBTYPE_CSTR );
|
||||
static BBType _bbIntType(BBTYPE_INT);
|
||||
static BBType _bbFltType(BBTYPE_FLT);
|
||||
static BBType _bbStrType(BBTYPE_STR);
|
||||
static BBType _bbCStrType(BBTYPE_CSTR);
|
||||
|
||||
static void *bbMalloc( int size ){
|
||||
static void *bbMalloc(int size) {
|
||||
return malloc(size);
|
||||
/*
|
||||
/*
|
||||
char *c=d_new char[ size ];
|
||||
memBlks.push_back( c );
|
||||
return c;
|
||||
*/
|
||||
*/
|
||||
}
|
||||
|
||||
static void bbFree( void *q ){
|
||||
static void bbFree(void *q) {
|
||||
free(q);
|
||||
/*
|
||||
/*
|
||||
if( !q ) return;
|
||||
char *c=(char*)q;
|
||||
memBlks.remove( c );
|
||||
delete [] c;
|
||||
*/
|
||||
*/
|
||||
}
|
||||
|
||||
static void removeStr( BBStr *str ){
|
||||
str->next->prev=str->prev;
|
||||
str->prev->next=str->next;
|
||||
static void removeStr(BBStr *str) {
|
||||
str->next->prev = str->prev;
|
||||
str->prev->next = str->next;
|
||||
}
|
||||
|
||||
static void insertStr( BBStr *str,BBStr *next ){
|
||||
str->next=next;
|
||||
str->prev=next->prev;
|
||||
str->prev->next=str;
|
||||
next->prev=str;
|
||||
static void insertStr(BBStr *str, BBStr *next) {
|
||||
str->next = next;
|
||||
str->prev = next->prev;
|
||||
str->prev->next = str;
|
||||
next->prev = str;
|
||||
}
|
||||
|
||||
void *BBStr::operator new( size_t size ){
|
||||
if( freeStrs.next==&freeStrs ){
|
||||
BBStr *t=(BBStr*)bbMalloc( sizeof(BBStr)*STR_NEW_INC );
|
||||
for( int k=0;k<STR_NEW_INC;++k ) insertStr( t++,&freeStrs );
|
||||
void *BBStr::operator new(size_t size) {
|
||||
if (freeStrs.next == &freeStrs) {
|
||||
BBStr *t = (BBStr*)bbMalloc(sizeof(BBStr)*STR_NEW_INC);
|
||||
for (int k = 0; k < STR_NEW_INC; ++k) insertStr(t++, &freeStrs);
|
||||
}
|
||||
BBStr *t=freeStrs.next;
|
||||
removeStr( t );insertStr( t,&usedStrs );
|
||||
BBStr *t = freeStrs.next;
|
||||
removeStr(t); insertStr(t, &usedStrs);
|
||||
return t;
|
||||
}
|
||||
|
||||
void BBStr::operator delete( void *q ){
|
||||
if( !q ) return;
|
||||
BBStr *t=(BBStr*)q;
|
||||
removeStr( t );insertStr( t,&freeStrs );
|
||||
void BBStr::operator delete(void *q) {
|
||||
if (!q) return;
|
||||
BBStr *t = (BBStr*)q;
|
||||
removeStr(t); insertStr(t, &freeStrs);
|
||||
}
|
||||
|
||||
BBStr::BBStr(){
|
||||
BBStr::BBStr() {
|
||||
++stringCnt;
|
||||
}
|
||||
|
||||
BBStr::BBStr( const char *s ):string(s){
|
||||
BBStr::BBStr(const char *s) :string(s) {
|
||||
++stringCnt;
|
||||
}
|
||||
|
||||
BBStr::BBStr( const char *s,int n ):string(s,n){
|
||||
BBStr::BBStr(const char *s, int n) : string(s, n) {
|
||||
++stringCnt;
|
||||
}
|
||||
|
||||
BBStr::BBStr( const BBStr &s ):string(s){
|
||||
BBStr::BBStr(const BBStr &s) : string(s) {
|
||||
++stringCnt;
|
||||
}
|
||||
|
||||
BBStr::BBStr( const string &s ):string(s){
|
||||
BBStr::BBStr(const string &s) : string(s) {
|
||||
++stringCnt;
|
||||
}
|
||||
|
||||
BBStr &BBStr::operator=( const char *s ){
|
||||
string::operator=( s );return *this;
|
||||
BBStr &BBStr::operator=(const char *s) {
|
||||
string::operator=(s); return *this;
|
||||
}
|
||||
|
||||
BBStr &BBStr::operator=( const BBStr &s ){
|
||||
string::operator=( s );return *this;
|
||||
BBStr &BBStr::operator=(const BBStr &s) {
|
||||
string::operator=(s); return *this;
|
||||
}
|
||||
|
||||
BBStr &BBStr::operator=( const string &s ){
|
||||
string::operator=( s );return *this;
|
||||
BBStr &BBStr::operator=(const string &s) {
|
||||
string::operator=(s); return *this;
|
||||
}
|
||||
|
||||
BBStr::~BBStr(){
|
||||
BBStr::~BBStr() {
|
||||
--stringCnt;
|
||||
}
|
||||
|
||||
BBStr *_bbStrLoad( BBStr **var ){
|
||||
return *var ? d_new BBStr( **var ) : d_new BBStr();
|
||||
BBStr *_bbStrLoad(BBStr **var) {
|
||||
return *var ? d_new BBStr(**var) : d_new BBStr();
|
||||
}
|
||||
|
||||
void _bbStrRelease( BBStr *str ){
|
||||
void _bbStrRelease(BBStr *str) {
|
||||
delete str;
|
||||
}
|
||||
|
||||
void _bbStrStore( BBStr **var,BBStr *str ){
|
||||
_bbStrRelease( *var );*var=str;
|
||||
void _bbStrStore(BBStr **var, BBStr *str) {
|
||||
_bbStrRelease(*var); *var = str;
|
||||
}
|
||||
|
||||
BBStr *_bbStrConcat( BBStr *s1,BBStr *s2 ){
|
||||
*s1+=*s2;delete s2;return s1;
|
||||
BBStr *_bbStrConcat(BBStr *s1, BBStr *s2) {
|
||||
*s1 += *s2; delete s2; return s1;
|
||||
}
|
||||
|
||||
int _bbStrCompare( BBStr *lhs,BBStr *rhs ){
|
||||
int n=lhs->compare( *rhs );
|
||||
delete lhs;delete rhs;return n;
|
||||
int _bbStrCompare(BBStr *lhs, BBStr *rhs) {
|
||||
int n = lhs->compare(*rhs);
|
||||
delete lhs; delete rhs; return n;
|
||||
}
|
||||
|
||||
int _bbStrToInt( BBStr *s ){
|
||||
int n=atoi( *s );
|
||||
delete s;return n;
|
||||
int _bbStrToInt(BBStr *s) {
|
||||
int n = atoi(*s);
|
||||
delete s; return n;
|
||||
}
|
||||
|
||||
BBStr *_bbStrFromInt( int n ){
|
||||
return d_new BBStr( itoa( n ) );
|
||||
BBStr *_bbStrFromInt(int n) {
|
||||
return d_new BBStr(itoa(n));
|
||||
}
|
||||
|
||||
float _bbStrToFloat( BBStr *s ){
|
||||
float n=(float)atof( *s );
|
||||
delete s;return n;
|
||||
float _bbStrToFloat(BBStr *s) {
|
||||
float n = (float)atof(*s);
|
||||
delete s; return n;
|
||||
}
|
||||
|
||||
BBStr *_bbStrFromFloat( float n ){
|
||||
return d_new BBStr( ftoa( n ) );
|
||||
BBStr *_bbStrFromFloat(float n) {
|
||||
return d_new BBStr(ftoa(n));
|
||||
}
|
||||
|
||||
BBStr *_bbStrConst( const char *s ){
|
||||
return d_new BBStr( s );
|
||||
BBStr *_bbStrConst(const char *s) {
|
||||
return d_new BBStr(s);
|
||||
}
|
||||
|
||||
void * _bbVecAlloc( BBVecType *type ){
|
||||
void *vec=bbMalloc( type->size*4 );
|
||||
memset( vec,0,type->size*4 );
|
||||
void * _bbVecAlloc(BBVecType *type) {
|
||||
void *vec = bbMalloc(type->size * 4);
|
||||
memset(vec, 0, type->size * 4);
|
||||
return vec;
|
||||
}
|
||||
|
||||
void _bbVecFree( void *vec,BBVecType *type ){
|
||||
if( type->elementType->type==BBTYPE_STR ){
|
||||
BBStr **p=(BBStr**)vec;
|
||||
for( int k=0;k<type->size;++p,++k ){
|
||||
if( *p ) _bbStrRelease( *p );
|
||||
void _bbVecFree(void *vec, BBVecType *type) {
|
||||
if (type->elementType->type == BBTYPE_STR) {
|
||||
BBStr **p = (BBStr**)vec;
|
||||
for (int k = 0; k < type->size; ++p, ++k) {
|
||||
if (*p) _bbStrRelease(*p);
|
||||
}
|
||||
}else if( type->elementType->type==BBTYPE_OBJ ){
|
||||
BBObj **p=(BBObj**)vec;
|
||||
for( int k=0;k<type->size;++p,++k ){
|
||||
if( *p ) _bbObjRelease( *p );
|
||||
} else if (type->elementType->type == BBTYPE_OBJ) {
|
||||
BBObj **p = (BBObj**)vec;
|
||||
for (int k = 0; k < type->size; ++p, ++k) {
|
||||
if (*p) _bbObjRelease(*p);
|
||||
}
|
||||
}
|
||||
bbFree( vec );
|
||||
bbFree(vec);
|
||||
}
|
||||
|
||||
void _bbVecBoundsEx(){
|
||||
ThrowRuntimeException( "Blitz array index out of bounds" );
|
||||
void _bbVecBoundsEx() {
|
||||
ThrowRuntimeException("Blitz array index out of bounds");
|
||||
}
|
||||
|
||||
void _bbUndimArray( BBArray *array ){
|
||||
if( void *t=array->data ){
|
||||
if( array->elementType==BBTYPE_STR ){
|
||||
BBStr **p=(BBStr**)t;
|
||||
int size=array->scales[array->dims-1];
|
||||
for( int k=0;k<size;++p,++k ){
|
||||
if( *p ) _bbStrRelease( *p );
|
||||
void _bbUndimArray(BBArray *array) {
|
||||
if (void *t = array->data) {
|
||||
if (array->elementType == BBTYPE_STR) {
|
||||
BBStr **p = (BBStr**)t;
|
||||
int size = array->scales[array->dims - 1];
|
||||
for (int k = 0; k < size; ++p, ++k) {
|
||||
if (*p) _bbStrRelease(*p);
|
||||
}
|
||||
}else if( array->elementType==BBTYPE_OBJ ){
|
||||
BBObj **p=(BBObj**)t;
|
||||
int size=array->scales[array->dims-1];
|
||||
for( int k=0;k<size;++p,++k ){
|
||||
if( *p ) _bbObjRelease( *p );
|
||||
} else if (array->elementType == BBTYPE_OBJ) {
|
||||
BBObj **p = (BBObj**)t;
|
||||
int size = array->scales[array->dims - 1];
|
||||
for (int k = 0; k < size; ++p, ++k) {
|
||||
if (*p) _bbObjRelease(*p);
|
||||
}
|
||||
}
|
||||
bbFree( t );
|
||||
array->data=0;
|
||||
bbFree(t);
|
||||
array->data = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void _bbDimArray( BBArray *array ){
|
||||
void _bbDimArray(BBArray *array) {
|
||||
int k;
|
||||
for( k=0;k<array->dims;++k ) ++array->scales[k];
|
||||
for( k=1;k<array->dims;++k ){
|
||||
array->scales[k]*=array->scales[k-1];
|
||||
for (k = 0; k < array->dims; ++k) ++array->scales[k];
|
||||
for (k = 1; k < array->dims; ++k) {
|
||||
array->scales[k] *= array->scales[k - 1];
|
||||
}
|
||||
int size=array->scales[array->dims-1];
|
||||
array->data=bbMalloc( size*4 );
|
||||
memset( array->data,0,size*4 );
|
||||
int size = array->scales[array->dims - 1];
|
||||
array->data = bbMalloc(size * 4);
|
||||
memset(array->data, 0, size * 4);
|
||||
}
|
||||
|
||||
void _bbArrayBoundsEx(){
|
||||
ThrowRuntimeException( "Array index out of bounds" );
|
||||
void _bbArrayBoundsEx() {
|
||||
ThrowRuntimeException("Array index out of bounds");
|
||||
}
|
||||
|
||||
static void unlinkObj( BBObj *obj ){
|
||||
obj->next->prev=obj->prev;
|
||||
obj->prev->next=obj->next;
|
||||
static void unlinkObj(BBObj *obj) {
|
||||
obj->next->prev = obj->prev;
|
||||
obj->prev->next = obj->next;
|
||||
}
|
||||
|
||||
static void insertObj( BBObj *obj,BBObj *next ){
|
||||
obj->next=next;
|
||||
obj->prev=next->prev;
|
||||
next->prev->next=obj;
|
||||
next->prev=obj;
|
||||
static void insertObj(BBObj *obj, BBObj *next) {
|
||||
obj->next = next;
|
||||
obj->prev = next->prev;
|
||||
next->prev->next = obj;
|
||||
next->prev = obj;
|
||||
}
|
||||
|
||||
BBObj *_bbObjNew( BBObjType *type ){
|
||||
if( type->free.next==&type->free ){
|
||||
int obj_size=sizeof(BBObj)+type->fieldCnt*4;
|
||||
BBObj *o=(BBObj*)bbMalloc( obj_size*OBJ_NEW_INC );
|
||||
for( int k=0;k<OBJ_NEW_INC;++k ){
|
||||
insertObj( o,&type->free );
|
||||
o=(BBObj*)( (char*)o+obj_size );
|
||||
BBObj *_bbObjNew(BBObjType *type) {
|
||||
if (type->free.next == &type->free) {
|
||||
int obj_size = sizeof(BBObj) + type->fieldCnt * 4;
|
||||
BBObj *o = (BBObj*)bbMalloc(obj_size*OBJ_NEW_INC);
|
||||
for (int k = 0; k < OBJ_NEW_INC; ++k) {
|
||||
insertObj(o, &type->free);
|
||||
o = (BBObj*)((char*)o + obj_size);
|
||||
}
|
||||
}
|
||||
BBObj *o=type->free.next;
|
||||
unlinkObj( o );
|
||||
o->type=type;
|
||||
o->ref_cnt=1;
|
||||
o->fields=(BBField*)(o+1);
|
||||
for( int k=0;k<type->fieldCnt;++k ){
|
||||
switch( type->fieldTypes[k]->type ){
|
||||
BBObj *o = type->free.next;
|
||||
unlinkObj(o);
|
||||
o->type = type;
|
||||
o->ref_cnt = 1;
|
||||
o->fields = (BBField*)(o + 1);
|
||||
for (int k = 0; k < type->fieldCnt; ++k) {
|
||||
switch (type->fieldTypes[k]->type) {
|
||||
case BBTYPE_VEC:
|
||||
o->fields[k].VEC=_bbVecAlloc( (BBVecType*)type->fieldTypes[k] );
|
||||
o->fields[k].VEC = _bbVecAlloc((BBVecType*)type->fieldTypes[k]);
|
||||
break;
|
||||
default:
|
||||
o->fields[k].INT=0;
|
||||
o->fields[k].INT = 0;
|
||||
}
|
||||
}
|
||||
insertObj( o,&type->used );
|
||||
insertObj(o, &type->used);
|
||||
++unrelObjCnt;
|
||||
++objCnt;
|
||||
return o;
|
||||
}
|
||||
|
||||
void _bbObjDelete( BBObj *obj ){
|
||||
if( !obj ) return;
|
||||
BBField *fields=obj->fields;
|
||||
if( !fields ) return;
|
||||
BBObjType *type=obj->type;
|
||||
for( int k=0;k<type->fieldCnt;++k ){
|
||||
switch( type->fieldTypes[k]->type ){
|
||||
void _bbObjDelete(BBObj *obj) {
|
||||
if (!obj) return;
|
||||
BBField *fields = obj->fields;
|
||||
if (!fields) return;
|
||||
BBObjType *type = obj->type;
|
||||
for (int k = 0; k < type->fieldCnt; ++k) {
|
||||
switch (type->fieldTypes[k]->type) {
|
||||
case BBTYPE_STR:
|
||||
_bbStrRelease( fields[k].STR );
|
||||
_bbStrRelease(fields[k].STR);
|
||||
break;
|
||||
case BBTYPE_OBJ:
|
||||
_bbObjRelease( fields[k].OBJ );
|
||||
_bbObjRelease(fields[k].OBJ);
|
||||
break;
|
||||
case BBTYPE_VEC:
|
||||
_bbVecFree( fields[k].VEC,(BBVecType*)type->fieldTypes[k] );
|
||||
_bbVecFree(fields[k].VEC, (BBVecType*)type->fieldTypes[k]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
map<BBObj*,int>::iterator it=object_map.find( obj );
|
||||
if( it!=object_map.end() ){
|
||||
handle_map.erase( it->second );
|
||||
object_map.erase( it );
|
||||
map<BBObj*, int>::iterator it = object_map.find(obj);
|
||||
if (it != object_map.end()) {
|
||||
handle_map.erase(it->second);
|
||||
object_map.erase(it);
|
||||
}
|
||||
obj->fields=0;
|
||||
_bbObjRelease( obj );
|
||||
obj->fields = 0;
|
||||
_bbObjRelease(obj);
|
||||
--objCnt;
|
||||
}
|
||||
|
||||
void _bbObjDeleteEach( BBObjType *type ){
|
||||
BBObj *obj=type->used.next;
|
||||
while( obj->type ){
|
||||
BBObj *next=obj->next;
|
||||
if( obj->fields ) _bbObjDelete( obj );
|
||||
obj=next;
|
||||
void _bbObjDeleteEach(BBObjType *type) {
|
||||
BBObj *obj = type->used.next;
|
||||
while (obj->type) {
|
||||
BBObj *next = obj->next;
|
||||
if (obj->fields) _bbObjDelete(obj);
|
||||
obj = next;
|
||||
}
|
||||
}
|
||||
|
||||
extern void bbDebugLog( BBStr *t );
|
||||
extern void bbStop( );
|
||||
extern void bbDebugLog(BBStr *t);
|
||||
extern void bbStop();
|
||||
|
||||
void _bbObjRelease( BBObj *obj ){
|
||||
if( !obj || --obj->ref_cnt ) return;
|
||||
unlinkObj( obj );
|
||||
insertObj( obj,&obj->type->free );
|
||||
void _bbObjRelease(BBObj *obj) {
|
||||
if (!obj || --obj->ref_cnt) return;
|
||||
unlinkObj(obj);
|
||||
insertObj(obj, &obj->type->free);
|
||||
--unrelObjCnt;
|
||||
}
|
||||
|
||||
void _bbObjStore( BBObj **var,BBObj *obj ){
|
||||
if( obj ) ++obj->ref_cnt; //do this first incase of self-assignment
|
||||
_bbObjRelease( *var );
|
||||
*var=obj;
|
||||
void _bbObjStore(BBObj **var, BBObj *obj) {
|
||||
if (obj) ++obj->ref_cnt; //do this first incase of self-assignment
|
||||
_bbObjRelease(*var);
|
||||
*var = obj;
|
||||
}
|
||||
|
||||
int _bbObjCompare( BBObj *o1,BBObj *o2 ){
|
||||
return (o1 ? o1->fields : 0)!=(o2 ? o2->fields : 0);
|
||||
int _bbObjCompare(BBObj *o1, BBObj *o2) {
|
||||
return (o1 ? o1->fields : 0) != (o2 ? o2->fields : 0);
|
||||
}
|
||||
|
||||
BBObj *_bbObjNext( BBObj *obj ){
|
||||
do{
|
||||
obj=obj->next;
|
||||
if( !obj->type ) return 0;
|
||||
}while( !obj->fields );
|
||||
BBObj *_bbObjNext(BBObj *obj) {
|
||||
do {
|
||||
obj = obj->next;
|
||||
if (!obj->type) return 0;
|
||||
} while (!obj->fields);
|
||||
return obj;
|
||||
}
|
||||
|
||||
BBObj *_bbObjPrev( BBObj *obj ){
|
||||
do{
|
||||
obj=obj->prev;
|
||||
if( !obj->type ) return 0;
|
||||
}while( !obj->fields );
|
||||
BBObj *_bbObjPrev(BBObj *obj) {
|
||||
do {
|
||||
obj = obj->prev;
|
||||
if (!obj->type) return 0;
|
||||
} while (!obj->fields);
|
||||
return obj;
|
||||
}
|
||||
|
||||
BBObj *_bbObjFirst( BBObjType *type ){
|
||||
return _bbObjNext( &type->used );
|
||||
BBObj *_bbObjFirst(BBObjType *type) {
|
||||
return _bbObjNext(&type->used);
|
||||
}
|
||||
|
||||
BBObj *_bbObjLast( BBObjType *type ){
|
||||
return _bbObjPrev( &type->used );
|
||||
BBObj *_bbObjLast(BBObjType *type) {
|
||||
return _bbObjPrev(&type->used);
|
||||
}
|
||||
|
||||
void _bbObjInsBefore( BBObj *o1,BBObj *o2 ){
|
||||
if( o1==o2 ) return;
|
||||
unlinkObj( o1 );
|
||||
insertObj( o1,o2 );
|
||||
void _bbObjInsBefore(BBObj *o1, BBObj *o2) {
|
||||
if (o1 == o2) return;
|
||||
unlinkObj(o1);
|
||||
insertObj(o1, o2);
|
||||
}
|
||||
|
||||
void _bbObjInsAfter( BBObj *o1,BBObj *o2 ){
|
||||
if( o1==o2 ) return;
|
||||
unlinkObj( o1 );
|
||||
insertObj( o1,o2->next );
|
||||
void _bbObjInsAfter(BBObj *o1, BBObj *o2) {
|
||||
if (o1 == o2) return;
|
||||
unlinkObj(o1);
|
||||
insertObj(o1, o2->next);
|
||||
}
|
||||
|
||||
int _bbObjEachFirst( BBObj **var,BBObjType *type ){
|
||||
_bbObjStore( var,_bbObjFirst( type ) );
|
||||
return *var!=0;
|
||||
int _bbObjEachFirst(BBObj **var, BBObjType *type) {
|
||||
_bbObjStore(var, _bbObjFirst(type));
|
||||
return *var != 0;
|
||||
}
|
||||
|
||||
int _bbObjEachNext( BBObj **var ){
|
||||
_bbObjStore( var,_bbObjNext( *var ) );
|
||||
return *var!=0;
|
||||
int _bbObjEachNext(BBObj **var) {
|
||||
_bbObjStore(var, _bbObjNext(*var));
|
||||
return *var != 0;
|
||||
}
|
||||
|
||||
int _bbObjEachFirst2( BBObj **var,BBObjType *type ){
|
||||
*var=_bbObjFirst( type );
|
||||
return *var!=0;
|
||||
int _bbObjEachFirst2(BBObj **var, BBObjType *type) {
|
||||
*var = _bbObjFirst(type);
|
||||
return *var != 0;
|
||||
}
|
||||
|
||||
int _bbObjEachNext2( BBObj **var ){
|
||||
*var=_bbObjNext( *var );
|
||||
return *var!=0;
|
||||
int _bbObjEachNext2(BBObj **var) {
|
||||
*var = _bbObjNext(*var);
|
||||
return *var != 0;
|
||||
}
|
||||
|
||||
BBStr *_bbObjToStr( BBObj *obj ){
|
||||
if( !obj || !obj->fields ) return d_new BBStr( "[NULL]" );
|
||||
BBStr *_bbObjToStr(BBObj *obj) {
|
||||
if (!obj || !obj->fields) return d_new BBStr("[NULL]");
|
||||
|
||||
static BBObj *root;
|
||||
static int recurs_cnt;
|
||||
|
||||
if( obj==root ) return d_new BBStr( "[ROOT]" );
|
||||
if( recurs_cnt==8 ) return d_new BBStr( "...." );
|
||||
if (obj == root) return d_new BBStr("[ROOT]");
|
||||
if (recurs_cnt == 8) return d_new BBStr("....");
|
||||
|
||||
++recurs_cnt;
|
||||
BBObj *oldRoot=root;
|
||||
if( !root ) root=obj;
|
||||
BBObj *oldRoot = root;
|
||||
if (!root) root = obj;
|
||||
|
||||
BBObjType *type=obj->type;
|
||||
BBField *fields=obj->fields;
|
||||
BBStr *s=d_new BBStr("["),*t;
|
||||
for( int k=0;k<type->fieldCnt;++k ){
|
||||
if( k ) *s+=',';
|
||||
switch( type->fieldTypes[k]->type ){
|
||||
BBObjType *type = obj->type;
|
||||
BBField *fields = obj->fields;
|
||||
BBStr *s = d_new BBStr("["), *t;
|
||||
for (int k = 0; k < type->fieldCnt; ++k) {
|
||||
if (k) *s += ',';
|
||||
switch (type->fieldTypes[k]->type) {
|
||||
case BBTYPE_INT:
|
||||
t=_bbStrFromInt( fields[k].INT );*s+=*t;delete t;
|
||||
t = _bbStrFromInt(fields[k].INT); *s += *t; delete t;
|
||||
break;
|
||||
case BBTYPE_FLT:
|
||||
t=_bbStrFromFloat( fields[k].FLT );*s+=*t;delete t;
|
||||
t = _bbStrFromFloat(fields[k].FLT); *s += *t; delete t;
|
||||
break;
|
||||
case BBTYPE_STR:
|
||||
if( fields[k].STR ) *s+='\"'+*fields[k].STR+'\"';
|
||||
else *s+="\"\"";
|
||||
if (fields[k].STR) *s += '\"' + *fields[k].STR + '\"';
|
||||
else *s += "\"\"";
|
||||
break;
|
||||
case BBTYPE_OBJ:
|
||||
t=_bbObjToStr( fields[k].OBJ );*s+=*t;delete t;
|
||||
t = _bbObjToStr(fields[k].OBJ); *s += *t; delete t;
|
||||
break;
|
||||
default:
|
||||
*s+="???";
|
||||
*s += "???";
|
||||
}
|
||||
}
|
||||
*s+=']';
|
||||
root=oldRoot;
|
||||
*s += ']';
|
||||
root = oldRoot;
|
||||
--recurs_cnt;
|
||||
return s;
|
||||
}
|
||||
|
||||
int _bbObjToHandle( BBObj *obj ){
|
||||
if( !obj || !obj->fields ) return 0;
|
||||
map<BBObj*,int>::const_iterator it=object_map.find( obj );
|
||||
if( it!=object_map.end() ) return it->second;
|
||||
int _bbObjToHandle(BBObj *obj) {
|
||||
if (!obj || !obj->fields) return 0;
|
||||
map<BBObj*, int>::const_iterator it = object_map.find(obj);
|
||||
if (it != object_map.end()) return it->second;
|
||||
++next_handle;
|
||||
object_map[obj]=next_handle;
|
||||
handle_map[next_handle]=obj;
|
||||
object_map[obj] = next_handle;
|
||||
handle_map[next_handle] = obj;
|
||||
return next_handle;
|
||||
}
|
||||
|
||||
BBObj *_bbObjFromHandle( int handle,BBObjType *type ){
|
||||
map<int,BBObj*>::const_iterator it=handle_map.find( handle );
|
||||
if( it==handle_map.end() ) return 0;
|
||||
BBObj *obj=it->second;
|
||||
return obj->type==type ? obj : 0;
|
||||
BBObj *_bbObjFromHandle(int handle, BBObjType *type) {
|
||||
map<int, BBObj*>::const_iterator it = handle_map.find(handle);
|
||||
if (it == handle_map.end()) return 0;
|
||||
BBObj *obj = it->second;
|
||||
return obj->type == type ? obj : 0;
|
||||
}
|
||||
|
||||
void _bbNullObjEx(){
|
||||
ThrowRuntimeException( "Object does not exist" );
|
||||
void _bbNullObjEx() {
|
||||
ThrowRuntimeException("Object does not exist");
|
||||
}
|
||||
|
||||
void _bbRestore( BBData *data ){
|
||||
dataPtr=data;
|
||||
void _bbRestore(BBData *data) {
|
||||
dataPtr = data;
|
||||
}
|
||||
|
||||
int _bbReadInt(){
|
||||
switch( dataPtr->fieldType ){
|
||||
case BBTYPE_END:ThrowRuntimeException( "Out of data" );return 0;
|
||||
int _bbReadInt() {
|
||||
switch (dataPtr->fieldType) {
|
||||
case BBTYPE_END:ThrowRuntimeException("Out of data"); return 0;
|
||||
case BBTYPE_INT:return dataPtr++->field.INT;
|
||||
case BBTYPE_FLT:return dataPtr++->field.FLT;
|
||||
case BBTYPE_CSTR:return atoi( dataPtr++->field.CSTR );
|
||||
default:ThrowRuntimeException( "Bad data type" );return 0;
|
||||
case BBTYPE_CSTR:return atoi(dataPtr++->field.CSTR);
|
||||
default:ThrowRuntimeException("Bad data type"); return 0;
|
||||
}
|
||||
}
|
||||
|
||||
float _bbReadFloat(){
|
||||
switch( dataPtr->fieldType ){
|
||||
case BBTYPE_END:ThrowRuntimeException( "Out of data" );return 0;
|
||||
float _bbReadFloat() {
|
||||
switch (dataPtr->fieldType) {
|
||||
case BBTYPE_END:ThrowRuntimeException("Out of data"); return 0;
|
||||
case BBTYPE_INT:return dataPtr++->field.INT;
|
||||
case BBTYPE_FLT:return dataPtr++->field.FLT;
|
||||
case BBTYPE_CSTR:return atof( dataPtr++->field.CSTR );
|
||||
default:ThrowRuntimeException( "Bad data type" );return 0;
|
||||
case BBTYPE_CSTR:return atof(dataPtr++->field.CSTR);
|
||||
default:ThrowRuntimeException("Bad data type"); return 0;
|
||||
}
|
||||
}
|
||||
|
||||
BBStr *_bbReadStr(){
|
||||
switch( dataPtr->fieldType ){
|
||||
case BBTYPE_END:ThrowRuntimeException( "Out of data" );return 0;
|
||||
case BBTYPE_INT:return d_new BBStr( itoa( dataPtr++->field.INT ) );
|
||||
case BBTYPE_FLT:return d_new BBStr( ftoa( dataPtr++->field.FLT ) );
|
||||
case BBTYPE_CSTR:return d_new BBStr( dataPtr++->field.CSTR );
|
||||
default:ThrowRuntimeException( "Bad data type" );return 0;
|
||||
BBStr *_bbReadStr() {
|
||||
switch (dataPtr->fieldType) {
|
||||
case BBTYPE_END:ThrowRuntimeException("Out of data"); return 0;
|
||||
case BBTYPE_INT:return d_new BBStr(itoa(dataPtr++->field.INT));
|
||||
case BBTYPE_FLT:return d_new BBStr(ftoa(dataPtr++->field.FLT));
|
||||
case BBTYPE_CSTR:return d_new BBStr(dataPtr++->field.CSTR);
|
||||
default:ThrowRuntimeException("Bad data type"); return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int _bbAbs( int n ){
|
||||
return n>=0 ? n : -n;
|
||||
int _bbAbs(int n) {
|
||||
return n >= 0 ? n : -n;
|
||||
}
|
||||
|
||||
int _bbSgn( int n ){
|
||||
return n>0 ? 1 : (n<0 ? -1 : 0);
|
||||
int _bbSgn(int n) {
|
||||
return n > 0 ? 1 : (n < 0 ? -1 : 0);
|
||||
}
|
||||
|
||||
int _bbMod( int x,int y ){
|
||||
int _bbMod(int x, int y) {
|
||||
return x%y;
|
||||
}
|
||||
|
||||
float _bbFAbs( float n ){
|
||||
return n>=0 ? n : -n;
|
||||
float _bbFAbs(float n) {
|
||||
return n >= 0 ? n : -n;
|
||||
}
|
||||
|
||||
float _bbFSgn( float n ){
|
||||
return n>0 ? 1 : (n<0 ? -1 : 0);
|
||||
float _bbFSgn(float n) {
|
||||
return n > 0 ? 1 : (n < 0 ? -1 : 0);
|
||||
}
|
||||
|
||||
float _bbFMod( float x,float y ){
|
||||
return (float)fmod( x,y );
|
||||
float _bbFMod(float x, float y) {
|
||||
return (float)fmod(x, y);
|
||||
}
|
||||
|
||||
float _bbFPow( float x,float y ){
|
||||
return (float)pow( x,y );
|
||||
float _bbFPow(float x, float y) {
|
||||
return (float)pow(x, y);
|
||||
}
|
||||
|
||||
void bbRuntimeStats(){
|
||||
gx_runtime->debugLog( ("Active strings :"+itoa(stringCnt)).c_str() );
|
||||
gx_runtime->debugLog( ("Active objects :"+itoa(objCnt)).c_str() );
|
||||
gx_runtime->debugLog( ("Unreleased objs:"+itoa(unrelObjCnt)).c_str() );
|
||||
void bbRuntimeStats() {
|
||||
gx_runtime->debugLog(("Active strings :" + itoa(stringCnt)).c_str());
|
||||
gx_runtime->debugLog(("Active objects :" + itoa(objCnt)).c_str());
|
||||
gx_runtime->debugLog(("Unreleased objs:" + itoa(unrelObjCnt)).c_str());
|
||||
/*
|
||||
clog<<"Active strings:"<<stringCnt<<endl;
|
||||
clog<<"Active objects:"<<objCnt<<endl;
|
||||
clog<<"Unreleased Objects:"<<unrelObjCnt<<endl;
|
||||
for( BBStr *t=usedStrs.next;t!=&usedStrs;t=t->next ){
|
||||
clog<<"string@"<<(void*)t<<endl;
|
||||
clog<<"string@"<<(void*)t<<endl;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
bool basic_create(){
|
||||
next_handle=0;
|
||||
// memBlks.clear();
|
||||
bool basic_create() {
|
||||
next_handle = 0;
|
||||
// memBlks.clear();
|
||||
handle_map.clear();
|
||||
object_map.clear();
|
||||
stringCnt=objCnt=unrelObjCnt=0;
|
||||
usedStrs.next=usedStrs.prev=&usedStrs;
|
||||
freeStrs.next=freeStrs.prev=&freeStrs;
|
||||
stringCnt = objCnt = unrelObjCnt = 0;
|
||||
usedStrs.next = usedStrs.prev = &usedStrs;
|
||||
freeStrs.next = freeStrs.prev = &freeStrs;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool basic_destroy(){
|
||||
while( usedStrs.next!=&usedStrs ) delete usedStrs.next;
|
||||
// while( memBlks.size() ) bbFree( memBlks.back() );
|
||||
bool basic_destroy() {
|
||||
while (usedStrs.next != &usedStrs) delete usedStrs.next;
|
||||
// while( memBlks.size() ) bbFree( memBlks.back() );
|
||||
handle_map.clear();
|
||||
object_map.clear();
|
||||
return true;
|
||||
}
|
||||
|
||||
void basic_link( void (*rtSym)( const char *sym,void *pc ) ){
|
||||
void basic_link(void(*rtSym)(const char *sym, void *pc)) {
|
||||
|
||||
rtSym( "_bbIntType",&_bbIntType );
|
||||
rtSym( "_bbFltType",&_bbFltType );
|
||||
rtSym( "_bbStrType",&_bbStrType );
|
||||
rtSym( "_bbCStrType",&_bbCStrType );
|
||||
rtSym("_bbIntType", &_bbIntType);
|
||||
rtSym("_bbFltType", &_bbFltType);
|
||||
rtSym("_bbStrType", &_bbStrType);
|
||||
rtSym("_bbCStrType", &_bbCStrType);
|
||||
|
||||
rtSym( "_bbStrLoad",_bbStrLoad );
|
||||
rtSym( "_bbStrRelease",_bbStrRelease );
|
||||
rtSym( "_bbStrStore",_bbStrStore );
|
||||
rtSym( "_bbStrCompare",_bbStrCompare );
|
||||
rtSym( "_bbStrConcat",_bbStrConcat );
|
||||
rtSym( "_bbStrToInt",_bbStrToInt );
|
||||
rtSym( "_bbStrFromInt",_bbStrFromInt );
|
||||
rtSym( "_bbStrToFloat",_bbStrToFloat );
|
||||
rtSym( "_bbStrFromFloat",_bbStrFromFloat );
|
||||
rtSym( "_bbStrConst",_bbStrConst );
|
||||
rtSym( "_bbDimArray",_bbDimArray );
|
||||
rtSym( "_bbUndimArray",_bbUndimArray );
|
||||
rtSym( "_bbArrayBoundsEx",_bbArrayBoundsEx );
|
||||
rtSym( "_bbVecAlloc",_bbVecAlloc );
|
||||
rtSym( "_bbVecFree",_bbVecFree );
|
||||
rtSym( "_bbVecBoundsEx",_bbVecBoundsEx );
|
||||
rtSym( "_bbObjNew",_bbObjNew );
|
||||
rtSym( "_bbObjDelete",_bbObjDelete );
|
||||
rtSym( "_bbObjDeleteEach",_bbObjDeleteEach );
|
||||
rtSym( "_bbObjRelease",_bbObjRelease );
|
||||
rtSym( "_bbObjStore",_bbObjStore );
|
||||
rtSym( "_bbObjCompare",_bbObjCompare );
|
||||
rtSym( "_bbObjNext",_bbObjNext );
|
||||
rtSym( "_bbObjPrev",_bbObjPrev );
|
||||
rtSym( "_bbObjFirst",_bbObjFirst );
|
||||
rtSym( "_bbObjLast",_bbObjLast );
|
||||
rtSym( "_bbObjInsBefore",_bbObjInsBefore );
|
||||
rtSym( "_bbObjInsAfter",_bbObjInsAfter );
|
||||
rtSym( "_bbObjEachFirst",_bbObjEachFirst );
|
||||
rtSym( "_bbObjEachNext",_bbObjEachNext );
|
||||
rtSym( "_bbObjEachFirst2",_bbObjEachFirst2 );
|
||||
rtSym( "_bbObjEachNext2",_bbObjEachNext2 );
|
||||
rtSym( "_bbObjToStr",_bbObjToStr );
|
||||
rtSym( "_bbObjToHandle",_bbObjToHandle );
|
||||
rtSym( "_bbObjFromHandle",_bbObjFromHandle );
|
||||
rtSym( "_bbNullObjEx",_bbNullObjEx );
|
||||
rtSym( "_bbRestore",_bbRestore );
|
||||
rtSym( "_bbReadInt",_bbReadInt );
|
||||
rtSym( "_bbReadFloat",_bbReadFloat );
|
||||
rtSym( "_bbReadStr",_bbReadStr );
|
||||
rtSym( "_bbAbs",_bbAbs );
|
||||
rtSym( "_bbSgn",_bbSgn );
|
||||
rtSym( "_bbMod",_bbMod );
|
||||
rtSym( "_bbFAbs",_bbFAbs );
|
||||
rtSym( "_bbFSgn",_bbFSgn );
|
||||
rtSym( "_bbFMod",_bbFMod );
|
||||
rtSym( "_bbFPow",_bbFPow );
|
||||
rtSym( "RuntimeStats",bbRuntimeStats );
|
||||
rtSym("_bbStrLoad", _bbStrLoad);
|
||||
rtSym("_bbStrRelease", _bbStrRelease);
|
||||
rtSym("_bbStrStore", _bbStrStore);
|
||||
rtSym("_bbStrCompare", _bbStrCompare);
|
||||
rtSym("_bbStrConcat", _bbStrConcat);
|
||||
rtSym("_bbStrToInt", _bbStrToInt);
|
||||
rtSym("_bbStrFromInt", _bbStrFromInt);
|
||||
rtSym("_bbStrToFloat", _bbStrToFloat);
|
||||
rtSym("_bbStrFromFloat", _bbStrFromFloat);
|
||||
rtSym("_bbStrConst", _bbStrConst);
|
||||
rtSym("_bbDimArray", _bbDimArray);
|
||||
rtSym("_bbUndimArray", _bbUndimArray);
|
||||
rtSym("_bbArrayBoundsEx", _bbArrayBoundsEx);
|
||||
rtSym("_bbVecAlloc", _bbVecAlloc);
|
||||
rtSym("_bbVecFree", _bbVecFree);
|
||||
rtSym("_bbVecBoundsEx", _bbVecBoundsEx);
|
||||
rtSym("_bbObjNew", _bbObjNew);
|
||||
rtSym("_bbObjDelete", _bbObjDelete);
|
||||
rtSym("_bbObjDeleteEach", _bbObjDeleteEach);
|
||||
rtSym("_bbObjRelease", _bbObjRelease);
|
||||
rtSym("_bbObjStore", _bbObjStore);
|
||||
rtSym("_bbObjCompare", _bbObjCompare);
|
||||
rtSym("_bbObjNext", _bbObjNext);
|
||||
rtSym("_bbObjPrev", _bbObjPrev);
|
||||
rtSym("_bbObjFirst", _bbObjFirst);
|
||||
rtSym("_bbObjLast", _bbObjLast);
|
||||
rtSym("_bbObjInsBefore", _bbObjInsBefore);
|
||||
rtSym("_bbObjInsAfter", _bbObjInsAfter);
|
||||
rtSym("_bbObjEachFirst", _bbObjEachFirst);
|
||||
rtSym("_bbObjEachNext", _bbObjEachNext);
|
||||
rtSym("_bbObjEachFirst2", _bbObjEachFirst2);
|
||||
rtSym("_bbObjEachNext2", _bbObjEachNext2);
|
||||
rtSym("_bbObjToStr", _bbObjToStr);
|
||||
rtSym("_bbObjToHandle", _bbObjToHandle);
|
||||
rtSym("_bbObjFromHandle", _bbObjFromHandle);
|
||||
rtSym("_bbNullObjEx", _bbNullObjEx);
|
||||
rtSym("_bbRestore", _bbRestore);
|
||||
rtSym("_bbReadInt", _bbReadInt);
|
||||
rtSym("_bbReadFloat", _bbReadFloat);
|
||||
rtSym("_bbReadStr", _bbReadStr);
|
||||
rtSym("_bbAbs", _bbAbs);
|
||||
rtSym("_bbSgn", _bbSgn);
|
||||
rtSym("_bbMod", _bbMod);
|
||||
rtSym("_bbFAbs", _bbFAbs);
|
||||
rtSym("_bbFSgn", _bbFSgn);
|
||||
rtSym("_bbFMod", _bbFMod);
|
||||
rtSym("_bbFPow", _bbFPow);
|
||||
rtSym("RuntimeStats", bbRuntimeStats);
|
||||
}
|
||||
+69
-68
@@ -3,12 +3,13 @@
|
||||
#define BASIC_H
|
||||
|
||||
#include <string>
|
||||
#include <mutex>
|
||||
|
||||
enum{
|
||||
BBTYPE_END=0,
|
||||
BBTYPE_INT=1,BBTYPE_FLT=2,
|
||||
BBTYPE_STR=3,BBTYPE_CSTR=4,
|
||||
BBTYPE_OBJ=5,BBTYPE_VEC=6
|
||||
enum {
|
||||
BBTYPE_END = 0,
|
||||
BBTYPE_INT = 1, BBTYPE_FLT = 2,
|
||||
BBTYPE_STR = 3, BBTYPE_CSTR = 4,
|
||||
BBTYPE_OBJ = 5, BBTYPE_VEC = 6
|
||||
};
|
||||
|
||||
#pragma pack( push,1 )
|
||||
@@ -21,30 +22,30 @@ struct BBVecType;
|
||||
union BBField;
|
||||
struct BBArray;
|
||||
|
||||
struct BBObj{
|
||||
struct BBObj {
|
||||
BBField *fields;
|
||||
BBObj *next,*prev;
|
||||
BBObj *next, *prev;
|
||||
BBObjType *type;
|
||||
int ref_cnt;
|
||||
};
|
||||
|
||||
struct BBType{
|
||||
struct BBType {
|
||||
int type;
|
||||
BBType( int n ):type(n){}
|
||||
BBType(int n) :type(n) {}
|
||||
};
|
||||
|
||||
struct BBObjType : public BBType{
|
||||
BBObj used,free;
|
||||
struct BBObjType : public BBType {
|
||||
BBObj used, free;
|
||||
int fieldCnt;
|
||||
BBType *fieldTypes[1];
|
||||
};
|
||||
|
||||
struct BBVecType : public BBType{
|
||||
struct BBVecType : public BBType {
|
||||
int size;
|
||||
BBType *elementType;
|
||||
};
|
||||
|
||||
union BBField{
|
||||
union BBField {
|
||||
int INT;
|
||||
float FLT;
|
||||
BBStr *STR;
|
||||
@@ -53,32 +54,32 @@ union BBField{
|
||||
void *VEC;
|
||||
};
|
||||
|
||||
struct BBArray{
|
||||
struct BBArray {
|
||||
void *data;
|
||||
int elementType,dims,scales[1];
|
||||
int elementType, dims, scales[1];
|
||||
};
|
||||
|
||||
struct BBStr : public std::string{
|
||||
BBStr *next,*prev;
|
||||
struct BBStr : public std::string {
|
||||
BBStr *next, *prev;
|
||||
|
||||
BBStr();
|
||||
BBStr( const char *s );
|
||||
BBStr( const char *s,int n );
|
||||
BBStr( const BBStr &s );
|
||||
BBStr( const std::string &s );
|
||||
BBStr &operator=( const char *s );
|
||||
BBStr &operator=( const BBStr &s );
|
||||
BBStr &operator=( const std::string &s );
|
||||
BBStr(const char *s);
|
||||
BBStr(const char *s, int n);
|
||||
BBStr(const BBStr &s);
|
||||
BBStr(const std::string &s);
|
||||
BBStr &operator=(const char *s);
|
||||
BBStr &operator=(const BBStr &s);
|
||||
BBStr &operator=(const std::string &s);
|
||||
~BBStr();
|
||||
|
||||
void *operator new( size_t size );
|
||||
void operator delete( void *q );
|
||||
void *operator new(size_t size);
|
||||
void operator delete(void *q);
|
||||
|
||||
void *operator new( size_t size,const char *file,int line ){ return operator new( size ); }
|
||||
void operator delete( void *q,const char *file,int line ){ operator delete( q ); }
|
||||
void *operator new(size_t size, const char *file, int line) { return operator new(size); }
|
||||
void operator delete(void *q, const char *file, int line) { operator delete(q); }
|
||||
};
|
||||
|
||||
struct BBData{
|
||||
struct BBData {
|
||||
int fieldType;
|
||||
BBField field;
|
||||
};
|
||||
@@ -92,57 +93,57 @@ extern BBType _bbFltType;
|
||||
extern BBType _bbStrType;
|
||||
extern BBType _bbCStrType;
|
||||
|
||||
BBStr * _bbStrLoad( BBStr **var );
|
||||
void _bbStrRelease( BBStr *str );
|
||||
void _bbStrStore( BBStr **var,BBStr *str );
|
||||
int _bbStrCompare( BBStr *lhs,BBStr *rhs );
|
||||
BBStr * _bbStrLoad(BBStr **var);
|
||||
void _bbStrRelease(BBStr *str);
|
||||
void _bbStrStore(BBStr **var, BBStr *str);
|
||||
int _bbStrCompare(BBStr *lhs, BBStr *rhs);
|
||||
|
||||
BBStr * _bbStrConcat( BBStr *s1,BBStr *s2 );
|
||||
int _bbStrToInt( BBStr *s );
|
||||
BBStr * _bbStrFromInt( int n );
|
||||
float _bbStrToFloat( BBStr *s );
|
||||
BBStr * _bbStrFromFloat( float n );
|
||||
BBStr * _bbStrConst( const char *s );
|
||||
BBStr * _bbStrConcat(BBStr *s1, BBStr *s2);
|
||||
int _bbStrToInt(BBStr *s);
|
||||
BBStr * _bbStrFromInt(int n);
|
||||
float _bbStrToFloat(BBStr *s);
|
||||
BBStr * _bbStrFromFloat(float n);
|
||||
BBStr * _bbStrConst(const char *s);
|
||||
|
||||
void _bbDimArray( BBArray *array );
|
||||
void _bbUndimArray( BBArray *array );
|
||||
void _bbDimArray(BBArray *array);
|
||||
void _bbUndimArray(BBArray *array);
|
||||
void _bbArrayBoundsEx();
|
||||
|
||||
void * _bbVecAlloc( BBVecType *type );
|
||||
void _bbVecFree( void *vec,BBVecType *type );
|
||||
void * _bbVecAlloc(BBVecType *type);
|
||||
void _bbVecFree(void *vec, BBVecType *type);
|
||||
void _bbVecBoundsEx();
|
||||
|
||||
BBObj * _bbObjNew( BBObjType *t );
|
||||
void _bbObjDelete( BBObj *obj );
|
||||
void _bbObjDeleteEach( BBObjType *type );
|
||||
void _bbObjRelease( BBObj *obj );
|
||||
void _bbObjStore( BBObj **var,BBObj *obj );
|
||||
BBObj * _bbObjNext( BBObj *obj );
|
||||
BBObj * _bbObjPrev( BBObj *obj );
|
||||
BBObj * _bbObjFirst( BBObjType *t );
|
||||
BBObj * _bbObjLast( BBObjType *t );
|
||||
void _bbObjInsBefore( BBObj *o1,BBObj *o2 );
|
||||
void _bbObjInsAfter( BBObj *o1,BBObj *o2 );
|
||||
int _bbObjEachFirst( BBObj **var,BBObjType *type );
|
||||
int _bbObjEachNext( BBObj **var );
|
||||
int _bbObjCompare( BBObj *o1,BBObj *o2 );
|
||||
BBStr * _bbObjToStr( BBObj *obj );
|
||||
int _bbObjToHandle( BBObj *obj );
|
||||
BBObj * _bbObjFromHandle( int handle,BBObjType *type );
|
||||
BBObj * _bbObjNew(BBObjType *t);
|
||||
void _bbObjDelete(BBObj *obj);
|
||||
void _bbObjDeleteEach(BBObjType *type);
|
||||
void _bbObjRelease(BBObj *obj);
|
||||
void _bbObjStore(BBObj **var, BBObj *obj);
|
||||
BBObj * _bbObjNext(BBObj *obj);
|
||||
BBObj * _bbObjPrev(BBObj *obj);
|
||||
BBObj * _bbObjFirst(BBObjType *t);
|
||||
BBObj * _bbObjLast(BBObjType *t);
|
||||
void _bbObjInsBefore(BBObj *o1, BBObj *o2);
|
||||
void _bbObjInsAfter(BBObj *o1, BBObj *o2);
|
||||
int _bbObjEachFirst(BBObj **var, BBObjType *type);
|
||||
int _bbObjEachNext(BBObj **var);
|
||||
int _bbObjCompare(BBObj *o1, BBObj *o2);
|
||||
BBStr * _bbObjToStr(BBObj *obj);
|
||||
int _bbObjToHandle(BBObj *obj);
|
||||
BBObj * _bbObjFromHandle(int handle, BBObjType *type);
|
||||
void _bbNullObjEx();
|
||||
|
||||
void _bbRestore( BBData *data );
|
||||
void _bbRestore(BBData *data);
|
||||
int _bbReadInt();
|
||||
float _bbReadFloat();
|
||||
BBStr * _bbReadStr();
|
||||
|
||||
int _bbAbs( int n );
|
||||
int _bbSgn( int n );
|
||||
int _bbMod( int x,int y );
|
||||
float _bbFAbs( float n );
|
||||
float _bbFSgn( float n );
|
||||
float _bbFMod( float x,float y );
|
||||
float _bbFPow( float x,float y );
|
||||
int _bbAbs(int n);
|
||||
int _bbSgn(int n);
|
||||
int _bbMod(int x, int y);
|
||||
float _bbFAbs(float n);
|
||||
float _bbFSgn(float n);
|
||||
float _bbFMod(float x, float y);
|
||||
float _bbFPow(float x, float y);
|
||||
|
||||
void bbRuntimeStats();
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
@@ -95,7 +95,7 @@
|
||||
<PrecompiledHeaderFile />
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
@@ -94,7 +94,7 @@
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
|
||||
+2
-2
@@ -67,7 +67,7 @@
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
@@ -98,7 +98,7 @@
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
@@ -78,7 +78,7 @@
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Release\blitz3d.lib</OutputFile>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
@@ -94,7 +94,7 @@
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
@@ -107,7 +107,7 @@
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Debug\blitz3d.lib</OutputFile>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
@@ -92,7 +92,7 @@
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
@@ -93,7 +93,7 @@
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
|
||||
@@ -63,10 +63,10 @@
|
||||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_AFXDLL;_CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
@@ -88,7 +88,6 @@
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<LinkDLL>true</LinkDLL>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<ImportLibrary>.\Release\debugger.lib</ImportLibrary>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
@@ -97,11 +96,11 @@
|
||||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_AFXDLL;_CRT_SECURE_NO_WARNINGS;WIN32;DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
@@ -124,7 +123,6 @@
|
||||
<LinkDLL>true</LinkDLL>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<ImportLibrary>.\Debug\debugger.lib</ImportLibrary>
|
||||
<AdditionalOptions> /FIXED:NO</AdditionalOptions>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
@@ -94,7 +94,7 @@
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
@@ -92,7 +92,7 @@
|
||||
<ControlFlowGuard>false</ControlFlowGuard>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
|
||||
<CallingConvention>Cdecl</CallingConvention>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
|
||||
Reference in New Issue
Block a user