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

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

?? tokens.c

?? cg編譯器
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/****************************************************************************\
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 '(':

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
宅男噜噜噜66一区二区66| 国产大陆精品国产| 国产黑丝在线一区二区三区| 久久精品国产精品亚洲综合| 国产亚洲人成网站| 欧美中文字幕久久| 国产一区免费电影| 欧美国产日韩亚洲一区| 一区二区欧美在线观看| 69av一区二区三区| 亚洲免费观看在线观看| 国产精品视频yy9299一区| 欧美亚洲愉拍一区二区| 日本强好片久久久久久aaa| 久久精品欧美日韩精品| 91天堂素人约啪| 国产在线视频精品一区| 99国产欧美另类久久久精品| 久久久久久久久久久久久夜| 99精品热视频| 国产欧美日韩在线看| 国产成人免费视频一区| 午夜不卡av免费| 中文字幕在线观看不卡| 欧美精品第一页| 在线观看亚洲一区| 成人激情校园春色| 免费观看30秒视频久久| 色偷偷一区二区三区| 成人福利电影精品一区二区在线观看| 国产精品网站在线观看| 国产乱码精品一区二区三区五月婷| 午夜成人免费视频| 亚洲成人av免费| 中文字幕一区日韩精品欧美| 欧美日韩国产高清一区二区三区| 亚洲精品综合在线| 91精品国产欧美一区二区成人| 91黄色免费版| 国产成人综合视频| 日韩国产成人精品| 免费在线观看视频一区| 日本在线不卡一区| 一区二区三区四区av| 色综合夜色一区| 日韩不卡免费视频| 久久久99精品免费观看| 国产欧美日韩三级| 一区二区三区中文字幕在线观看| 国产三级精品三级| 日本道色综合久久| 麻豆成人久久精品二区三区红| 欧美极品xxx| 欧美大片拔萝卜| 99久久er热在这里只有精品66| 国产精品一区二区三区乱码 | 一区二区三区四区不卡在线 | 一本大道综合伊人精品热热| 色综合久久天天| 欧美日韩免费一区二区三区视频| 国产在线精品一区二区夜色| 亚洲天堂中文字幕| 精品剧情v国产在线观看在线| 欧美亚洲综合色| 精品国产精品网麻豆系列| 不卡一卡二卡三乱码免费网站| 色婷婷久久99综合精品jk白丝| 欧美三级中文字幕| 日韩欧美中文字幕制服| 久久亚洲综合色| 自拍偷在线精品自拍偷无码专区| 亚洲欧洲日产国产综合网| 国产精品美女视频| 亚洲18色成人| 激情丁香综合五月| 欧美天堂一区二区三区| 久久精品夜夜夜夜久久| 欧美国产在线观看| 五月天视频一区| 99re66热这里只有精品3直播| 欧美私人免费视频| 国产精品久久久久婷婷二区次| 亚洲码国产岛国毛片在线| 日韩在线一二三区| 成人性生交大片免费看在线播放| 在线免费观看一区| 国产日韩欧美精品在线| 午夜一区二区三区视频| 琪琪久久久久日韩精品| 91丨九色丨蝌蚪富婆spa| 欧美r级电影在线观看| 亚洲mv在线观看| 色八戒一区二区三区| 国产精品久久久久久久久免费桃花| 久久99国产精品麻豆| 欧美一二三在线| 日本亚洲天堂网| 欧美精品黑人性xxxx| 午夜精品久久久久久不卡8050| 99久久精品情趣| 亚洲丝袜制服诱惑| 91丝袜呻吟高潮美腿白嫩在线观看| 国产日韩欧美高清在线| 国产.欧美.日韩| 亚洲手机成人高清视频| 91丨porny丨在线| 久久97超碰国产精品超碰| 欧美福利视频导航| 丝袜亚洲精品中文字幕一区| 色婷婷亚洲婷婷| 亚洲小说欧美激情另类| 日韩欧美激情在线| 免费一级片91| 国产精品天干天干在线综合| 色噜噜狠狠成人中文综合| 午夜视频一区在线观看| 日韩欧美不卡在线观看视频| 国产成人免费在线观看| 亚洲人成精品久久久久久| 欧美丰满少妇xxxbbb| 久久爱www久久做| 中文字幕日本乱码精品影院| 亚洲精品在线免费观看视频| 国产精品一品二品| 午夜激情久久久| 亚洲欧美另类综合偷拍| 国产精品电影一区二区| 国产精品天美传媒沈樵| 中文字幕亚洲在| 久久久综合九色合综国产精品| 在线播放国产精品二区一二区四区| 91在线丨porny丨国产| 国产91精品久久久久久久网曝门| 亚洲国产成人自拍| 欧美高清在线精品一区| 欧美精品一区男女天堂| 久久综合精品国产一区二区三区| 久久国产三级精品| 亚洲色图欧洲色图婷婷| 国产日产欧美一区二区视频| 日韩一区二区在线观看视频 | 亚洲第一av色| 成人免费一区二区三区在线观看| 久久精品一区二区三区四区| 91精品国产色综合久久不卡蜜臀| 欧美体内she精高潮| 99re视频这里只有精品| 国产精品66部| 久久99热这里只有精品| 麻豆一区二区三| 欧美a级理论片| 免费美女久久99| 国产精品一区二区在线观看网站| 久久国产精品露脸对白| 欧美aaa在线| 国产在线精品一区在线观看麻豆| 日韩国产在线观看| 免费欧美在线视频| 精品在线一区二区三区| 国产伦精品一区二区三区免费 | 日韩一级在线观看| 欧美日产国产精品| 欧美大片日本大片免费观看| 国产日韩欧美综合一区| 一区免费观看视频| 日本伊人精品一区二区三区观看方式| 日本不卡一二三| av亚洲产国偷v产偷v自拍| 欧美人狂配大交3d怪物一区| 2021久久国产精品不只是精品| 国产欧美一区二区在线| 亚洲一区精品在线| 丁香六月久久综合狠狠色| 91天堂素人约啪| 日韩欧美美女一区二区三区| 欧美国产一区二区在线观看| 亚洲自拍偷拍网站| 国内精品免费**视频| 91精品福利视频| 久久精品视频在线看| 午夜精品久久一牛影视| 99国产精品久久久久久久久久| 日韩亚洲电影在线| 亚洲尤物视频在线| 国产成人av自拍| 欧美精品九九99久久| 一区二区三区四区在线| 国产精品自拍在线| 欧美videossexotv100| 亚洲成av人综合在线观看| 成人一二三区视频| 久久久久久久av麻豆果冻| 一区二区三区高清| 视频一区在线视频| 一区二区三区不卡视频| 亚洲卡通欧美制服中文| 亚洲精品国产视频| 亚洲人成影院在线观看| 国产原创一区二区三区| 91尤物视频在线观看|