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

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

?? tokens.c

?? 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.
\****************************************************************************/
// tokens.c
//

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

#include "slglobals.h"

///////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////// Preprocessor and Token Recorder and Playback: ////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////

/*
 * idstr()
 * Copy a string to a malloc'ed block and convert it into something suitable
 * for an ID
 *
 */

char *idstr(const char *fstr)
{
    size_t len;
    char *str, *t;
    const char *f;

    len = strlen(fstr);
    str = (char *) malloc(len + 1);
    for (f=fstr, t=str; *f; f++) {
        if (isalnum(*f)) *t++ = *f;
        else if (*f == '.' || *f == '/') *t++ = '_';
    }
    *t = 0;
    return str;
} // idstr

/*
 * lCompressToken() -  Rename a token so that most will fit in one byte.
 *
 */

static int lCompressToken(int token)
{
    return token;
} // lCompressToken

/*
 * lExpandToken() -  Expand a token into what the scanner wants.
 *
 */

static int lExpandToken(int token)
{
    return token;
} // lExpandToken

/*
 * lNewBlock()
 *
 */

static TokenBlock *lNewBlock(TokenStream *fTok)
{
    TokenBlock *lBlock;

    lBlock = (TokenBlock *) malloc(sizeof(TokenBlock) + 256);
    lBlock->count = 0;
    lBlock->current = 0;
    lBlock->data = (unsigned char *) lBlock + sizeof(TokenBlock);
    lBlock->max = 256;
    lBlock->next = NULL;
    if (fTok->head) {
        fTok->current->next = lBlock;
    } else {
        fTok->head = lBlock;
    }
    fTok->current = lBlock;
    return lBlock;
} // lNewBlock

/*
 * lAddByte()
 *
 */

static void lAddByte(TokenStream *fTok, unsigned char fVal)
{
    TokenBlock *lBlock;

    lBlock = fTok->current;
    if (lBlock->count >= lBlock->max)
        lBlock = lNewBlock(fTok);
    lBlock->data[lBlock->count++] = fVal;
} // lAddByte

/*
 * lAdd4Bytes()
 *
 */

static void lAdd4Bytes(TokenStream *fTok, unsigned char *fVal)
{
    TokenBlock *lBlock;
    unsigned char *pc;

    lBlock = fTok->current;
    if (lBlock->count + 4 > lBlock->max)
        lBlock = lNewBlock(fTok);
    pc = &lBlock->data[lBlock->count];
    lBlock->count += 4;
    pc[0] = fVal[0];
    pc[1] = fVal[1];
    pc[2] = fVal[2];
    pc[3] = fVal[3];
} // lAdd4Bytes

/*
 * lReadByte() - Get the next byte from a stream.
 *
 */

static int lReadByte(TokenStream *pTok)
{
    TokenBlock *lBlock;
    int lval = -1;

    lBlock = pTok->current;
    if (lBlock) {
        if (lBlock->current >= lBlock->count) {
            lBlock = lBlock->next;
            if (lBlock)
                lBlock->current = 0;
            pTok->current = lBlock;
        }
        if (lBlock)
            lval = lBlock->data[lBlock->current++];
    }
    return lval;
} // lReadByte

/*
 * lRead4Bytes()
 *
 */

static void lRead4Bytes(TokenStream *fTok, unsigned char *fVal)
{
    fVal[0] = (unsigned char ) lReadByte(fTok);
    fVal[1] = (unsigned char ) lReadByte(fTok);
    fVal[2] = (unsigned char ) lReadByte(fTok);
    fVal[3] = (unsigned char ) lReadByte(fTok);
} // lRead4Bytes

/////////////////////////////////////// Global Functions://////////////////////////////////////

/*
 * InitTokenStreams()
 *
 */

int InitTokenStreams(CgStruct *Cg)
{
    return 1;
} // InitTokenStreams

/*
 * NewTokenStream()
 *
 */

TokenStream *NewTokenStream(const char *name)
{
    TokenStream *pTok;

    pTok = (TokenStream *) malloc(sizeof(TokenStream));
    pTok->next = NULL;
    pTok->name = idstr(name);
    pTok->head = NULL;
    pTok->current = NULL;
    lNewBlock(pTok);
    return pTok;
} // NewTokenStream

/*
 * DeleteTokenStream()
 *
 */

void DeleteTokenStream(TokenStream *pTok)
{
    TokenBlock *pBlock, *nBlock;

    if (pTok) {
        pBlock = pTok->head;
        while (pBlock) {
            nBlock = pBlock->next;
            free(pBlock);
            pBlock = nBlock;
        }
        if (pTok->name)
            free(pTok->name);
        free(pTok);
    }
} // DeleteTokenStream

/*
 * RecordToken() - Add a token to the end of a list for later playback or printout.
 *
 */

void RecordToken(TokenStream *pTok, int token)
{
    const char *s;

    // token = lCompressToken(token);
    if (token > 256)
        lAddByte(pTok, (unsigned char)((token & 0x7f) + 0x80));
    else
        lAddByte(pTok, (unsigned char)(token & 0x7f));
    switch (token) {
    case IDENT_SY:
    case TYPEIDENT_SY:
    case STRCONST_SY:
        s = GetAtomString(atable, yylval.sc_ident);
        while (*s)
            lAddByte(pTok, (unsigned char) *s++);
        lAddByte(pTok, 0);
        break;
    case CFLOATCONST_SY:
    case FLOATCONST_SY:
    case FLOATHCONST_SY:
    case FLOATXCONST_SY:
        lAdd4Bytes(pTok, (unsigned char *) &yylval.sc_fval);
        break;
    case INTCONST_SY:
        lAdd4Bytes(pTok, (unsigned char *) &yylval.sc_int);
        break;
    case '(':

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人黄色av网站在线| 大尺度一区二区| 成人午夜精品一区二区三区| 亚洲人被黑人高潮完整版| 欧美高清视频不卡网| 9人人澡人人爽人人精品| 日本视频一区二区三区| 一区二区三区在线免费| 国产午夜精品久久| 欧美mv和日韩mv国产网站| 色综合久久中文综合久久牛| 国产盗摄一区二区| 免费在线一区观看| 亚洲国产综合91精品麻豆| 国产精品全国免费观看高清| 欧美精品一区二区在线播放| 欧美日韩在线综合| 91视频xxxx| 成人黄色在线网站| 国产精品亚洲视频| 国内不卡的二区三区中文字幕 | 中文成人综合网| 日本精品一区二区三区高清 | 久久国产精品99久久久久久老狼 | 亚洲人成网站色在线观看| 精品福利在线导航| 91精品国产综合久久福利软件| 色久综合一二码| 91美女在线看| av影院午夜一区| av在线不卡观看免费观看| 国产suv精品一区二区6| 国产福利一区二区三区视频在线| 日本欧美肥老太交大片| 亚洲国产精品欧美一二99| 亚洲国产综合91精品麻豆| 亚洲一级二级三级| 亚洲高清视频中文字幕| 午夜在线电影亚洲一区| 亚洲成人av电影| 日韩二区三区四区| 日本不卡一区二区| 亚洲成av人片在线| 天天综合网 天天综合色| 五月天中文字幕一区二区| 亚洲图片欧美一区| 天堂va蜜桃一区二区三区| 亚洲成人免费观看| 日本人妖一区二区| 麻豆国产精品官网| 国产一区二区三区在线看麻豆| 国产一区二区福利| 成人污污视频在线观看| 色综合久久天天综合网| 欧美日韩国产高清一区二区三区 | 成人avav在线| 99国产精品一区| 精品视频资源站| 91精品国产综合久久蜜臀| 日韩精品影音先锋| 国产日韩欧美综合在线| 国产精品麻豆欧美日韩ww| 尤物在线观看一区| 日韩va欧美va亚洲va久久| 精品一区二区三区久久| 成人午夜激情视频| 欧美影院一区二区| 欧美一级片在线观看| 久久中文字幕电影| 亚洲欧美在线aaa| 亚洲国产中文字幕在线视频综合 | 亚洲欧美激情视频在线观看一区二区三区 | 午夜精品久久久久久久久| 麻豆成人av在线| 福利一区在线观看| 欧美亚洲愉拍一区二区| 日韩欧美亚洲另类制服综合在线| 国产欧美一区二区在线观看| 亚洲欧美视频在线观看视频| 日本va欧美va精品发布| www.66久久| 精品欧美一区二区在线观看| 国产精品久久久久久久岛一牛影视| 亚洲高清视频的网址| 国产东北露脸精品视频| 欧美嫩在线观看| 日本一区二区三区高清不卡| 午夜精品成人在线视频| 国产成人一区在线| 91精品国产综合久久香蕉麻豆| 国产精品白丝在线| 久久精品99久久久| 在线国产电影不卡| 国产日韩成人精品| 日韩激情视频网站| 色婷婷一区二区三区四区| 久久综合色天天久久综合图片| 一区二区三区四区在线播放| 国产一区二区三区蝌蚪| 欧美亚洲愉拍一区二区| 国产精品亲子伦对白| 蜜臀久久99精品久久久久宅男 | 国产欧美日韩精品一区| 午夜精品成人在线| 色老汉av一区二区三区| 日本一区二区免费在线观看视频 | 久久久久久久久久久99999| 国产999精品久久久久久绿帽| 国产大陆亚洲精品国产| 欧美高清www午色夜在线视频| 亚洲国产激情av| 激情综合色综合久久综合| 欧美撒尿777hd撒尿| 亚洲欧美一区二区三区国产精品 | 国产高清亚洲一区| 欧美一级淫片007| 亚洲国产三级在线| 99精品一区二区| 中文字幕制服丝袜成人av| 国产主播一区二区三区| 日韩欧美在线综合网| 亚洲aⅴ怡春院| 一本久久精品一区二区| 欧美激情资源网| 国产高清在线精品| 精品三级在线观看| 久久av老司机精品网站导航| 91精品免费在线观看| 亚洲va在线va天堂| 欧美吻胸吃奶大尺度电影| 亚洲一区二区三区中文字幕在线| 91片在线免费观看| 亚洲天堂精品视频| 97久久久精品综合88久久| 中文字幕一区二区三区色视频| 国产福利一区二区| 国产亚洲视频系列| 国产一区不卡在线| 久久综合久久鬼色中文字| 久草这里只有精品视频| 日韩欧美视频在线| 美女网站色91| 久久一二三国产| 国产激情视频一区二区在线观看 | 欧美一区二区三区成人| 日韩成人免费电影| 欧美v日韩v国产v| 国产精品一品二品| 1024成人网色www| 91福利在线看| 午夜电影久久久| 日韩欧美色电影| 国产激情视频一区二区在线观看 | 视频一区二区三区中文字幕| 欧美日韩免费视频| 亚洲第一搞黄网站| 日韩欧美一级片| 国产乱子伦视频一区二区三区| 中文字幕欧美日本乱码一线二线 | 欧美在线不卡视频| 午夜久久久久久| 精品剧情v国产在线观看在线| 懂色av一区二区三区免费观看| 国产精品萝li| 欧美日韩一区二区三区四区| 免费人成精品欧美精品| 精品国产91亚洲一区二区三区婷婷| 国产美女精品一区二区三区| 国产精品你懂的在线| 在线免费观看视频一区| 麻豆精品视频在线观看视频| 久久久精品欧美丰满| 97精品国产露脸对白| 日本人妖一区二区| 中文字幕亚洲成人| 欧美日韩国产精品成人| 国产盗摄精品一区二区三区在线| 亚洲伦理在线免费看| 欧美一区二区在线观看| 国产成人精品免费网站| 亚洲国产cao| 久久婷婷久久一区二区三区| 在线亚洲欧美专区二区| 国内精品免费在线观看| 中文字幕一区二区不卡| 日韩欧美电影一区| 91蜜桃在线观看| 久久精品久久99精品久久| 亚洲精品视频免费看| 精品久久久久久久久久久久久久久 | 国产盗摄女厕一区二区三区 | 丰满亚洲少妇av| 日日欢夜夜爽一区| 国产精品欧美一级免费| 日韩免费观看2025年上映的电影| 91在线观看美女| 国产一区91精品张津瑜| 亚洲一卡二卡三卡四卡无卡久久| 亚洲国产wwwccc36天堂| 日韩一区二区三区免费观看|