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

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

?? inline.c

?? nVidia開發的圖形語言 Cg
?? C
?? 第 1 頁 / 共 2 頁
字號:
/****************************************************************************\
Copyright (c) 2002, NVIDIA Corporation.

NVIDIA Corporation("NVIDIA") supplies this software to you in
consideration of your agreement to the following terms, and your use,
installation, modification or redistribution of this NVIDIA software
constitutes acceptance of these terms.  If you do not agree with these
terms, please do not use, install, modify or redistribute this NVIDIA
software.

In consideration of your agreement to abide by the following terms, and
subject to these terms, NVIDIA grants you a personal, non-exclusive
license, under NVIDIA's copyrights in this original NVIDIA software (the
"NVIDIA Software"), to use, reproduce, modify and redistribute the
NVIDIA Software, with or without modifications, in source and/or binary
forms; provided that if you redistribute the NVIDIA Software, you must
retain the copyright notice of NVIDIA, this notice and the following
text and disclaimers in all such redistributions of the NVIDIA Software.
Neither the name, trademarks, service marks nor logos of NVIDIA
Corporation may be used to endorse or promote products derived from the
NVIDIA Software without specific prior written permission from NVIDIA.
Except as expressly stated in this notice, no other rights or licenses
express or implied, are granted by NVIDIA herein, including but not
limited to any patent rights that may be infringed by your derivative
works or by other works in which the NVIDIA Software may be
incorporated. No hardware is licensed hereunder. 

THE NVIDIA SOFTWARE IS BEING PROVIDED ON AN "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED,
INCLUDING WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF TITLE,
NON-INFRINGEMENT, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
ITS USE AND OPERATION EITHER ALONE OR IN COMBINATION WITH OTHER
PRODUCTS.

IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT,
INCIDENTAL, EXEMPLARY, CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, LOST PROFITS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) OR ARISING IN ANY WAY
OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE
NVIDIA SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT,
TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF
NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\****************************************************************************/
// inline.c
//

#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#include "slglobals.h"

struct InlineFunData_Rec {
    Scope *superGlobalScope;
    Scope *globalScope;
    Scope *masterScope;
    Scope *calleeScope;
    int *nextFunInlineIndex;
    int *nextTempIndex;
    int funInlineIndex;
    int funIndex;
    StmtList statements;
    void *scratch;
};

static void AddComment(InlineFunData *fFunData, SourceLoc *loc, const char *str)
{
    stmt *lStmt;

    lStmt = (stmt *) NewCommentStmt(Cg->pLastSourceLoc, str);
    AppendStatements(&fFunData->statements, lStmt);
} // AddComment

static stmt *DuplicateStatementTree(stmt *fStmt)
{
    stmt *lStmt, *mStmt, *nStmt, *pStmt, *headStmt, *lastStmt;
    expr *lExpr;

    headStmt = NULL;
    while (fStmt) {
        switch (fStmt->commonst.kind) {
        case EXPR_STMT:
            lExpr = DupExpr(fStmt->exprst.exp);
            lStmt = (stmt *) NewExprStmt(&fStmt->commonst.loc, lExpr);
            break;
        case IF_STMT:
            lExpr = DupExpr(fStmt->ifst.cond);
            mStmt = DuplicateStatementTree(fStmt->ifst.thenstmt);
            nStmt = DuplicateStatementTree(fStmt->ifst.elsestmt);
            lStmt = (stmt *) NewIfStmt(&fStmt->commonst.loc, lExpr, mStmt, nStmt);
            break;
        case WHILE_STMT:
        case DO_STMT:
            lExpr = DupExpr(fStmt->whilest.cond);
            mStmt = DuplicateStatementTree(fStmt->whilest.body);
            lStmt = (stmt *) NewWhileStmt(&fStmt->commonst.loc, fStmt->whilest.kind, lExpr, mStmt);
            break;
        case FOR_STMT:
            mStmt = DuplicateStatementTree(fStmt->forst.init);
            lExpr = DupExpr(fStmt->forst.cond);
            nStmt = DuplicateStatementTree(fStmt->forst.step);
            pStmt = DuplicateStatementTree(fStmt->forst.body);
            lStmt = (stmt *) NewForStmt(&fStmt->commonst.loc, mStmt, lExpr, nStmt, pStmt);
            break;
        case BLOCK_STMT:
            mStmt = DuplicateStatementTree(fStmt->blockst.body);
            lStmt = (stmt *) NewBlockStmt(&fStmt->commonst.loc, mStmt);
            break;
        case RETURN_STMT:
            lExpr = DupExpr(fStmt->exprst.exp);
            lStmt = (stmt *) NewReturnStmt(&fStmt->commonst.loc, NULL, lExpr);
            break;
        case DISCARD_STMT:
            lExpr = DupExpr(fStmt->discardst.cond);
            lStmt = (stmt *) NewDiscardStmt(&fStmt->commonst.loc, lExpr);
            break;
        case COMMENT_STMT:
            lStmt = (stmt *) NewCommentStmt(&fStmt->commonst.loc,
                                            GetAtomString(atable, fStmt->commentst.str));
            break;
        default:
            lStmt = fStmt;
            assert(!"DuplicateStatementTree() - not yet finished");
            break;
        }
        if (headStmt) {
            lastStmt->commonst.next = lStmt;
        } else {
            headStmt = lStmt;
        }
        lastStmt = lStmt;
        fStmt = fStmt->commonst.next;
    }
    return headStmt;
} // DuplicateStatementTree

/*
 * ConvertReturnStatement() - Convert return statements into assignments.
 *
 */

static stmt *ConvertReturnStatement(stmt *fStmt, void *arg1, int arg2)
{
    stmt *lStmt;
    Symbol *retSymb;
    expr *lExpr;

    if (fStmt) {
        switch (fStmt->commonst.kind) {
        case RETURN_STMT:
            if (arg1) {
                retSymb = (Symbol *) arg1;
                lExpr = (expr *) NewSymbNode(VARIABLE_OP, retSymb);
                lStmt = NewSimpleAssignmentStmt(Cg->pLastSourceLoc, lExpr, fStmt->exprst.exp, 1);
            } else {
                lStmt = NULL;
            }
            break;
        default:
            lStmt = fStmt;
            break;
        }
    } else {
        lStmt = NULL;
    }
    return lStmt;
} // ConvertReturnStatement

#define NOT_DUPLICATED          0
#define ALREADY_DUPLICATED      1
#define IN_MASTER_SCOPE         2
#define IN_GLOBAL_SCOPE         3
#define IN_SUPER_GLOBAL_SCOPE   4

/*
 * ConvertLocalReferences() - Convert return statements into assignments.  Assume that this
 *         can be done in place since we're working with a copy of the original symb structs.
 *
 */

static expr *ConvertLocalReferences(expr *fExpr, void *arg1, int arg2)
{
    InlineFunData *lFunData = (InlineFunData *) arg1;
    expr *lExpr = fExpr;
    Symbol *lSymb, *nSymb;
    Type *lType;
    int qualifiers;
    int name;

    lExpr = fExpr;
    if (fExpr) {
        switch (fExpr->common.kind) {
        case SYMB_N:
            lSymb = lExpr->sym.symbol;
            if (fExpr->sym.op == VARIABLE_OP && lSymb->kind == VARIABLE_S) {
                switch (lSymb->flags) {
                case NOT_DUPLICATED:
                    name = GetNumberedAtom(GetAtomString(atable, lSymb->name), lFunData->funInlineIndex, 4, '-');
                    if (LookUpLocalSymbol(lFunData->masterScope, name)) {
                        InternalError(Cg->pLastSourceLoc, 9999, "Name \"%s\"-%04d shouldn't be defined, but is!",
                                      GetAtomString(atable, lSymb->name), lFunData->funInlineIndex);
                        if (Cg->options.DumpParseTree) {
                            InternalError(Cg->pLastSourceLoc, 9999, "*** Scope %d definitions ***",
                                          lFunData->masterScope->level);
                            PrintSymbolTree(lFunData->masterScope->symbols);
                            InternalError(Cg->pLastSourceLoc, 9999, "*** End of Scope %d ***",
                                          lFunData->masterScope->level);
                        }
                    }
                    // Remove qualifiers if any present:
                    lType = lSymb->type;
                    qualifiers = GetQualifiers(lType);
                    if (qualifiers) {
                        lType = DupType(lType);
                        ClearTypeMisc(lType, TYPE_QUALIFIER_MASK);
                    }
                    nSymb = DefineVar(&lSymb->loc, lFunData->masterScope, name, lType);
                    nSymb->properties = lSymb->properties;
                    nSymb->flags = IN_MASTER_SCOPE;
                    lSymb->tempptr = (void *) nSymb;
                    lSymb->flags = ALREADY_DUPLICATED;
                    break;
                case IN_MASTER_SCOPE:
                case IN_GLOBAL_SCOPE:
                case IN_SUPER_GLOBAL_SCOPE:
                    nSymb = lSymb;
                    break;
                case ALREADY_DUPLICATED:
                    nSymb = (Symbol *) lSymb->tempptr;
                    break;
                default:
                    FatalError("Bad scope in ConvertLocalReferences()");
                    break;
                }
                lExpr->sym.symbol = nSymb;
            }
            break;
        case CONST_N:
        case UNARY_N:
        case BINARY_N:
        case TRINARY_N:
            break;
        case DECL_N:
        default:
            assert(!"bad kind to ConvertLocalReferences()");
            break;
        }
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
调教+趴+乳夹+国产+精品| 日韩精品久久久久久| 日韩美女久久久| 国产精品你懂的| 久久精品国产精品青草| 欧美午夜精品久久久久久超碰| 国产欧美精品一区| 另类小说图片综合网| 欧美精品久久一区二区三区| 亚洲女人小视频在线观看| 国产999精品久久久久久绿帽| 欧美一区二区三区不卡| 亚洲18女电影在线观看| 色综合 综合色| 最新高清无码专区| gogo大胆日本视频一区| 欧美激情一区二区三区蜜桃视频| 久久精品国产999大香线蕉| 91精品国产欧美一区二区 | 在线观看网站黄不卡| 国产女主播视频一区二区| 国产一区欧美一区| 精品国产一二三区| 日韩高清欧美激情| 亚洲电影一区二区| av高清不卡在线| 久久婷婷一区二区三区| 开心九九激情九九欧美日韩精美视频电影| av不卡一区二区三区| 国产精品青草综合久久久久99| 国产99久久久精品| 国产精品毛片无遮挡高清| av资源网一区| 亚洲理论在线观看| 91福利在线免费观看| 亚洲成a人v欧美综合天堂| 欧美日韩1234| 国模无码大尺度一区二区三区 | 丁香婷婷综合网| 国产欧美久久久精品影院| 粉嫩蜜臀av国产精品网站| 国产精品毛片久久久久久久| 国产片一区二区三区| 青娱乐精品视频在线| 欧美刺激脚交jootjob| 激情文学综合丁香| 日本一区二区高清| 欧美性生活一区| 免费在线看一区| 中文字幕成人在线观看| 色哦色哦哦色天天综合| 亚洲福利视频一区| 亚洲精品一区二区三区99| jlzzjlzz亚洲日本少妇| 婷婷中文字幕综合| 久久综合久久综合亚洲| 色综合久久中文综合久久牛| 午夜精品福利久久久| 久久久精品蜜桃| 欧美性受极品xxxx喷水| 国产一区二区三区最好精华液| 中文字幕一区二区三区在线播放| 欧美日韩综合色| 东方欧美亚洲色图在线| 婷婷开心久久网| 国产精品伦理一区二区| 欧美一区二区性放荡片| 东方欧美亚洲色图在线| 青青草91视频| 亚洲视频小说图片| 久久精品一二三| 在线成人免费观看| 99久久久久久99| 国产麻豆91精品| 天天综合日日夜夜精品| 亚洲婷婷在线视频| 精品久久人人做人人爱| 欧美视频一区二| 成人av在线播放网站| 看国产成人h片视频| 亚洲国产精品视频| 亚洲欧美日韩久久精品| 久久久久久久免费视频了| 欧美日韩国产bt| 色哦色哦哦色天天综合| 成人黄色在线视频| 国内久久婷婷综合| 毛片一区二区三区| 亚洲综合在线电影| 日韩毛片精品高清免费| 久久婷婷国产综合国色天香 | 亚洲国产精品一区二区www| 国产欧美日韩激情| 精品国产露脸精彩对白| 制服视频三区第一页精品| 欧洲一区在线电影| 色婷婷国产精品久久包臀| 成人国产视频在线观看| 国产成人精品三级| 国产精品综合av一区二区国产馆| 日本不卡视频在线| 日韩影院在线观看| 婷婷丁香久久五月婷婷| 亚洲成人三级小说| 日韩主播视频在线| 日韩vs国产vs欧美| 日产国产欧美视频一区精品| 婷婷丁香久久五月婷婷| 日韩精品欧美精品| 亚洲午夜av在线| 爽爽淫人综合网网站| 视频一区在线视频| 麻豆精品一区二区综合av| 麻豆国产精品一区二区三区| 老司机精品视频在线| 激情成人午夜视频| 国产sm精品调教视频网站| 成人av一区二区三区| 99r国产精品| 欧美午夜一区二区三区免费大片| 欧美性xxxxxxxx| 欧美一级久久久久久久大片| 日韩精品一区二区三区老鸭窝| 欧美成人vps| 欧美激情一区二区三区| 亚洲特黄一级片| 亚洲一区二区在线播放相泽| 日本特黄久久久高潮| 国模一区二区三区白浆| 成人av网址在线| 欧洲另类一二三四区| 日韩精品一区二区三区在线观看| 久久久精品黄色| 亚洲婷婷在线视频| 日本伊人色综合网| 高潮精品一区videoshd| 色综合久久久久综合99| 欧美一二三四区在线| 欧美国产国产综合| 亚洲一区二区三区国产| 寂寞少妇一区二区三区| 91色porny在线视频| 777午夜精品视频在线播放| 久久精品视频一区二区三区| 亚洲另类春色国产| 久久国产综合精品| 色一情一伦一子一伦一区| 日韩免费成人网| 亚洲欧美一区二区久久| 蜜桃视频一区二区| 一本久久a久久精品亚洲| 欧美刺激午夜性久久久久久久| 中文字幕永久在线不卡| 另类的小说在线视频另类成人小视频在线| 国产乱码精品1区2区3区| 在线观看免费亚洲| 欧美国产日本韩| 免费看精品久久片| 在线国产电影不卡| 国产欧美日韩不卡| 日本怡春院一区二区| 色婷婷精品大视频在线蜜桃视频| 2014亚洲片线观看视频免费| 亚洲一区二区三区四区的| 国产精品亚洲一区二区三区妖精 | 99精品桃花视频在线观看| 欧美一区二区三区啪啪| 日韩伦理电影网| 国产丶欧美丶日本不卡视频| 91精品国产一区二区人妖| 亚洲人123区| 成人手机电影网| 欧美精品一区二| 免费人成黄页网站在线一区二区| 欧美在线不卡一区| 亚洲三级视频在线观看| 国产成人激情av| 久久久国产精华| 国产麻豆视频一区二区| 日韩欧美专区在线| 日韩av电影免费观看高清完整版 | 欧美综合一区二区三区| 欧美激情综合在线| 国产一区二区三区精品欧美日韩一区二区三区 | 激情五月激情综合网| 欧美精品亚洲一区二区在线播放| 亚洲综合久久久| 欧美少妇xxx| 亚洲一区二区在线观看视频| 91网站视频在线观看| 国产精品视频一二三区| 岛国av在线一区| 国产精品久久99| a在线欧美一区| 中文字幕一区二区日韩精品绯色| 成人污污视频在线观看| 中文字幕中文在线不卡住| 99re66热这里只有精品3直播| 成人欧美一区二区三区黑人麻豆| 北条麻妃一区二区三区|