Esempio n. 1
0
Boolean IsSysAlaisType(
    /* [in] */ const CClsModule* clsModule,
    /* [in] */ UInt32 index)
{
    Int32 base = clsModule->mBase;
    CLSModule* module = clsModule->mClsMod;
    AliasDirEntry* aliasDir = getAliasDirAddr(base, module->mAliasDirs, index);
    char* nameSpace = adjustNameAddr(base, aliasDir->mNameSpace);
    return (nameSpace) && !strcmp(nameSpace, "systypes");
}
Esempio n. 2
0
void _GetOriginalType(
    /* [in] */ const CClsModule* clsModule,
    /* [in] */ const TypeDescriptor* src,
    /* [in] */ TypeDescriptor* dest)
{
    dest->mPointer = src->mPointer;
    dest->mUnsigned = src->mUnsigned;

    AliasDirEntry* aliasDir = NULL;
    while (src->mType == Type_alias) {
        aliasDir = getAliasDirAddr(clsModule->mBase,
                clsModule->mClsMod->mAliasDirs, src->mIndex);
        src = &aliasDir->type;
        dest->mPointer += src->mPointer;
        dest->mUnsigned |= src->mUnsigned;
    }

    dest->mType = src->mType;
    dest->mIndex = src->mIndex;
    dest->mNestedType = src->mNestedType;
}
Esempio n. 3
0
ECode CClsModule::InitOrgType()
{
    if (!mClsMod->mAliasCount) {
        return NOERROR;
    }

    Int32 i = 0;
    mTypeAliasList = new TypeAliasDesc[mClsMod->mAliasCount];
    if (!mTypeAliasList) {
        return E_OUT_OF_MEMORY;
    }

    memset(mTypeAliasList, 0, sizeof(TypeAliasDesc) * mClsMod->mAliasCount);

    for (i = 0; i < mClsMod->mAliasCount; i++) {
        mTypeAliasList[i].mOrgTypeDesc = new TypeDescriptor;
        if (!mTypeAliasList[i].mOrgTypeDesc) goto EExit;
        mTypeAliasList[i].mTypeDesc = &(getAliasDirAddr(mBase,
                mClsMod->mAliasDirs, i)->mType);
        _GetOriginalType(this, mTypeAliasList[i].mTypeDesc,
                mTypeAliasList[i].mOrgTypeDesc);
    }

    return NOERROR;

EExit:
    for (i = 0; i < mClsMod->mAliasCount; i++) {
        if (mTypeAliasList[i].mOrgTypeDesc) {
            delete mTypeAliasList[i].mOrgTypeDesc;
        }
    }

    delete[] mTypeAliasList;
    mTypeAliasList = NULL;

    return E_OUT_OF_MEMORY;
}