#include "../BasicCompiler_Common/common.h" #ifdef _AMD64_ #include "../BasicCompiler64/opcode.h" #else #include "../BasicCompiler32/opcode.h" #endif extern HANDLE hHeap; void CallConstructor(char *ObjectName,int *SubScripts,TYPEINFO &TypeInfo,char *Parameter){ if(TypeInfo.type!=DEF_OBJECT) return; ///////////////////////////////////// // クラスオブジェクトの場合 // ※コンストラクタの呼び出し ///////////////////////////////////// CClass *pobj_c; pobj_c=(CClass *)TypeInfo.u.lpIndex; SUBINFO *psi; psi=GetMethodHash(ObjectName,pobj_c->name,Parameter); if(!psi){ if(Parameter[0]) SetError(113,pobj_c->name,cp); return; } char temporary[VN_SIZE]; if(SubScripts[0]!=-1){ int ss[MAX_ARRAYDIM]; memset(ss,0,MAX_ARRAYDIM*sizeof(int)); while(1){ int i3; for(i3=0;;i3++){ if(SubScripts[i3]==-1) break; if(ss[i3]>SubScripts[i3]){ ss[i3]=0; ss[i3+1]++; } else break; } if(SubScripts[i3]==-1) break; sprintf(temporary,"%s[%d",ObjectName,ss[0]); for(i3=1;;i3++){ if(SubScripts[i3]==-1) break; sprintf(temporary+lstrlen(temporary),",%d",ss[i3]); } lstrcat(temporary,"]"); LONG_PTR lp; sprintf(temporary+lstrlen(temporary),".%s",pobj_c->name); CallProc(PROC_DEFAULT, psi, temporary, Parameter, &lp); ss[0]++; //ネイティブコードバッファの再確保 extern int obp_AllocSize; if(obp_AllocSizename); CallProc(PROC_DEFAULT, psi, temporary, Parameter, &lp); } }