Changeset 89 in dev for BasicCompiler_Common/Class.cpp
- Timestamp:
- Apr 4, 2007, 2:03:09 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
BasicCompiler_Common/Class.cpp
r87 r89 117 117 118 118 //ネイティブコードバッファの再確保 119 extern int obp_AllocSize; 120 if(obp_AllocSize<obp+8192){ 121 obp_AllocSize+=8192; 122 OpBuffer=(char *)HeapReAlloc(hHeap,0,OpBuffer,obp_AllocSize); //matea 123 } 119 ReallocNativeCodeBuffer(); 120 124 121 i++; 125 122 } … … 198 195 199 196 void CClass::Inherits( CClass *pInheritsClass ){ 200 int i3;201 197 202 198 //メンバをコピー … … 207 203 pInheritsClass->iMemberNum*sizeof(CMember *)); 208 204 iMemberNum=pInheritsClass->iMemberNum; 209 for(i 3=0;i3<pInheritsClass->iMemberNum;i3++){205 for(int i3=0;i3<pInheritsClass->iMemberNum;i3++){ 210 206 ppobj_Member[i3]=new CMember( *pInheritsClass->ppobj_Member[i3] ); 211 207 … … 315 311 { 316 312 for( int i=(int)methods.size()-1; i>=0; i-- ){ 317 if( pUserProc == methods[i]->pUserProc ) return methods[i]; 313 if( pUserProc == methods[i]->pUserProc ){ 314 return methods[i]; 315 } 318 316 } 319 317 return NULL; … … 1350 1348 1351 1349 1352 if(pobj_c->ppobj_Member[pobj_c->iMemberNum-1]->IsObject()|| 1353 pobj_c->ppobj_Member[pobj_c->iMemberNum-1]->IsStruct()){ 1350 if(pobj_c->ppobj_Member[pobj_c->iMemberNum-1]->IsStruct()){ 1354 1351 if(pobj_c->ppobj_Member[pobj_c->iMemberNum-1]->GetClass().ppobj_Member==0){ 1355 1352 //参照先が読み取られていないとき … … 1359 1356 1360 1357 1361 if(pobj_c->ppobj_Member[pobj_c->iMemberNum-1]->Is Object()){1358 if(pobj_c->ppobj_Member[pobj_c->iMemberNum-1]->IsStruct()){ 1362 1359 //循環参照のチェック 1363 1360 pobj_LoopRefCheck->add(pobj_c->name); … … 1422 1419 delete pobj_LoopRefCheck; 1423 1420 pobj_LoopRefCheck=0; 1424 } 1425 1426 void CDBClass::GenerateRuntimeTypeInfo(){ 1421 1422 // イテレータ用のデータを作る 1423 pobj_DBClass->Iterator_Init(); 1424 } 1425 1426 void CDBClass::Compile_System_InitializeUserTypes(){ 1427 1428 //////////////////////////////////////////////////////////////////// 1429 // クラス登録 1430 //////////////////////////////////////////////////////////////////// 1431 1432 // イテレータをリセット 1433 Iterator_Reset(); 1434 1435 while( Iterator_HasNext() ){ 1436 CClass *pClass = Iterator_GetNext(); 1437 1438 char temporary[VN_SIZE]; 1439 sprintf( temporary 1440 , "Add(%c%c_System_TypeForClass(\"%s\",\"%s\"))" 1441 , 1 1442 , ESC_NEW 1443 , "" // 名前空間 (TODO: 実装) 1444 , pClass->name // クラス名 1445 ); 1446 1447 // コンパイル 1448 ChangeOpcode( temporary ); 1449 1450 // ネイティブコードバッファの再確保 1451 ReallocNativeCodeBuffer(); 1452 } 1453 1454 1455 //////////////////////////////////////////////////////////////////// 1456 // 継承関係登録 1457 //////////////////////////////////////////////////////////////////// 1458 // TODO: 未完成 1459 /* 1460 1461 // イテレータをリセット 1462 Iterator_Reset(); 1463 1464 while( Iterator_HasNext() ){ 1465 CClass *pClass = Iterator_GetNext(); 1466 1467 sprintf( genBuffer + length 1468 , "obj.Search( \"%s\" ).SetBaseType( Search( \"%s\" ) ):" 1469 , "" // クラス名 1470 , pClass->name // クラス名 1471 ); 1472 length += lstrlen( genBuffer + length ); 1473 1474 while( length + 8192 > max ){ 1475 max += 8192; 1476 genBuffer = (char *)realloc( genBuffer, max ); 1477 } 1478 }*/ 1427 1479 } 1428 1480 … … 1475 1527 ////////////////////// 1476 1528 1477 void CDBClass::Iterator_ Reset(void){1529 void CDBClass::Iterator_Init(void){ 1478 1530 if(ppobj_IteClass) HeapDefaultFree(ppobj_IteClass); 1479 1531 … … 1498 1550 } 1499 1551 } 1552 void CDBClass::Iterator_Reset(void){ 1553 iIteNextNum = 0; 1554 } 1500 1555 BOOL CDBClass::Iterator_HasNext(void){ 1501 1556 if(iIteNextNum<iIteMaxNum) return 1;
Note:
See TracChangeset
for help on using the changeset viewer.