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

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

?? compile.c

?? nVidia開發的圖形語言 Cg
?? C
?? 第 1 頁 / 共 5 頁
字號:
/****************************************************************************\
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.
\****************************************************************************/

//
// compile.c
//

// In a cygnus tools window in the "gen" directory, run the following command:
//
// bison parser.y --defines -output ../src/parser.c --verbose

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

#include "slglobals.h"

/*
 * OpenOutputFile()
 *
 */

int OpenOutputFile(void)
{
    if (Cg->options.outputFileName) {
        Cg->options.outfd = fopen(Cg->options.outputFileName, "w");
        if (Cg->options.outfd) {
            Cg->options.OutputFileOpen = 1;
        } else {
            FatalError("Can't open output file \"%s\"", Cg->options.outputFileName);
            return 0;
        }
    } else {
        Cg->options.outfd = stdout;
        Cg->options.OutputFileOpen = 1;
    }
    Cg->theHAL->PrintCodeHeader(Cg->options.outfd);
    fprintf(Cg->options.outfd, "%s cgc version %d.%d.%04d%s, build date %s  %s\n", Cg->theHAL->comment,
            HSL_VERSION, HSL_SUB_VERSION, HSL_SUB_SUB_VERSION, NDA_STRING, Build_Date, Build_Time);
    return 1;
} // OpenOutputFile

/*
 * OpenListFile()
 *
 */

int OpenListFile(void)
{
    if (Cg->options.listFileName) {
        Cg->options.listfd = fopen(Cg->options.listFileName, "w");
        if (Cg->options.listfd) {
            Cg->options.ListFileOpen = 1;
        } else {
            FatalError("Can't open listing file \"%s\"", Cg->options.listFileName);
            return 0;
        }
    } else {
        Cg->options.listfd = stdout;
    }
    if (Cg->options.ListFileOpen) {
        fprintf(Cg->options.listfd, "%s cgc version %d.%d.%04d%s, build date %s  %s\n", Cg->theHAL->comment,
                HSL_VERSION, HSL_SUB_VERSION, HSL_SUB_SUB_VERSION, NDA_STRING, Build_Date, Build_Time);
    }
    return 1;
} // OpenListFile

/*
 * PrintOptions()
 *
 */

void PrintOptions(int argc, char **argv)
{
    int ii;

    if (argc > 1) {
        fprintf(Cg->options.outfd, "%s command line args:", Cg->theHAL->comment);
        for (ii = 1; ii < argc; ii++)
            fprintf(Cg->options.outfd, " %s", argv[ii]);
        fprintf(Cg->options.outfd, "\n");
    }
} // PrintOptions

/*
 * CloseOutputFiles()
 *
 */

int CloseOutputFiles(const char *mess)
{
    if (Cg->options.OutputFileOpen) {
        if (!Cg->options.ListFileOpen)
            fprintf(Cg->options.outfd, "%s %s\n", Cg->theHAL->comment, mess);
        Cg->options.OutputFileOpen = 0;
        if (fclose(Cg->options.outfd)) {
            FatalError("Error closing output file.");
            return 0;
        }
    }
    if (Cg->options.ListFileOpen) {
        fprintf(Cg->options.listfd, "%s %s\n", Cg->theHAL->comment, mess);
        Cg->options.ListFileOpen = 0;
        if (fclose(Cg->options.listfd)) {
            FatalError("Error closing listing file.");
            return 0;
        }
    }
    return 1;
} // CloseOutputFiles

///////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////// Misc Support Functions: ///////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////

/*
 * HasNumericSuffix() - See if there is a numeric suffix on a string.  If so, strip it off and
 *         retrun the value as an integer.
 */

int HasNumericSuffix(const char *fStr, char *root, int size, int *suffix)
{
    int val, HasSuffix, len, scale;
    char *s, ch;

    strncpy(root, fStr, size - 1);
    len = strlen(fStr);
    if (len >= size)
        len = size - 1;
    root[len] = 0;
    val = 0;
    HasSuffix = 0;
    scale = 1;
    s = &root[len];
    while (1) {
        ch = *--s;
        if (ch >= '0' && ch <= '9' && s >= root) {
            val = val + scale*(ch - '0');
            scale *= 10;
            HasSuffix = 1;
        } else {
            break;
        }
    }
    s[1] = '\0';
    *suffix = val;
    return HasSuffix;
} // HasNumericSuffix

///////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////// Analysis and Code Generation Control Functions ///////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////

/*
 * SetSymbolFlags() - Set the flags field for all symbols in this tree.
 *
 */

void SetSymbolFlags(Symbol *fSymb, int fVal)
{
    if (fSymb) {
        fSymb->flags = fVal;
        SetSymbolFlags(fSymb->left, fVal);
        SetSymbolFlags(fSymb->right, fVal);
    }
} // SetSymbolFlags

/*
 * SetSymbolFlagsList() - Walk a list of scopes and set the flags field for all symbols.
 *
 */

void SetSymbolFlagsList(Scope *fScope, int fVal)
{
    while (fScope) {
        SetSymbolFlags(fScope->symbols, fVal);
        fScope = fScope->next;
    }
} // SetSymbolFlagsList

///////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////// Various Utility Functions //////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////

/*
 * GetNumberedAtom() - Create an atom with the given root string and a numbered suffix.
 */

int GetNumberedAtom(const char *root, int number, int digits, char ch)
{
    char str[256], *s;
    int vname, len;

    strcpy(str, root);
    len = strlen(str);
    if (ch != '\0') {
        str[len] = ch;
        len++;
    }
    s = &str[len + digits];
    *s = '\0';
    while (digits-- > 0) {
        *--s = '0' + number % 10;
        number /= 10;
    }
    vname = AddAtom(atable, str);
    return vname;
} // GetNumberedAtom

/*
 * GetVarExprName() - Return a string representation of the variable described by fExpr.
 */

int GetVarExprName(char *str, int size, expr *fExpr)
{
    const char *name;
    int len = 0, len2;

    *str = '\0';
    switch (fExpr->common.kind) {
    case SYMB_N:
        switch (fExpr->sym.op) {
        case VARIABLE_OP:
        case MEMBER_OP:
            name = GetAtomString(atable, fExpr->sym.symbol->name);
            len2 = strlen(name);
            if (len2 >= size)
                len2 = size - 1;
            len += len2;
            while (len2--)
                *str++ = *name++;
            *str = '\0';
            break;
        }
        break;
    case BINARY_N:
        // Put struct.member code here:
        break;
    }
    return len;
} // GetVarExprName

/*
 * GenerateIndexName() - Create an atom with the given root string representing the variable
 *         by fExpr and a numbered suffix for the index.
 */
int GenerateIndexName(expr *fExpr, int index)
{
    char str[256];
    int vname;

    GetVarExprName(str, 256, fExpr);
    vname = GetNumberedAtom(str, index, 1, '$');
    return vname;
} // GenerateIndexeName

/*
 * ConcatStmts() - Concatenate two lists of statements.
 *
 */

stmt *ConcatStmts(stmt *first, stmt *last)
{
    stmt *lStmt;

    if (first) {
        if (last) {
            lStmt = first;
            while (lStmt->commonst.next)
                lStmt = lStmt->commonst.next;
            lStmt->commonst.next = last;
        }
        return first;
    } else {
        return last;
    }
} // ConcatStmts

/*
 * AppendStatements() - Append a list of statements to the end of another list.
 *
 */

void AppendStatements(StmtList *fStatements, stmt *fStmt)
{
    if (fStmt) {
        if (fStatements->first) {
            fStatements->last->commonst.next = fStmt;
        } else {
            fStatements->first = fStmt;
        }
        while (fStmt->commonst.next)
            fStmt = fStmt->commonst.next;
        fStatements->last = fStmt;
    }
} // AppendStatements

///////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////// Expression Functions ////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////

/*
 * GenSymb() - Create a node that references a symbol.
 *
 */

expr *GenSymb(Symbol *fSymb)
{
    expr *lExpr;

    lExpr = (expr *) NewSymbNode(VARIABLE_OP, fSymb);
    return lExpr;
} // GenSymb

/*
 * GenMember() - Create a node that references a member of a struct or connector.
 *
 */

expr *GenMember(Symbol *fSymb)
{
    expr *lExpr;

    lExpr = (expr *) NewSymbNode(MEMBER_OP, fSymb);
    return lExpr;
} // GenMember

/*
 * GenMemberSelector() - Create a node that references a member of a struct or connector.
 *
 */

expr *GenMemberSelector(expr *sExpr, expr *mExpr)
{
    expr *lExpr;

    lExpr = (expr *) NewBinopNode(MEMBER_SELECTOR_OP, sExpr, mExpr);
    lExpr->common.type = mExpr->common.type;
    return lExpr;
} // GenMemberSelector

/*
 * GenMemberReference() - Build an expression to reference a member of a struct.
 *
 */

expr *GenMemberReference(expr *sExpr, Symbol *mSymb)
{
    expr *lExpr, *mExpr;

   // sExpr = (expr *) NewSymbNode(VARIABLE_OP, sSymb);
    mExpr = (expr *) NewSymbNode(MEMBER_OP, mSymb);
    lExpr = (expr *) NewBinopNode(MEMBER_SELECTOR_OP, sExpr, mExpr);
    lExpr->common.type = mExpr->common.type;
    lExpr->common.IsLValue = 1;
    lExpr->common.IsConst = (GetQualifiers(lExpr->common.type) & TYPE_QUALIFIER_CONST) != 0;
    return lExpr;
} // GenMemberReference

/*
 * GenVecIndex() - Create a vector index node.
 *
 */

expr *GenVecIndex(expr *vexpr, expr *xexpr, int base, int len, int len2)
{
    expr *lExpr;

    lExpr = (expr *) NewBinopNode(ARRAY_INDEX_OP, vexpr, xexpr);
    lExpr->bin.type = GetStandardType(base, 0, 0);
    return lExpr;
} // GenVecIndex

/*
 * GenMatIndex() - Create a matrix index node.
 *
 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美日韩综合aⅴ视频| 欧美草草影院在线视频| 亚洲色图在线视频| 色婷婷国产精品| 亚洲成人777| 91精品国产综合久久香蕉的特点 | 日韩中文欧美在线| 欧美裸体一区二区三区| 狠狠网亚洲精品| 国产精品成人免费| 欧美日韩免费观看一区三区| 天天av天天翘天天综合网色鬼国产| 欧美精三区欧美精三区| 国产一区二区福利| 亚洲男同1069视频| 日韩一区二区三区高清免费看看| 国产综合色在线| 亚洲男人的天堂在线观看| 欧美日韩不卡在线| 国产在线播放一区| 一个色在线综合| 亚洲精品一区二区三区在线观看| 成人国产免费视频| 偷拍亚洲欧洲综合| 国产精品无人区| 欧美色倩网站大全免费| 国产精品一二一区| 五月天激情综合| 欧美激情一区二区| 欧美日韩高清不卡| 国产成a人无v码亚洲福利| 亚洲高清一区二区三区| 日韩午夜小视频| 97久久久精品综合88久久| 美女视频黄频大全不卡视频在线播放| 国产三级精品三级在线专区| 欧美日韩美少妇| 成人国产亚洲欧美成人综合网| 视频一区二区中文字幕| 亚洲欧美综合网| 日韩精品一区二区三区在线播放 | 亚洲国产日韩a在线播放| 久久久久久麻豆| 欧美日韩成人综合| 91亚洲精品一区二区乱码| 日韩av在线发布| 最近中文字幕一区二区三区| 精品国产乱码久久久久久免费| 一本色道综合亚洲| 懂色av一区二区夜夜嗨| 久久成人免费电影| 亚洲欧美另类久久久精品| 久久影视一区二区| 日韩欧美国产精品| 欧美丰满美乳xxx高潮www| 91在线免费看| 国产成人8x视频一区二区| 免费看日韩精品| 国产成a人无v码亚洲福利| 日韩精品久久理论片| 亚洲午夜三级在线| 综合激情成人伊人| 国产精品久久久久久久久果冻传媒 | 欧美性猛交xxxxxx富婆| 波多野结衣一区二区三区 | 亚洲午夜在线电影| 亚洲免费在线电影| 国产精品国产三级国产普通话99| 精品奇米国产一区二区三区| 欧美裸体一区二区三区| 欧美在线免费观看亚洲| 日本福利一区二区| 欧美在线一二三| 欧美少妇一区二区| 欧美探花视频资源| 欧美日韩免费视频| 91.com视频| 欧美一区二区三区免费| 欧美一级午夜免费电影| 日韩一区二区三区在线观看| 日韩欧美电影在线| 精品国产乱码久久久久久蜜臀| 6080yy午夜一二三区久久| 欧美浪妇xxxx高跟鞋交| 欧美一区二区视频网站| 日韩美女天天操| 精品国产乱码久久久久久久久| 国产亚洲精品资源在线26u| 久久精品视频一区二区| 国产欧美一区二区精品性色超碰 | 一区二区三区精品| 亚洲成人久久影院| 老司机免费视频一区二区三区| 激情综合色播激情啊| 懂色中文一区二区在线播放| 97se亚洲国产综合自在线观| 欧美三级欧美一级| 日韩一区二区三区四区五区六区| 精品福利一区二区三区| 中文乱码免费一区二区| 亚洲美女精品一区| 日韩国产高清在线| 国产精品自在在线| 色欲综合视频天天天| 日韩一区二区三区免费看 | 一区二区三区中文在线| 亚洲va中文字幕| 久久99国产精品久久| 成人在线一区二区三区| 欧美男女性生活在线直播观看| 精品粉嫩超白一线天av| 国产精品白丝在线| 日本不卡1234视频| 成人av电影观看| 欧美日本一区二区| 国产欧美日韩中文久久| 亚洲自拍偷拍网站| 国产一区三区三区| 在线观看网站黄不卡| 精品国产99国产精品| 亚洲男同1069视频| 狠狠色丁香久久婷婷综合丁香| 色综合色综合色综合| 欧美精品一区二区三区在线| 一区二区三区在线视频免费| 久久精品久久精品| 91视频观看免费| 精品国产一区二区三区av性色| 欧美国产日本韩| 理论电影国产精品| 欧美性大战久久| 国产日韩欧美精品综合| 无码av中文一区二区三区桃花岛| 成人三级伦理片| 日韩欧美高清一区| 亚洲动漫第一页| av在线不卡观看免费观看| 日韩欧美在线一区二区三区| 亚洲精品视频在线观看免费| 国内精品免费**视频| 欧美另类videos死尸| 一区二区在线观看av| 国产黄色成人av| 日韩欧美的一区二区| 亚洲国产精品一区二区久久恐怖片| 国产综合成人久久大片91| 777午夜精品免费视频| 亚洲图片欧美一区| 色一情一乱一乱一91av| 日本一二三不卡| 国产原创一区二区| 精品国产一二三区| 免费观看久久久4p| 在线成人av网站| 亚洲成人1区2区| 欧美午夜在线观看| 亚洲精品久久嫩草网站秘色| 成人三级伦理片| 国产精品青草久久| 成人综合在线观看| 国产精品久久久久影院| 国产麻豆视频精品| 久久精品一二三| 国产精品香蕉一区二区三区| 精品久久久久久久久久久久久久久久久 | 18成人在线视频| 成人涩涩免费视频| 中文字幕在线免费不卡| 成人av在线影院| 中文字幕一区二区5566日韩| 成人国产精品免费| 1000部国产精品成人观看| 91在线观看高清| 亚洲欧美日韩系列| 91免费看`日韩一区二区| 一区二区三区中文字幕精品精品 | 欧美日韩成人一区二区| 午夜精品在线视频一区| 69堂成人精品免费视频| 麻豆91在线播放| 久久影院午夜片一区| 高清成人在线观看| 亚洲精品国产无套在线观| 欧美三电影在线| 日本中文字幕一区二区视频| 日韩精品在线看片z| 国产a区久久久| 1024亚洲合集| 91麻豆精品国产自产在线| 国产中文字幕精品| 亚洲特级片在线| 欧美三级在线看| 精品中文av资源站在线观看| 国产精品无码永久免费888| 一本大道综合伊人精品热热 | 国产美女一区二区| 亚洲视频综合在线| 日韩一区二区电影在线| 丰满亚洲少妇av| 亚洲高清免费在线|