亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? symbols.c

?? nVidia開發(fā)的圖形語言 Cg
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
    if (!fScope)
        fScope = CurrentScope;
    lSymb = fScope->tags;
    while (lSymb) {
        rname = GetReversedAtom(atable, lSymb->name);
        if (rname == ratom) {
            return lSymb;
        } else {
            if (rname > ratom) {
                lSymb = lSymb->left;
            } else {
                lSymb = lSymb->right;
            }
        }
    }
    return NULL;
} // LookUpLocalTag

/*
 * LookUpSymbol()
 *
 */

Symbol *LookUpSymbol(Scope *fScope, int atom)
{
    Symbol *lSymb;

    if (!fScope)
        fScope = CurrentScope;
    while (fScope) {
        lSymb = LookUpLocalSymbol(fScope, atom);
        if (lSymb)
            return lSymb;
        fScope = fScope->parent;
    }
    return NULL;
} // LookUpSymbol

/*
 * LookUpTag()
 *
 */

Symbol *LookUpTag(Scope *fScope, int atom)
{
    Symbol *lSymb;

    if (!fScope)
        fScope = CurrentScope;
    while (fScope) {
        lSymb = LookUpLocalTag(fScope, atom);
        if (lSymb)
            return lSymb;
        fScope = fScope->parent;
    }
    return NULL;
} // LookUpTag

/*
 * LookUpTypeSymbol()
 *
 */

Type *LookUpTypeSymbol(Scope *fScope, int atom)
{
    Symbol *lSymb;
    Type *lType;

    lSymb = LookUpSymbol(fScope, atom);
    if (lSymb) {
        if (!IsTypedef(lSymb)) {
            InternalError(Cg->tokenLoc, ERROR_S_NAME_NOT_A_TYPE,
                          GetAtomString(atable, atom));
            return UndefinedType;
        }
        lType = lSymb->type;
        if (lType) {
            return lType;
        } else {
            return UndefinedType;
        }
    } else {
        InternalError(Cg->tokenLoc, ERROR_S_TYPE_NAME_NOT_FOUND,
                      GetAtomString(atable, atom));
        return UndefinedType;
    }
} // LookUpTypeSymbol

/*
 * GetStandardType()
 *
 * Scalar: len = 0.
 * Vector: len >= 1 and len2 = 0
 * Matrix: len >= 1 and len2 >= 1
 *
 * len = 1 means "float f[1]" not "float f"
 * Vector and matrix types are PACKED.
 *
 */

Type *GetStandardType(int tbase, int tlen, int tlen2)
{
    Type *lType, *nType;

    if (tbase >= 0 && tbase <= TYPE_BASE_LAST_USER) {
        lType = baseTypes[tbase];
        if (tlen > 0) {
            // Put these in a table, too!!! XYZZY !!!
            nType = NewType(TYPE_CATEGORY_ARRAY | TYPE_MISC_PACKED | tbase, 0);
            nType->arr.eltype = lType;
            nType->arr.numels = tlen;
            nType->arr.size = Cg->theHAL->GetSizeof(nType);
            lType = nType;
            if (tlen2 > 0) {
                // Put these in a table, too!!! XYZZY !!!
                nType = NewType(TYPE_CATEGORY_ARRAY | TYPE_MISC_PACKED | tbase, 0);
                nType->arr.eltype = lType;
                nType->arr.numels = tlen2;
                nType->arr.size = Cg->theHAL->GetSizeof(nType);
                lType = nType;
            }
        }
    } else {
        lType = UndefinedType;
    }
    return lType;
} // GetStandardType

/*
 * GetElementType() - Return a pointer to the type of elements stored in this array.
 *
 */

Type *GetElementType(const Type *fType)
{
    Type *lType;

    if (GetCategory(fType) == TYPE_CATEGORY_ARRAY) {
        lType = fType->arr.eltype;
#if 0000
        if ((fType->properties & TYPE_QUALIFIER_CONST) &&
            !(lType->properties & TYPE_QUALIFIER_CONST))
        {
            lType = DupType(lType);
            lType->properties |= TYPE_QUALIFIER_CONST;
        }
#endif
    } else {
        InternalError(Cg->tokenLoc, ERROR___TYPE_NOT_ARRAY);
        lType = UndefinedType;
    }
    return lType;
} // GetElementType

/*
 * SetMemberOffsets() - Assign offsets to members for use by code generators.
 *
 */

void SetStructMemberOffsets(Type *fType)
{
    int addr, size, alignment;
    Symbol *lSymb;

    addr = 0;
    lSymb = fType->str.members->symbols;
    while (lSymb) {
        alignment = Cg->theHAL->GetAlignment(lSymb->type);
        size = Cg->theHAL->GetSizeof(lSymb->type);
        addr = ((addr + alignment - 1)/alignment)*alignment;
        lSymb->details.var.addr = addr;
        addr += size;
        lSymb = lSymb->next;
    }
    fType->co.size = ((addr + 3)/4)*4;
} // SetStructMemberOffsets

/*
 * SetStructMembers() - Set the member tree of a structure.
 *
 */

Type *SetStructMembers(SourceLoc *loc, Type *fType, Scope *members)
{
    Symbol *lSymb;
    const char *tagname;

    if (fType) {
        if (fType->str.members) {
            SemanticError(loc, ERROR_SSD_STRUCT_ALREADY_DEFINED,
                            GetAtomString(atable, fType->str.tag),
                            GetAtomString(atable, fType->str.loc.file),
                            fType->str.loc.line);
        } else {
            if (fType->str.tag) {
                tagname = GetAtomString(atable, fType->str.tag);
            } else {
                tagname = "<no-name>";
            }
            fType->str.members = members;
            fType->str.loc = *loc;
            fType->str.HasSemantics = members->HasSemantics;
            SetStructMemberOffsets(fType);
            if (fType->str.tag) {
                lSymb = LookUpLocalSymbol(CurrentScope, fType->str.tag);
                if (!lSymb) {
                    lSymb = DefineTypedef(loc, CurrentScope, fType->str.tag, fType);
                } else {
                    if (IsCategory(fType, TYPE_CATEGORY_STRUCT)) {
                        if (!IsCategory(lSymb->type, TYPE_CATEGORY_STRUCT)) {
                            SemanticError(loc, ERROR_S_NAME_ALREADY_DEFINED, tagname);
                        }
                    }
                }
            }
        }
    }
    return fType;
} // SetStructMembers

/*
 * AddParameter() - Add a parameter to a function's formal parameter list, or a member to a
 *         struct or connector's member list.
 */

void AddParameter(Scope *fScope, Symbol *param)
{
    Symbol *lSymb = fScope->params;

    if (lSymb) {
        while (lSymb->next)
            lSymb = lSymb->next;
        lSymb->next = param;
    } else {
        fScope->params = param;
    }
} // AddParameter

///////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////// Various Support Functions: /////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////

/*
 * GetSwizzleOrWriteMask() - Build a swizzle mask out of the letters in an identifier.
 *
 */
 
int GetSwizzleOrWriteMask(SourceLoc *loc, int atom, int *FIsLValue, int *flen)
{
    const char *s, *t;
    int len, bit, mask, bits;
    int groups, group;
    int LIsLValue;
    char ch;

    s = t = GetAtomString(atable, atom);
    len = mask = bits = groups = 0;
    LIsLValue = 1;
    while (*s) {
        ch = *s++;
        switch (ch) {
        case 'x':
            bit = 0;
            group = 1;
            break;
        case 'y':
            bit = 1;
            group = 1;
            break;
        case 'z':
            bit = 2;
            group = 1;
            break;
        case 'w':
            bit = 3;
            group = 1;
            break;
        case 'r':
            bit = 0;
            group = 2;
            break;
        case 'g':
            bit = 1;
            group = 2;
            break;
        case 'b':
            bit = 2;
            group = 2;
            break;
        case 'a':
            bit = 3;
            group = 2;
            break;
        default:
            SemanticError(loc, ERROR_CS_INVALID_SWIZZLE_CHAR, ch, t);
            return mask;
            break;
        }
        mask |= bit << len*2;
        bit = 1 << bit;
        if (bits & bit)
            LIsLValue = 0;
        bits |= bit;
        if (groups && groups != group) {
            SemanticError(loc, ERROR_CS_INVALID_SWIZZLE_CHAR, ch, t);
            return mask;
        }
        groups |= group;
        len++;
    }
    if (len > 4)
        SemanticError(loc, ERROR_S_SWIZZLE_TOO_LONG, t);
    if (FIsLValue)
        *FIsLValue = LIsLValue;
    if (flen)
        *flen = len;
    return mask;
} // GetSwizzleOrWriteMask

/*
 * GetMatrixSwizzleOrWriteMask() - Build a matrix swizzle mask out of the letters in an identifier.
 *
 */
 
int GetMatrixSwizzleOrWriteMask(SourceLoc *loc, int atom, int *FIsLValue, int *flen)
{
    const char *s, *t;
    int len, bit, mask, bits, base;
    int LIsLValue, Error;
    char lch, ch;

    s = t = GetAtomString(atable, atom);
    len = mask = bits = 0;
    LIsLValue = 1;
    if (s[0] == '_' && s[1] != '\0') {
        Error = 0;
        if (s[1] == 'm') {
            base = 0;
        } else {
            base = 1;
        }
        while (*s) {
            ch = lch = *s++;
            if (ch == '_') {
                if (base == 0) {
                    if (*s++ != 'm') {
                        Error = 1;
                        break;
                    }
                }
                lch = *s++;
                ch = lch - base;
                if (ch >= '0' && ch <= '3') {
                    bit = (ch - '0') << 2;
                    lch = *s++;
                    ch = lch - base;
                    if (ch >= '0' && ch <= '3') {
                        bit = bit | (ch - '0');
                        mask |= bit << len*4;
                        bit = 1 << bit;
                        if (bit & bits)
                            LIsLValue = 0;
                        bits |= bit;
                        len++;
                    } else {
                        Error = 1;
                        break;
                    }
                } else {
                    Error = 1;
                    break;
                }
            } else {
                Error = 1;
                break;
            }
        }
    } else {
        lch = *s;
        Error = 1;
    }
    if (Error) {
        SemanticError(loc, ERROR_CS_INVALID_SWIZZLE_CHAR, lch, t);
    }
    if (len > 4)
        SemanticError(loc, ERROR_S_SWIZZLE_TOO_LONG, t);
    if (FIsLValue)
        *FIsLValue = LIsLValue;
    if (flen)
        *flen = len;
    return mask;
} // GetMatrixSwizzleOrWriteMask

/*
 * GetBaseTypeNameString() - Return a pointer to a string representation of a base type name.
 *
 */

const char *GetBaseTypeNameString(int base)
{
    if (base >= 0 && base <= TYPE_BASE_LAST_USER) {
        return GetAtomString(atable, baseTypeNames[base]);
    } else {
        return "*** bad base value ***";
    }
} // GetBaseTypeNameString

/*
 * ClearSymbolTempptr() - Clear the tempptr for all symbols in this tree.
 *
 */

static void ClearSymbolTempptr(Symbol *fSymb)
{
    if (fSymb) {
        fSymb->tempptr = NULL;
        ClearSymbolTempptr(fSymb->left);
        ClearSymbolTempptr(fSymb->right);
    }
} // ClearSymbolTempptr

/*
 * ClearSymbolTempptrList() - Walk a list of scopes and
 *                            clear tempptr field for all symbols.
 *
 */

static void ClearSymbolTempptrList(Scope *fScope)
{
    while (fScope) {
        ClearSymbolTempptr(fScope->symbols);
        fScope = fScope->next;
    }
} // ClearSymbolTempptrList

/*
 * ClearAllSymbolTempptr
 *
 */

void ClearAllSymbolTempptr(void)
{
    ClearSymbolTempptrList(ScopeList);
} // ClearSymbolTempptr


/*
 * ClearSymbolTempptr2() - Clear the tempptr2 for all symbols in this tree.
 *
 */

static void ClearSymbolTempptr2(Symbol *fSymb)
{
    if (fSymb) {
        fSymb->tempptr2 = NULL;
        ClearSymbolTempptr2(fSymb->left);
        ClearSymbolTempptr2(fSymb->right);
    }
} // ClearSymbolTempptr2

/*
 * ClearSymbolTempptr2List() - Walk a list of scopes and
 *                            clear tempptr field for all symbols.
 *
 */

static void ClearSymbolTempptr2List(Scope *fScope)
{
    while (fScope) {
        ClearSymbolTempptr2(fScope->symbols);
        fScope = fScope->next;
    }
} // ClearSymbolTempptr2List

/*
 * ClearAllSymbolTempptr2
 *
 */

void ClearAllSymbolTempptr2(void)
{
    ClearSymbolTempptr2List(ScopeList);
} // ClearSymbolTempptr2

///////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////// End of symbols.c //////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区四| 国产精品一线二线三线精华| 日韩欧美www| 99久久精品久久久久久清纯| 日本不卡123| 一区二区三区四区高清精品免费观看 | 99热精品一区二区| 日本三级韩国三级欧美三级| 亚洲欧洲另类国产综合| 日韩欧美激情四射| 欧美少妇性性性| jiyouzz国产精品久久| 久久99蜜桃精品| 亚洲国产一二三| 日韩一区中文字幕| 久久欧美一区二区| 538prom精品视频线放| 在线观看精品一区| 成人黄动漫网站免费app| 国产一区二区三区免费在线观看| 蜜臀久久久99精品久久久久久| 一区二区在线看| 国产精品美女视频| 国产日韩欧美电影| 亚洲最新视频在线观看| 国产欧美日韩在线| 久久久久国产精品厨房| 精品奇米国产一区二区三区| 欧美日韩精品专区| 欧美婷婷六月丁香综合色| 91一区二区三区在线播放| 成人高清视频免费观看| 国产一区二区在线免费观看| 蜜臀91精品一区二区三区| 日韩精品一区第一页| 日韩国产成人精品| 视频一区二区欧美| 日本午夜精品视频在线观看 | 欧美体内she精视频| 国产精品69毛片高清亚洲| 国模无码大尺度一区二区三区| 日韩av不卡在线观看| 午夜精品久久久久久久99樱桃| 亚洲尤物在线视频观看| 亚洲综合免费观看高清在线观看| 亚洲美女屁股眼交| 亚洲自拍偷拍网站| 亚洲国产色一区| 日本中文字幕不卡| 免费观看久久久4p| 国产精品资源网站| 成人国产一区二区三区精品| 99久久综合精品| 一本色道a无线码一区v| 成人av动漫在线| 色婷婷av一区二区三区大白胸| 欧美性做爰猛烈叫床潮| 欧美疯狂性受xxxxx喷水图片| 欧美四级电影在线观看| 欧美精品久久一区| 精品国产精品网麻豆系列| 久久久亚洲欧洲日产国码αv| 三级欧美韩日大片在线看| 日韩av电影一区| 国产精品白丝av| eeuss影院一区二区三区 | 欧美一区二区三区在线看| 精品国产一区二区亚洲人成毛片| 国产性天天综合网| 亚洲男人天堂一区| 毛片基地黄久久久久久天堂| 国产精品自拍av| 色成年激情久久综合| 91精品国产欧美一区二区18| 久久亚洲综合色| 一区二区三区四区在线播放| 日韩影院在线观看| 成人午夜av电影| 秋霞电影一区二区| 国产成人精品免费在线| 91福利资源站| 欧美mv和日韩mv国产网站| 国产亚洲人成网站| 亚洲国产美女搞黄色| 九九**精品视频免费播放| 91在线观看高清| 678五月天丁香亚洲综合网| 国产视频一区二区在线| 亚洲女厕所小便bbb| 激情综合网激情| 91精品91久久久中77777| 欧美变态凌虐bdsm| 一区二区三区四区高清精品免费观看 | ww亚洲ww在线观看国产| 亚洲精品视频在线看| 韩国女主播一区| 欧美日韩精品专区| 自拍偷拍亚洲综合| 国产一区二区看久久| 欧美亚洲一区二区在线| 中文一区二区完整视频在线观看 | 亚洲综合图片区| 国产成人精品三级| 日韩欧美专区在线| 亚洲一区二区三区在线看| 国产精品白丝av| 欧美大片一区二区| 亚洲国产成人tv| av在线不卡免费看| 国产亚洲一区字幕| 美国毛片一区二区| 制服.丝袜.亚洲.另类.中文| 亚洲欧美另类久久久精品| 国产精品白丝av| 精品久久久久香蕉网| 日韩av在线发布| 欧美日韩国产首页| 亚洲精品美腿丝袜| 99久久国产综合色|国产精品| 国产清纯在线一区二区www| 精品一区二区三区久久| 91精品国产综合久久国产大片| 亚洲综合在线电影| 91国偷自产一区二区使用方法| 国产精品久久毛片| 成人精品一区二区三区中文字幕| 久久综合狠狠综合久久综合88| 秋霞电影网一区二区| 欧美日韩国产高清一区二区三区 | 久久香蕉国产线看观看99| 日产国产欧美视频一区精品| 欧美色区777第一页| 夜夜嗨av一区二区三区中文字幕| 97久久超碰国产精品电影| 国产精品污网站| 粉嫩嫩av羞羞动漫久久久 | 亚洲精品成a人| 91网站黄www| 一区二区视频免费在线观看| 99视频精品免费视频| 中文字幕久久午夜不卡| 成人av资源下载| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 国产99一区视频免费| 国产精品免费丝袜| 91视频观看免费| 亚洲精品欧美在线| 欧美亚洲一区二区在线| 丝袜诱惑亚洲看片| 日韩美女视频在线| 国产一区欧美一区| 欧美国产精品一区二区| 91香蕉视频mp4| 午夜影院在线观看欧美| 欧美电影免费观看高清完整版在线| 激情五月婷婷综合| 国产免费成人在线视频| 91亚洲男人天堂| 亚洲高清不卡在线| 日韩一区二区三区免费观看| 精品一区二区三区蜜桃| 国产精品久久久久久久蜜臀| 色天天综合久久久久综合片| 日韩精品福利网| 久久久综合视频| 色婷婷av一区二区三区大白胸| 天堂蜜桃91精品| 久久综合久色欧美综合狠狠| 成人免费看的视频| 亚洲狠狠爱一区二区三区| 欧美成人艳星乳罩| 99久久99久久精品国产片果冻| 亚洲一区二区三区四区在线免费观看| 欧美日韩在线电影| 国产激情偷乱视频一区二区三区| 亚洲精品中文字幕乱码三区| 日韩一级免费观看| av资源网一区| 喷水一区二区三区| 国产精品国产自产拍高清av| 欧美日韩一区二区在线观看视频| 国内精品免费在线观看| 亚洲欧美日韩精品久久久久| 日韩精品中文字幕一区二区三区| 成人动漫一区二区在线| 日本不卡不码高清免费观看| 中文字幕亚洲一区二区va在线| 欧美丰满高潮xxxx喷水动漫 | 日韩欧美久久一区| 91啪亚洲精品| 精品一区二区日韩| 亚洲国产日韩精品| 国产精品素人一区二区| 欧美一区在线视频| av电影一区二区| 九色综合狠狠综合久久| 亚洲国产日韩一级| 136国产福利精品导航| 精品久久久网站| 欧美日韩黄视频|