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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? support.c

?? nVidia開發的圖形語言 Cg
?? C
?? 第 1 頁 / 共 5 頁
字號:
 *
 */
 
unary *DupUnaryNode(const unary *fun)
{
    unary *lun;

    lun = (unary *) malloc(sizeof(unary));
    *lun = *fun;
    return lun;
} // DupUnaryNode

/*
 * DupBinaryNode() - Duplicate a binary op node.
 *
 */
 
binary *DupBinaryNode(const binary *fbin)
{
    binary *lbin;

    lbin = (binary *) malloc(sizeof(binary));
    *lbin = *fbin;
    return lbin;
} // DupBinaryNode

/*
 * DupTrinaryNode() - Duplicate a trinary op node.
 *
 */
 
trinary *DupTrinaryNode(const trinary *ftri)
{
    trinary *ltri;

    ltri = (trinary *) malloc(sizeof(trinary));
    *ltri = *ftri;
    return ltri;
} // DupTrinaryNode


/*
 * DupNode() - Duplicate a expression node.
 *
 */
 
expr *DupNode(const expr *fExpr)
{
    switch (fExpr->common.kind) {
    case SYMB_N: return (expr *) DupSymbNode(&fExpr->sym);
    case CONST_N: return (expr *) DupConstNode(&fExpr->co);
    case UNARY_N: return (expr *) DupUnaryNode(&fExpr->un);
    case BINARY_N: return (expr *) DupBinaryNode(&fExpr->bin);
    case TRINARY_N: return (expr *) DupTrinaryNode(&fExpr->tri);
    }

    FatalError("unsupported node type in DupNode");
    return NULL;
} // DupNode


/*
 * NewExprStmt() - Create an expression statement.
 *
 */
 
expr_stmt *NewExprStmt(SourceLoc *loc, expr *fExpr)
{
    expr_stmt *lStmt;

    lStmt = (expr_stmt *) malloc(sizeof(expr_stmt));
    lStmt->kind = EXPR_STMT;
    lStmt->next = NULL;
    lStmt->loc = *loc;
    lStmt->exp = fExpr;
    return lStmt;
} // NewExprStmt

/*
 * NewIfStmt() - Create an expression statement.
 *
 */
 
if_stmt *NewIfStmt(SourceLoc *loc, expr *fExpr, stmt *thenstmt, stmt *elsestmt)
{
    if_stmt *lStmt;

    lStmt = (if_stmt *) malloc(sizeof(if_stmt));
    lStmt->kind = IF_STMT;
    lStmt->next = NULL;
    lStmt->loc = *loc;
    lStmt->cond = fExpr;
    lStmt->thenstmt = thenstmt;
    lStmt->elsestmt = elsestmt;
    return lStmt;
} // NewIfStmt

/*
 * NewIfStmt() - Create an expression statement.
 *
 */
 
if_stmt *SetThenElseStmts(SourceLoc *loc, stmt *ifstmt, stmt *thenstmt, stmt *elsestmt)
{
    if_stmt *lStmt;

    lStmt = (if_stmt *) ifstmt;
    assert(lStmt->kind == IF_STMT);
    lStmt->thenstmt = thenstmt;
    lStmt->elsestmt = elsestmt;
    return lStmt;
} // NewIfStmt

/*
 * NewWhileStmt() - Create a while statement.
 *
 */
 
while_stmt *NewWhileStmt(SourceLoc *loc, stmtkind kind, expr *fExpr, stmt *body)
{
    while_stmt *lStmt;

    lStmt = (while_stmt *) malloc(sizeof(while_stmt));
    lStmt->kind = kind;
    lStmt->next = NULL;
    lStmt->loc = *loc;
    lStmt->cond = fExpr;
    lStmt->body = body;
    return lStmt;
} // NewWhileStmt

/*
 * NewForStmt() - Create a for statement.
 *
 */
 
for_stmt *NewForStmt(SourceLoc *loc, stmt *fexpr1, expr *fexpr2, stmt *fexpr3, stmt *body)
{
    for_stmt *lStmt;

    lStmt = (for_stmt *) malloc(sizeof(for_stmt));
    lStmt->kind = FOR_STMT;
    lStmt->next = NULL;
    lStmt->loc = *loc;
    lStmt->init = fexpr1;
    lStmt->cond = fexpr2;
    lStmt->step = fexpr3;
    lStmt->body = body;
    return lStmt;
} // NewForStmt

/*
 * NewBlockStmt() - Create a block statement.
 *
 */
 
block_stmt *NewBlockStmt(SourceLoc *loc, stmt *fStmt)
{
    block_stmt *lStmt;

    lStmt = (block_stmt *) malloc(sizeof(block_stmt));
    lStmt->kind = BLOCK_STMT;
    lStmt->next = NULL;
    lStmt->loc = *loc;
    lStmt->body = fStmt;
    return lStmt;
} // NewBlockStmt

/*
 * NewReturnStmt() - Create an expression statement.
 *
 */
 
return_stmt *NewReturnStmt(SourceLoc *loc, Scope *fScope, expr *fExpr)
{
    return_stmt *lStmt;
    expr *lExpr;

    if (fScope) {
        while (fScope->level > 2)
            fScope = fScope->next;
        fScope->HasReturnStmt = 1;
        if (fScope->returnType) {
            if (fScope->returnType == VoidType) {
                if (fExpr) {
                    SemanticError(loc, ERROR___VOID_FUN_RETURNS_VALUE);
                }
            } else if (fScope->returnType != UndefinedType) {
                if (ConvertType(fExpr, fScope->returnType, fExpr->common.type, &lExpr, 0, 0)) {
                    fExpr = lExpr;
                } else {
                    SemanticError(loc, ERROR___RETURN_EXPR_INCOMPAT);
                }
            }
        }
    }
    lStmt = (return_stmt *) malloc(sizeof(return_stmt));
    lStmt->kind = RETURN_STMT;
    lStmt->next = NULL;
    lStmt->loc = *loc;
    lStmt->exp = fExpr;
    return lStmt;
} // NewReturnStmt

/*
 * NewDiscardStmt() - Create a discard statement.
 *
 */
 
discard_stmt *NewDiscardStmt(SourceLoc *loc, expr *fExpr)
{
    discard_stmt *lStmt;
    int len;

    lStmt = (discard_stmt *) malloc(sizeof(discard_stmt));
    lStmt->kind = DISCARD_STMT;
    lStmt->next = NULL;
    lStmt->loc = *loc;
    if (fExpr && IsVector(fExpr->common.type, &len)) {
        /* empty */ ;
    } else {
        len = 0;
    }
    fExpr = (expr *) NewUnopSubNode(KILL_OP, SUBOP_V(len, TYPE_BASE_BOOLEAN), fExpr);
    lStmt->cond = fExpr;
    return lStmt;
} // NewDiscardStmt

/*
 * NewCommentStmt() - Create a comment statement.
 *
 */
 
comment_stmt *NewCommentStmt(SourceLoc *loc, const char *str)
{
    comment_stmt *lStmt;

    lStmt = (comment_stmt *) malloc(sizeof(comment_stmt));
    lStmt->kind = COMMENT_STMT;
    lStmt->next = NULL;
    lStmt->loc = *loc;
    lStmt->str = AddAtom(atable, str);
    return lStmt;
} // NewCommentStmt

/************************************* dtype functions: *************************************/

/*
 * GetTypePointer() - Strange function that returns a pointer to the type defined by it's
 *         argument.  There are 2 cases:
 *
 * A) IsDerived is TRUE:  This type is a stack-frame resident copy of another type.
 *          It has been modified by a qualifier, etc., and does not have a copy in the heap.
 *          Copy the contents into a freshly malloc'ed type and return it's address.
 * B) IsDerived is FALSE: This type is the same as that pointed to by "base".  Return "base".
 */

Type *GetTypePointer(SourceLoc *loc, const dtype *fDtype)
{
    Type *pType;

    if (fDtype) {
        if (fDtype->IsDerived) {
            if (Cg->theHAL->CheckDeclarators(loc, fDtype))
                ; /* empty statement */
            pType = NewType(0, 0);
            *pType = fDtype->type;
            pType->properties &= ~(TYPE_MISC_TYPEDEF | TYPE_MISC_PACKED_KW);
            pType->co.size = Cg->theHAL->GetSizeof(pType);
        } else {
            pType = fDtype->basetype;
        }
    } else {
        pType = UndefinedType;
    }
    return pType;
} // GetTypePointer

/*
 * SetDType() - Set the fields of a dtype to match a type.
 *
 */

dtype *SetDType(dtype *fDtype, Type *fType)
{
    fDtype->basetype = fType;
    fDtype->IsDerived = 0;
    fDtype->numNewDims = 0;
    fDtype->storageClass = SC_UNKNOWN;
    fDtype->type = *fType;
    return fDtype;
} // SetDType

/*
 * NewDType() - Initialize the fields of a dtype.
 *
 */

dtype *NewDType(dtype *fDtype, Type *baseType, int category)
{
    fDtype->basetype = baseType;
    fDtype->IsDerived = 1;
    fDtype->numNewDims = 0;
    fDtype->storageClass = SC_UNKNOWN;
    InitType(&fDtype->type);
    fDtype->type.properties = category;
    return fDtype;
} // NewDType

/*
 * SetTypeCategory() - Set the category of a type.  Issue an error if it's already set to a
 *         conflicting category.
 *
 * Returns: TRUE if O.K.
 *
 */

int SetTypeCategory(SourceLoc *loc, int atom, dtype *fType, int category, int Force)
{
    int lcategory;

    lcategory = fType->type.properties & TYPE_CATEGORY_MASK;
    if (Force || lcategory == TYPE_CATEGORY_NONE) {
        fType->type.properties &= ~TYPE_CATEGORY_MASK;
        fType->type.properties |= category;
        fType->IsDerived = 1;
    } else {
        if (lcategory != category) {
            SemanticError(loc, ERROR_S_CONFLICTING_DECLARATION, GetAtomString(atable, atom));
            return 0;
        }
    }
    return 1;
} // SetTypeCategory

/*
 * SetTypeQualifiers() - Set a type's qualifier bits.  Issue an error if any bit is already set.
 *
 * Returns: TRUE if O.K.
 *
 */

int SetTypeQualifiers(SourceLoc *loc, dtype *fType, int qualifiers)
{
    int lqualifiers;

    qualifiers &= TYPE_QUALIFIER_MASK;
    lqualifiers = fType->type.properties & TYPE_QUALIFIER_MASK;
    if (lqualifiers & qualifiers) {
        SemanticWarning(loc, WARNING___QUALIFIER_SPECIFIED_TWICE);
    }
    if (lqualifiers != qualifiers) {
        fType->type.properties |= qualifiers & TYPE_QUALIFIER_MASK;
        fType->IsDerived = 1;
        if ((fType->type.properties & (TYPE_QUALIFIER_CONST | TYPE_QUALIFIER_OUT)) ==
            (TYPE_QUALIFIER_CONST | TYPE_QUALIFIER_OUT))
        {
            SemanticError(loc, ERROR___CONST_OUT_INVALID);
        }
    }
    return 1;
} // SetTypeCategory

/*
 * SetTypeDomain() - Set the domain of a type.  Issue an error if it's already set to a
 *         conflicting domain.
 *
 * Returns: TRUE if O.K.
 *
 */

int SetTypeDomain(SourceLoc *loc, dtype *fType, int domain)
{
    int ldomain;

    ldomain = fType->type.properties & TYPE_DOMAIN_MASK;
    if (ldomain == TYPE_DOMAIN_UNKNOWN) {
        fType->type.properties &= ~TYPE_DOMAIN_MASK;
        fType->type.properties |= domain;
        fType->IsDerived = 1;
    } else {
        if (ldomain == domain) {
            SemanticWarning(loc, WARNING___DOMAIN_SPECIFIED_TWICE);
        } else {
            SemanticError(loc, ERROR___CONFLICTING_DOMAIN);
            return 0;
        }
    }
    return 1;
} // SetTypeDomain

/*
 * SetTypeMisc() - Set a bit in the misc field a type.  Issue an error if it's already set.
 *
 * Returns: TRUE if O.K.
 *
 */

int SetTypeMisc(SourceLoc *loc, dtype *fType, int misc)
{
    if (fType) {
        if (fType->type.properties & misc) {
            SemanticError(loc, ERROR___REPEATED_TYPE_ATTRIB);
            return 0;
        }
        if (misc & ~TYPE_MISC_TYPEDEF)
            fType->IsDerived = 1;
        fType->type.properties |= misc;
        return 1;
    }
    return 0;
} // SetTypeMisc

/*
 * SetTypePacked() - Add the PAKED attribute to a type specifier.  Issue an error if it's already set.
 *
 * Returns: TRUE if O.K.
 *
 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美无乱码久久久免费午夜一区 | 国产精品成人免费| 国产福利一区二区三区视频| 26uuu久久天堂性欧美| 久久99九九99精品| 国产午夜精品一区二区三区视频| 国产不卡免费视频| 亚洲免费观看高清| 欧美日韩国产在线播放网站| 奇米影视一区二区三区| 久久精品视频在线免费观看 | 久久97超碰色| 国产亲近乱来精品视频 | 大白屁股一区二区视频| 亚洲激情在线播放| 欧美一区永久视频免费观看| 国产中文字幕精品| 亚洲欧美一区二区三区久本道91| 欧美视频日韩视频| 喷白浆一区二区| 国产精品久久精品日日| 欧美三级日韩在线| 国产伦精品一区二区三区在线观看| 国产蜜臀97一区二区三区| 色婷婷精品久久二区二区蜜臂av| 亚洲18女电影在线观看| 欧美激情一区三区| 欧美精品久久天天躁| 国产v综合v亚洲欧| 天堂精品中文字幕在线| 国产女人水真多18毛片18精品视频| 91黄色激情网站| 国产精品亚洲午夜一区二区三区| 亚洲综合男人的天堂| 久久久久久久久久久黄色| 在线精品亚洲一区二区不卡| 国产在线观看一区二区| 亚洲国产aⅴ天堂久久| 久久精品男人的天堂| 欧美老女人在线| 91免费观看国产| 狠狠久久亚洲欧美| 午夜成人免费视频| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 国产精品成人一区二区三区夜夜夜| 欧美日韩一区二区三区四区| 成人深夜在线观看| 麻豆91免费观看| 亚洲v日本v欧美v久久精品| 国产精品欧美精品| 久久久噜噜噜久噜久久综合| 在线观看欧美日本| gogo大胆日本视频一区| 国产激情偷乱视频一区二区三区| 青青青伊人色综合久久| 亚洲成国产人片在线观看| 1区2区3区国产精品| 国产情人综合久久777777| 日韩一二三区视频| 51精品秘密在线观看| 欧美伊人久久大香线蕉综合69| caoporn国产精品| 国产成人免费视频精品含羞草妖精| 强制捆绑调教一区二区| 午夜精品123| 亚洲一区二区av在线| 亚洲精品免费一二三区| 中文字幕一区二区三区在线不卡| 国产欧美日韩精品在线| 久久嫩草精品久久久精品一| 久久免费的精品国产v∧| 精品人伦一区二区色婷婷| 欧美一区二区在线免费观看| 欧美视频日韩视频| 欧美日本一区二区| 欧美一区二区三区免费大片| 欧美一二三区在线| 精品日韩在线观看| 久久久久99精品一区| 国产亚洲精品bt天堂精选| 国产女主播视频一区二区| 国产精品毛片大码女人| 亚洲欧洲中文日韩久久av乱码| 亚洲欧洲av在线| 一区二区在线观看免费| 亚洲国产sm捆绑调教视频 | 欧美专区日韩专区| 欧美区一区二区三区| 欧美一区二区三区在线观看视频| 日韩一区二区电影在线| 欧美电视剧免费全集观看| 国产日韩成人精品| 国产精品久久久久久久久图文区 | 99久久精品国产观看| 色综合久久久久久久久久久| 在线这里只有精品| 日韩欧美电影在线| 久久精品亚洲精品国产欧美kt∨| 国产精品久久精品日日| 一区二区国产视频| 日本伊人色综合网| 国产成人在线观看| 欧美色综合久久| 欧美videofree性高清杂交| 国产精品素人一区二区| 亚洲免费视频中文字幕| 美女一区二区在线观看| 成人理论电影网| 91丨porny丨国产入口| 欧美图区在线视频| 久久九九久久九九| 一区二区三区四区中文字幕| 麻豆一区二区三| av电影在线观看不卡| 日韩欧美一区二区视频| 欧美国产综合色视频| 天天影视网天天综合色在线播放| 韩国女主播成人在线| 色综合久久综合| 欧美电影免费观看高清完整版| 18涩涩午夜精品.www| 精品亚洲porn| 欧美主播一区二区三区| 久久久噜噜噜久久人人看 | 日韩一区中文字幕| 蜜臀av在线播放一区二区三区| 国产一区二区影院| 欧美日韩成人综合在线一区二区| 久久久久久久久一| 免费一区二区视频| 日本黄色一区二区| 日本一二三不卡| 免费观看一级特黄欧美大片| 色屁屁一区二区| 国产欧美一区二区精品性色| 视频在线观看一区二区三区| 93久久精品日日躁夜夜躁欧美| 欧美va日韩va| 五月激情丁香一区二区三区| va亚洲va日韩不卡在线观看| 精品国产一区二区三区久久影院 | 日本中文字幕一区二区视频| 91免费国产在线观看| 国产精品网站在线观看| 国产一区二区三区综合| 欧美一区二区私人影院日本| 一区二区三区久久久| av资源网一区| 国产欧美日韩综合| 国产一区二区免费在线| 日韩一区二区免费在线观看| 亚洲妇女屁股眼交7| 国产精一品亚洲二区在线视频| 91精品国产一区二区人妖| 一区二区三区四区不卡视频| 丁香亚洲综合激情啪啪综合| 久久婷婷综合激情| 韩国av一区二区三区| 精品av久久707| 免费av网站大全久久| 制服丝袜日韩国产| 午夜视频久久久久久| 欧美性猛片xxxx免费看久爱| 亚洲影视在线播放| 欧美视频在线观看一区| 一区2区3区在线看| 欧美影院一区二区| 亚洲午夜久久久久久久久电影网| 色婷婷综合激情| 亚洲福利一二三区| 91精品国产91热久久久做人人 | 久久久精品免费观看| 国产精品538一区二区在线| 久久久久国产精品人| 高清在线观看日韩| 中文字幕欧美一| 在线一区二区视频| 天天色综合天天| 日韩视频一区二区三区| 久久激情五月婷婷| 日本一区二区免费在线观看视频| 成人精品免费视频| 一区二区在线电影| 欧美一区二区女人| 国产精品综合二区| 国产精品久久久久婷婷二区次| 99久久精品免费精品国产| 亚洲一级在线观看| 日韩欧美区一区二| 成人午夜私人影院| 亚洲一二三四久久| 欧美精品一区二区三区很污很色的| 国产传媒久久文化传媒| 亚洲靠逼com| 日韩午夜在线观看| www.久久精品| 免费成人在线播放| 国产精品国产三级国产有无不卡| 欧美午夜精品理论片a级按摩| 看电影不卡的网站|