Changeset 46 in dev for BasicCompiler32/Compile_Func.cpp


Ignore:
Timestamp:
Feb 6, 2007, 1:19:17 AM (17 years ago)
Author:
dai_9181
Message:

VarPtrの戻り値の型をVoidPtrではなく、ポインタレベルを増加した型にした。
関連関数のパラメータにconstを適用。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler32/Compile_Func.cpp

    r28 r46  
    4444}
    4545
    46 void Opcode_Func_Fix(char *Parameter){
     46void Opcode_Func_Fix(const char *Parameter){
    4747    int i;
    4848
     
    161161}
    162162
    163 void Opcode_Func_CUDbl(char *Parameter){
     163void Opcode_Func_CUDbl(const char *Parameter){
    164164    int i;
    165165
     
    185185    op_add_esp(8);
    186186}
    187 void Opcode_Func_Len(char *Parameter){
     187void Opcode_Func_Len(const char *Parameter){
    188188    int type,TypeSize;
    189189    LONG_PTR lpIndex;
     
    192192    type=GetVarType(Parameter,&lpIndex,0);
    193193
    194     char *tempParm=Parameter;
     194    const char *tempParm=Parameter;
    195195    char temporary[VN_SIZE];
    196196    char temp2[32];
     
    241241    obp+=sizeof(long);
    242242}
    243 void Opcode_Func_AddressOf(char *name){
     243void Opcode_Func_AddressOf(const char *name){
    244244    extern int cp;
    245245    SUBINFO *psi;
     
    353353    psi->bUse=1;
    354354}
    355 void Opcode_Func_SizeOf(char *Parameter){
     355void Opcode_Func_SizeOf(const char *Parameter){
    356356    int type,size;
    357357    LONG_PTR lpIndex;
     
    370370    obp+=sizeof(long);
    371371}
    372 void Opcode_Func_VarPtr(char *Parameter){
    373     int type;
     372void Opcode_Func_VarPtr( const char *Parameter, TYPEINFO &ReturnTypeInfo ){
    374373    RELATIVE_VAR RelativeVar;
    375374
    376375    //変数のアドレスを取得
    377     if(!GetVarOffsetReadOnly(Parameter,&type,&RelativeVar,0)) return;
     376    if(!GetVarOffsetReadOnly( Parameter, &ReturnTypeInfo.type, &RelativeVar, &ReturnTypeInfo.u.lpIndex )) return;
     377
     378    PTR_LEVEL_UP( ReturnTypeInfo.type );
    378379
    379380    SetVarPtrToEax(&RelativeVar);
    380381}
    381 void Opcode_Func_GetPtrData(char *Parameter,int type){
     382void Opcode_Func_GetPtrData(const char *Parameter,const int type){
    382383    int i2;
    383384
     
    438439}
    439440
    440 int Opcode_CallFunc(char *Parameter,int FuncNum){
     441void Opcode_CallFunc( const char *Parameter, const int FuncNum, TYPEINFO &ReturnTypeInfo ){
    441442    switch(FuncNum){
    442443        case FUNC_FIX:
    443444            Opcode_Func_Fix(Parameter);
    444             return DEF_LONG;
     445            ReturnTypeInfo.type = DEF_LONG;
     446            break;
    445447        case FUNC_CUDBL:
    446448            Opcode_Func_CUDbl(Parameter);
    447             return DEF_DOUBLE;
     449            ReturnTypeInfo.type = DEF_DOUBLE;
     450            break;
    448451        case FUNC_LEN:
    449452            Opcode_Func_Len(Parameter);
    450             return DEF_LONG;
     453            ReturnTypeInfo.type = DEF_LONG;
     454            break;
    451455        case FUNC_ADDRESSOF:
    452456            Opcode_Func_AddressOf(Parameter);
    453             return DEF_PTR_VOID;
     457            ReturnTypeInfo.type = DEF_PTR_VOID;
     458            break;
    454459        case FUNC_SIZEOF:
    455460            Opcode_Func_SizeOf(Parameter);
    456             return DEF_LONG;
     461            ReturnTypeInfo.type = DEF_LONG;
     462            break;
    457463        case FUNC_VARPTR:
    458             Opcode_Func_VarPtr(Parameter);
    459             return DEF_PTR_VOID;
     464            Opcode_Func_VarPtr( Parameter, ReturnTypeInfo );
     465            break;
    460466
    461467        case FUNC_GETDOUBLE:
    462468            Opcode_Func_GetPtrData(Parameter,DEF_DOUBLE);
    463             return DEF_DOUBLE;
     469            ReturnTypeInfo.type = DEF_DOUBLE;
     470            break;
    464471        case FUNC_GETSINGLE:
    465472            Opcode_Func_GetPtrData(Parameter,DEF_SINGLE);
    466             return DEF_SINGLE;
     473            ReturnTypeInfo.type = DEF_SINGLE;
     474            break;
    467475        case FUNC_GETQWORD:
    468476            Opcode_Func_GetPtrData(Parameter,DEF_QWORD);
    469             return DEF_QWORD;
     477            ReturnTypeInfo.type = DEF_QWORD;
     478            break;
    470479        case FUNC_GETDWORD:
    471480            Opcode_Func_GetPtrData(Parameter,DEF_DWORD);
    472             return DEF_DWORD;
     481            ReturnTypeInfo.type = DEF_DWORD;
     482            break;
    473483        case FUNC_GETWORD:
    474484            Opcode_Func_GetPtrData(Parameter,DEF_WORD);
    475             return DEF_WORD;
     485            ReturnTypeInfo.type = DEF_WORD;
     486            break;
    476487        case FUNC_GETBYTE:
    477488            Opcode_Func_GetPtrData(Parameter,DEF_BYTE);
    478             return DEF_BYTE;
    479     }
    480     return 0;
    481 }
     489            ReturnTypeInfo.type = DEF_BYTE;
     490            break;
     491    }
     492}
Note: See TracChangeset for help on using the changeset viewer.