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

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

?? symbols.c

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

//
// symbols.c
//

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

#include "slglobals.h"

///////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////// Symbol Table Variables: ///////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////

Scope *ScopeList = NULL;
Scope *CurrentScope = NULL;
Scope *GlobalScope = NULL;
int NextFunctionIndex = 0;

Type *UndefinedType = NULL;
Type *CFloatType = NULL;
Type *CIntType = NULL;
Type *VoidType = NULL;
Type *FloatType = NULL;
Type *IntType = NULL;
Type *BooleanType = NULL;

Type *CFloat1Type = NULL;
Type *CFloat2Type = NULL;
Type *CFloat3Type = NULL;
Type *CFloat4Type = NULL;

Type *CInt1Type = NULL;
Type *CInt2Type = NULL;
Type *CInt3Type = NULL;
Type *CInt4Type = NULL;

Type *Float1Type = NULL;
Type *Float2Type = NULL;
Type *Float3Type = NULL;
Type *Float4Type = NULL;

Type *Int1Type = NULL;
Type *Int2Type = NULL;
Type *Int3Type = NULL;
Type *Int4Type = NULL;

Type *Boolean1Type = NULL;
Type *Boolean2Type = NULL;
Type *Boolean3Type = NULL;
Type *Boolean4Type = NULL;

Symbol *FalseSymb = NULL;
Symbol *TrueSymb = NULL;

static int baseTypeNames[TYPE_BASE_LAST_USER + 1] = { 0 };
static Type *baseTypes[TYPE_BASE_LAST_USER + 1] = { NULL };

/************************************ Type Name Error Support ********************************/

/*
 * SetScalarTypeName() - Set a scalar type name.
 *
 */

void SetScalarTypeName(int base, int name, Type *fType)
{
    if (base >= 0 && base <= TYPE_BASE_LAST_USER) {
        baseTypeNames[base] = name;
        baseTypes[base] = fType;
    }
} // SetScalarTypeName

///////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////// Symbol Table Fuctions: ////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////

/*
 * InitSymbolTable()
 *
 */

int InitSymbolTable(CgStruct *Cg)
{
    SourceLoc dummyLoc = { 0, 0 };
    int ii, name;

    // Create the super-global scope and add predefined types and symbols:

    PushScope(NewScopeInPool(mem_CreatePool(0, 0)));
    UndefinedType = NewType(TYPE_BASE_UNDEFINED_TYPE | TYPE_CATEGORY_SCALAR, 0);
    CFloatType = NewType(TYPE_BASE_CFLOAT | TYPE_CATEGORY_SCALAR | TYPE_QUALIFIER_CONST, 1);
    CIntType = NewType(TYPE_BASE_CINT | TYPE_CATEGORY_SCALAR | TYPE_QUALIFIER_CONST, 1);
    VoidType = NewType(TYPE_BASE_VOID | TYPE_CATEGORY_SCALAR | TYPE_MISC_VOID, 0);
    FloatType = NewType(TYPE_BASE_FLOAT | TYPE_CATEGORY_SCALAR, 1);
    IntType = NewType(TYPE_BASE_INT | TYPE_CATEGORY_SCALAR, 1);
    BooleanType = NewType(TYPE_BASE_BOOLEAN | TYPE_CATEGORY_SCALAR, 1);

    CFloat1Type = NewPackedArrayType(CFloatType, 1, TYPE_QUALIFIER_CONST);
    CFloat2Type = NewPackedArrayType(CFloatType, 2, TYPE_QUALIFIER_CONST);
    CFloat3Type = NewPackedArrayType(CFloatType, 3, TYPE_QUALIFIER_CONST);
    CFloat4Type = NewPackedArrayType(CFloatType, 4, TYPE_QUALIFIER_CONST);
    CInt1Type = NewPackedArrayType(CIntType, 1, TYPE_QUALIFIER_CONST);
    CInt2Type = NewPackedArrayType(CIntType, 2, TYPE_QUALIFIER_CONST);
    CInt3Type = NewPackedArrayType(CIntType, 3, TYPE_QUALIFIER_CONST);
    CInt4Type = NewPackedArrayType(CIntType, 4, TYPE_QUALIFIER_CONST);
    Float1Type = NewPackedArrayType(FloatType, 1, 0);
    Float2Type = NewPackedArrayType(FloatType, 2, 0);
    Float3Type = NewPackedArrayType(FloatType, 3, 0);
    Float4Type = NewPackedArrayType(FloatType, 4, 0);
    Int1Type = NewPackedArrayType(IntType, 1, 0);
    Int2Type = NewPackedArrayType(IntType, 2, 0);
    Int3Type = NewPackedArrayType(IntType, 3, 0);
    Int4Type = NewPackedArrayType(IntType, 4, 0);
    Boolean1Type = NewPackedArrayType(BooleanType, 1, 0);
    Boolean2Type = NewPackedArrayType(BooleanType, 2, 0);
    Boolean3Type = NewPackedArrayType(BooleanType, 3, 0);
    Boolean4Type = NewPackedArrayType(BooleanType, 4, 0);

    AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "cfloat"), CFloatType, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "cint"), CIntType, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, VOID_SY, VoidType, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, FLOAT_SY, FloatType, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, INT_SY, IntType, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, BOOLEAN_SY, BooleanType, TYPEDEF_S);

    AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "cfloat1"), CFloat1Type, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "cfloat2"), CFloat2Type, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "cfloat3"), CFloat3Type, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "cfloat4"), CFloat4Type, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "cint1"), CInt1Type, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "cint2"), CInt2Type, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "cint3"), CInt3Type, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "cint4"), CInt4Type, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "float1"), Float1Type, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "float2"), Float2Type, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "float3"), Float3Type, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "float4"), Float4Type, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "int1"), Int1Type, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "int2"), Int2Type, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "int3"), Int3Type, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "int4"), Int4Type, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "bool1"), Boolean1Type, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "bool2"), Boolean2Type, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "bool3"), Boolean3Type, TYPEDEF_S);
    AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "bool4"), Boolean4Type, TYPEDEF_S);

    FalseSymb = AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "false"), BooleanType, CONSTANT_S);
    TrueSymb = AddSymbol(&dummyLoc, CurrentScope, LookUpAddString(atable, "true"), BooleanType, CONSTANT_S);
    FalseSymb->details.con.value = 0;
    TrueSymb->details.con.value = 1;

    SetScalarTypeName(TYPE_BASE_NO_TYPE, LookUpAddString(atable, "***no-base-type***"), UndefinedType);
    SetScalarTypeName(TYPE_BASE_UNDEFINED_TYPE, LookUpAddString(atable, "***undefined-base-type***"), UndefinedType);
    SetScalarTypeName(TYPE_BASE_CFLOAT, LookUpAddString(atable, "cfloat"), CFloatType);
    SetScalarTypeName(TYPE_BASE_CINT, LookUpAddString(atable, "cint"), CIntType);
    SetScalarTypeName(TYPE_BASE_VOID, LookUpAddString(atable, "void"), VoidType);
    SetScalarTypeName(TYPE_BASE_FLOAT, LookUpAddString(atable, "float"), FloatType);
    SetScalarTypeName(TYPE_BASE_INT, LookUpAddString(atable, "int"), IntType);
    SetScalarTypeName(TYPE_BASE_BOOLEAN, LookUpAddString(atable, "bool"), BooleanType);

    name = LookUpAddString(atable, "***unknown-profile-base-type***");
    for (ii = TYPE_BASE_FIRST_USER; ii <= TYPE_BASE_LAST_USER; ii++)
        SetScalarTypeName(ii, name, UndefinedType);

    // Add profile specific symbols and types:

    Cg->theHAL->RegisterNames(Cg->theHAL);
    AddAtom(atable, "<*** end hal specific atoms ***>");

    // Initialize misc. other globals:

    CurrentDeclTypeSpecs.basetype = UndefinedType;
    CurrentDeclTypeSpecs.IsDerived = 0;
    CurrentDeclTypeSpecs.type = *UndefinedType;

    return 1;
} // InitSymbolTable

int StartGlobalScope(CgStruct *Cg)
{
    // Create user's global scope:
    GlobalScope = NewScopeInPool(mem_CreatePool(0, 0));
    PushScope(GlobalScope);
    return 1;
} // StartGlobalScope

/*
 * FreeSymbolTable()
 *
 */

int FreeSymbolTable(CgStruct *Cg)
{
    Scope *lScope, *nScope;

    lScope = ScopeList;
    while (lScope) {
        nScope = lScope->next;
        // FreeEverythingOwnedByScope(pScope);
        lScope = nScope;
    }
    return 1;
} // FreeSymbolTable

static void unlinkScope(void *_scope) {
    Scope *scope = _scope;

    if (scope->next)
        scope->next->prev = scope->prev;
    if (scope->prev)
        scope->prev->next = scope->next;
    else
        ScopeList = scope->next;
}

/*
 * NewScope()
 *
 */
Scope *NewScopeInPool(MemoryPool *pool)
{
    Scope *lScope;

    lScope = mem_Alloc(pool, sizeof(Scope));
    lScope->pool = pool;
    lScope->parent = NULL;
    lScope->funScope = NULL;
    lScope->symbols = NULL;
    lScope->tags = NULL;
    lScope->params = NULL;
    lScope->returnType = NULL;
    lScope->level = 0;
    lScope->funindex = 0;
    lScope->InFormalParameters = 0;
    lScope->HasVoidParameter = 0;
    lScope->HasReturnStmt = 0;
    lScope->IsStructScope = 0;
    lScope->HasSemantics = 0;
    lScope->pid = PID_NONE_ID;
    lScope->programs = NULL;
    lScope->initStmts = NULL;
    if ((lScope->next = ScopeList))
        ScopeList->prev = lScope;
    lScope->prev = 0;
    ScopeList = lScope;
    mem_AddCleanup(pool, unlinkScope, lScope);
    return lScope;
} // NewScope

/*
 * PushScope()
 *
 */

void PushScope(Scope *fScope)
{
    Scope *lScope;

    if (CurrentScope) {
        fScope->level = CurrentScope->level + 1;
        if (fScope->level == 1) {
            if (!GlobalScope) {
                /* HACK - CTD -- if GlobalScope==NULL and level==1, we're
                 * defining a function in the superglobal scope.  Things
                 * will break if we leave the level as 1, so we arbitrarily
                 * set it to 2 */
                fScope->level = 2;
            }
        }
        if (fScope->level >= 2) {
            lScope = fScope;
            while (lScope->level > 2)
                lScope = lScope->next;
            fScope->funScope = lScope;
        }
    } else {
        fScope->level = 0;
    }
    fScope->parent = CurrentScope;
    CurrentScope = fScope;
} // PushScope

/*
 * PopScope()
 *
 */

Scope *PopScope(void)
{
    Scope *lScope;

    lScope = CurrentScope;
    if (CurrentScope)
        CurrentScope = CurrentScope->parent;
    return lScope;
} // PopScope

/*
 * NewSymbol() - Allocate a new symbol node;
 *
 */

Symbol *NewSymbol(SourceLoc *loc, Scope *fScope, int name, Type *fType, symbolkind kind)
{
    Symbol *lSymb;
    char *pch;
    int ii;

    lSymb = (Symbol *) mem_Alloc(fScope->pool, sizeof(Symbol));
    lSymb->left = NULL;
    lSymb->right = NULL;
    lSymb->next = NULL;
    lSymb->name = name;
    lSymb->storageClass = SC_UNKNOWN;
    lSymb->type = fType;
    lSymb->loc = *loc;
    lSymb->kind = kind;
    lSymb->properties = 0;
    lSymb->flags = 0;
    lSymb->tempptr = NULL;
    lSymb->tempptr2 = NULL;
    
    // Clear union area:

    pch = (char *) &lSymb->details;
    for (ii = 0; ii < sizeof(lSymb->details); ii++)
        *pch++ = 0;
    return lSymb;
} // NewSymbol

/*
 * lAddToTree() - Using a binary tree is not a good idea for basic atom values because they
 *         are generated in order.  We'll fix this later (by reversing the bit pattern).
 */

static void lAddToTree(Symbol **fSymbols, Symbol *fSymb, Type *fType)
{
    Symbol *lSymb;
    int lrev, frev;

    lSymb = *fSymbols;
    if (lSymb) {
        frev = GetReversedAtom(atable, fSymb->name);
        while (lSymb) {
            lrev = GetReversedAtom(atable, lSymb->name);
            if (lrev == frev) {
                InternalError(Cg->tokenLoc, 9999, "symbol \"%s\" already in table",
                       GetAtomString(atable, fSymb->name));
                break;
            } else {
                if (lrev > frev) {
                    if (lSymb->left) {
                        lSymb = lSymb->left;
                    } else {
                        lSymb->left = fSymb;
                        break;
                    }
                } else {
                    if (lSymb->right) {
                        lSymb = lSymb->right;
                    } else {
                        lSymb->right = fSymb;
                        break;
                    }
                }
            }
        }
    } else {
        *fSymbols = fSymb;
    }
} // lAddToTree


/*
 * AddSymbol() - Add a variable, type, or function name to a scope.
 *
 */

Symbol *AddSymbol(SourceLoc *loc, Scope *fScope, int atom, Type *fType, symbolkind kind)
{
    Symbol *lSymb;

    if (!fScope)
        fScope = CurrentScope;
    lSymb = NewSymbol(loc, fScope, atom, fType, kind);
    lAddToTree(&fScope->symbols, lSymb, fType);
    return lSymb;
} // AddSymbol

/*
 * UniqueSymbol() - Add a symbol to fScope that is different from
 * every other symbol.  Useful for compiler generated temporaries.
 *
 */

Symbol *UniqueSymbol(Scope *fScope, Type *fType, symbolkind kind)
{
    static int nextTmp = 0;
    static SourceLoc tmpLoc = { 0, 0 };
    char buf[256];
    int atom;
  
    sprintf(buf, "@TMP%d", nextTmp++);
    atom = AddAtom(atable, buf);
    return AddSymbol(&tmpLoc, fScope, atom, fType, kind);
} // UniqueSymbol


/*
 * AddTag() - Add a tag name to a scope.
 *
 */

Symbol *AddTag(SourceLoc *loc, Scope *fScope, int atom, int category)
{
    Symbol *lSymb;
    Type *pType;

    if (!fScope)
        fScope = CurrentScope;
    pType = NewType(category, 0);
    pType->str.unqualifiedtype = pType;
    lSymb = NewSymbol(loc, fScope, atom, pType, TAG_S);
    lAddToTree(&fScope->tags, lSymb, pType);
    return lSymb;
} // AddTag

/*********************************************************************************************/
/***************************************** Type Functions ************************************/
/*********************************************************************************************/

/*
 * InitType() - Initialize a type struct.
 *
 */

void InitType(Type *fType)
{
    char *c = (char *) fType;
    int ii;

    for (ii = 0; ii < sizeof(Type); ii++)
        *c++ = 0;
} // InitType

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲超碰精品一区二区| 欧美经典一区二区| 午夜私人影院久久久久| 欧美视频一区二区| 青青草国产成人av片免费| 日韩无一区二区| 国产成人自拍在线| 亚洲色图在线视频| 欧美三级中文字幕| 免费观看成人av| 日本一区二区三区国色天香| 91小视频在线免费看| 三级欧美在线一区| 精品国产凹凸成av人导航| 波多野结衣中文一区| 亚洲国产精品一区二区www| 欧美一区二区在线观看| 国产成人啪午夜精品网站男同| 亚洲欧美影音先锋| 欧美高清视频不卡网| 国产美女精品在线| 中文一区在线播放| 欧美日韩精品是欧美日韩精品| 国产一区二区三区日韩| 亚洲视频一二三区| 欧美精品黑人性xxxx| 亚洲三级电影网站| 日韩国产精品久久| 欧美国产日韩a欧美在线观看| 色菇凉天天综合网| 国产一区二区三区日韩| 亚洲与欧洲av电影| 久久精品日韩一区二区三区| 91九色最新地址| 国产伦理精品不卡| 日日摸夜夜添夜夜添精品视频| 国产亚洲视频系列| 欧美精品一二三| 国产精一品亚洲二区在线视频| 亚洲综合丁香婷婷六月香| 2021国产精品久久精品| 欧美性受xxxx| 成人免费高清视频在线观看| 奇米一区二区三区av| 亚洲精品日日夜夜| 欧美激情综合在线| 精品三级在线看| 欧美日韩综合在线免费观看| 成人免费高清在线观看| 久久国产福利国产秒拍| 亚洲二区在线观看| 国产精品国产三级国产aⅴ中文| 日韩免费一区二区三区在线播放| 一本色道久久加勒比精品| 国产激情精品久久久第一区二区 | 日韩视频在线你懂得| 91色在线porny| 国产v日产∨综合v精品视频| 精品一区二区三区的国产在线播放| 一区二区高清视频在线观看| 亚洲欧美自拍偷拍色图| 中文欧美字幕免费| 久久精品亚洲一区二区三区浴池| 91精品国产一区二区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 国产v综合v亚洲欧| 国产激情偷乱视频一区二区三区| 久草这里只有精品视频| 男人的天堂亚洲一区| 日韩电影在线免费| 三级亚洲高清视频| 男人的j进女人的j一区| 男女激情视频一区| 另类成人小视频在线| 美女一区二区视频| 免费在线看成人av| 久久国产三级精品| 激情文学综合丁香| 国产精品 欧美精品| 国产美女久久久久| 国产成人综合视频| 成人激情校园春色| 91亚洲精品久久久蜜桃网站| 一本一道波多野结衣一区二区| 色综合久久综合网97色综合| 色综合视频一区二区三区高清| 91在线视频播放地址| 91免费版在线| 欧美日韩一区二区三区四区 | 在线不卡中文字幕| 欧美欧美午夜aⅴ在线观看| 91精品黄色片免费大全| 91精品国产综合久久久久久漫画| 日韩色视频在线观看| 久久久久久免费毛片精品| 国产欧美在线观看一区| 亚洲欧洲一区二区在线播放| 玉足女爽爽91| 日韩不卡一二三区| 国产一区二区看久久| 国产91清纯白嫩初高中在线观看| 成人va在线观看| 日本道精品一区二区三区| 精品视频123区在线观看| 日韩欧美一级片| 中文字幕视频一区| 午夜精品久久久久久久蜜桃app| 日产欧产美韩系列久久99| 国内成人自拍视频| 97se亚洲国产综合在线| 7799精品视频| 国产精品久久久久永久免费观看| 亚洲一二三四在线观看| 麻豆免费看一区二区三区| 成人黄页毛片网站| 欧美一区二区三区性视频| 久久精品亚洲乱码伦伦中文| 亚洲女同一区二区| 久久国产福利国产秒拍| 色噜噜狠狠一区二区三区果冻| 欧美一区二区视频免费观看| 亚洲国产精品ⅴa在线观看| 亚洲18影院在线观看| 国产一区二区在线观看视频| 91国内精品野花午夜精品| 久久久久88色偷偷免费| 亚洲成人在线免费| 成人网页在线观看| 日韩免费看网站| 伊人性伊人情综合网| 国产成人精品网址| 欧美成va人片在线观看| 亚洲国产日韩a在线播放| 丁香一区二区三区| 欧美一区二区三区免费视频| 亚洲欧美一区二区三区久本道91| 久久99精品一区二区三区三区| 91免费视频网| 国产日韩欧美高清在线| 日本一区中文字幕| 色婷婷精品久久二区二区蜜臀av| 久久久777精品电影网影网| 日韩激情在线观看| 色欧美日韩亚洲| 欧美激情综合五月色丁香| 狠狠色狠狠色综合系列| 欧美一区二区精品在线| 亚洲宅男天堂在线观看无病毒| 成人午夜看片网址| 久久免费偷拍视频| 久久成人免费日本黄色| 欧美肥妇bbw| 亚洲v中文字幕| 色婷婷综合激情| 亚洲另类色综合网站| 成人丝袜视频网| 久久久综合激的五月天| 裸体歌舞表演一区二区| 欧美一卡在线观看| 蜜臀久久99精品久久久久宅男| 欧美日韩一本到| 亚洲午夜激情网站| 精品视频在线免费看| 一二三四社区欧美黄| 色偷偷一区二区三区| 亚洲精品自拍动漫在线| 色噜噜狠狠色综合欧洲selulu| 中文字幕制服丝袜成人av | 欧美天堂一区二区三区| 亚洲免费伊人电影| 91在线国产福利| 亚洲欧美成aⅴ人在线观看 | 成人免费黄色在线| 国产精品视频你懂的| www.欧美日韩国产在线| 亚洲欧美视频在线观看| 在线观看一区二区视频| 亚洲国产精品麻豆| 欧美日韩不卡一区| 免费高清成人在线| 久久久久久99久久久精品网站| 国产精品自拍三区| 国产精品热久久久久夜色精品三区| 国产99久久久国产精品| 亚洲欧美国产毛片在线| 欧美色中文字幕| 日日夜夜一区二区| 精品粉嫩aⅴ一区二区三区四区| 国内精品伊人久久久久av影院 | 狠狠色丁香婷婷综合久久片| 久久久久久久国产精品影院| 丁香六月综合激情| 亚洲欧美aⅴ...| 日韩午夜在线影院| 成人av网站免费| 一区二区在线电影| 日韩欧美国产综合一区| 成人免费看的视频| 亚洲18色成人| 中文字幕av一区二区三区|