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

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

?? hnsrtreefilest.cpp

?? SR-tree is an index structure for high-dimensional nearest neighbor queries
?? CPP
字號(hào):
/*
 * HnSRTreeFileSt.cc
 * Copyright (C) 1999 Norio Katayama
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the Free
 * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 * MA 02111-1307, USA
 *
 * 07/27/1999 Norio KATAYAMA
 * $Id: HnSRTreeFileSt.cc,v 1.6 2002/09/13 11:54:15 katayama Exp $
 */

#include <stdlib.h>
#include "HnSRTree/HnSRTreeFileSt.h"
#include "HnSRTree/HnSRTreeFile.hh"

/*
 * conversion functions
 */

/* HnPoint */
static HnPoint pointStToPoint(const HnPointSt *pointSt);
static HnPointSt *pointToPointSt(const HnPoint &point);
static HnPointVector
pointVectorStToPointVector(const HnPointVectorSt *pointsSt);
static HnPointVectorSt *
pointVectorToPointVectorSt(const HnPointVector &points);

/* HnDataItem */
static HnDataItem dataItemStToDataItem(const HnDataItemSt *dataItemSt);
static HnDataItemSt *dataItemToDataItemSt(const HnDataItem &dataItem);
static HnDataItemVector
dataItemVectorStToDataItemVector(const HnDataItemVectorSt *dataItemsSt);
static HnDataItemVectorSt *
dataItemVectorToDataItemVectorSt(const HnDataItemVector &dataItems);

/* HnSphere */
static HnSphere sphereStToSphere(const HnSphereSt *sphereSt);

/* HnRect */
static HnRect rectStToRect(const HnRectSt *rectSt);

/* HnProperties */
static HnProperties
propertiesStToProperties(const HnPropertiesSt *propertiesSt);
static void
propertiesToPropertiesSt(const HnProperties &properties,
			 HnPropertiesSt *propertiesSt_return);

/*
 * Functions
 */

HnSRTreeFileSt *
HnSRTreeFileSt_create(const char *path, int dimension, int dataItemSize,
		      const HnPropertiesSt *propertiesSt)
{
    HnSRTreeFile *file;
    HnProperties properties;
    HnSRTreeFileSt *fileSt;

    file = new HnSRTreeFile();

    if ( propertiesSt == NULL ) {
	properties = HnProperties::null;
    }
    else {
	properties = propertiesStToProperties(propertiesSt);
    }

    *file = new_HnSRTreeFile(path, dimension, dataItemSize, properties);

    if ( *file == HnSRTreeFile::null ) {
	delete file;
	return NULL;
    }

    fileSt = (HnSRTreeFileSt *)HnMalloc(sizeof(HnSRTreeFileSt));
    fileSt->opaque = file;

    return fileSt;
}

HnSRTreeFileSt *
HnSRTreeFileSt_open(const char *path, const char *mode)
{
    HnSRTreeFile *file;
    HnSRTreeFileSt *fileSt;

    file = new HnSRTreeFile();

    *file = new_HnSRTreeFile(path, mode);

    if ( *file == HnSRTreeFile::null ) {
	delete file;
	return NULL;
    }

    fileSt = (HnSRTreeFileSt *)HnMalloc(sizeof(HnSRTreeFileSt));
    fileSt->opaque = file;

    return fileSt;
}

HnSRTreeFileSt *
HnSRTreeFileSt_build(const char *path,
		     int dimension, int dataItemSize, 
		     const HnPointVectorSt *pointsSt,
		     const HnDataItemVectorSt *dataItemsSt,
		     const HnPropertiesSt *propertiesSt)
{
    HnSRTreeFile *file;
    HnPointVector points;
    HnDataItemVector dataItems;
    HnProperties properties;
    HnSRTreeFileSt *fileSt;

    points = pointVectorStToPointVector(pointsSt);
    dataItems = dataItemVectorStToDataItemVector(dataItemsSt);

    if ( propertiesSt == NULL ) {
	properties = HnProperties::null;
    }
    else {
	properties = propertiesStToProperties(propertiesSt);
    }

    file = new HnSRTreeFile();

    *file = new_HnSRTreeFile(path, dimension, dataItemSize,
			     points, dataItems, properties);

    if ( *file == HnSRTreeFile::null ) {
	delete file;
	return NULL;
    }

    fileSt = (HnSRTreeFileSt *)HnMalloc(sizeof(HnSRTreeFileSt));
    fileSt->opaque = file;

    return fileSt;
}

void
HnSRTreeFileSt_close(HnSRTreeFileSt *fileSt)
{
    HnSRTreeFile *file = (HnSRTreeFile *)fileSt->opaque;

    file->close();
    delete file;

    HnFree(fileSt, sizeof(HnSRTreeFileSt));
}

void
HnSRTreeFileSt_store(HnSRTreeFileSt *fileSt,
		     const HnPointSt *pointSt, const HnDataItemSt *dataItemSt)
{
    HnSRTreeFile *file = (HnSRTreeFile *)fileSt->opaque;

    file->store(pointStToPoint(pointSt), dataItemStToDataItem(dataItemSt));
}

void
HnSRTreeFileSt_remove(HnSRTreeFileSt *fileSt,
		      const HnPointSt *pointSt, const HnDataItemSt *dataItemSt)
{
    HnSRTreeFile *file = (HnSRTreeFile *)fileSt->opaque;

    file->remove(pointStToPoint(pointSt), dataItemStToDataItem(dataItemSt));
}

void
HnSRTreeFileSt_getFirstInRect(HnSRTreeFileSt *fileSt,
			      const HnRectSt *queryRect,
			      HnPointSt **pointSt_return,
			      HnDataItemSt **dataItemSt_return)
{
    HnSRTreeFile *file = (HnSRTreeFile *)fileSt->opaque;
    HnPoint point;
    HnDataItem dataItem;

    if ( queryRect == NULL ) {
	file->getFirst(&point, &dataItem);
    }
    else {
	file->getFirst(rectStToRect(queryRect), &point, &dataItem);
    }

    if ( point == HnPoint::null ) {
	*pointSt_return = NULL;
	*dataItemSt_return = NULL;
    }
    else {
	*pointSt_return = pointToPointSt(point);
	*dataItemSt_return = dataItemToDataItemSt(dataItem);
    }
}

void
HnSRTreeFileSt_getFirstInSphere(HnSRTreeFileSt *fileSt,
				const HnSphereSt *querySphere,
				HnPointSt **pointSt_return,
				HnDataItemSt **dataItemSt_return)
{
    HnSRTreeFile *file = (HnSRTreeFile *)fileSt->opaque;
    HnPoint point;
    HnDataItem dataItem;

    if ( querySphere == NULL ) {
	file->getFirst(&point, &dataItem);
    }
    else {
	file->getFirst(sphereStToSphere(querySphere), &point, &dataItem);
    }

    if ( point == HnPoint::null ) {
	*pointSt_return = NULL;
	*dataItemSt_return = NULL;
    }
    else {
	*pointSt_return = pointToPointSt(point);
	*dataItemSt_return = dataItemToDataItemSt(dataItem);
    }
}

void
HnSRTreeFileSt_getNext(HnSRTreeFileSt *fileSt,
		       HnPointSt **pointSt_return,
		       HnDataItemSt **dataItemSt_return)
{
    HnSRTreeFile *file = (HnSRTreeFile *)fileSt->opaque;
    HnPoint point;
    HnDataItem dataItem;

    file->getNext(&point, &dataItem);

    if ( point == HnPoint::null ) {
	*pointSt_return = NULL;
	*dataItemSt_return = NULL;
    }
    else {
	*pointSt_return = pointToPointSt(point);
	*dataItemSt_return = dataItemToDataItemSt(dataItem);
    }
}

void
HnSRTreeFileSt_getInRect(HnSRTreeFileSt *fileSt, const HnRectSt *queryRect,
			 HnPointVectorSt **pointsSt_return,
			 HnDataItemVectorSt **dataItemsSt_return)
{
    HnSRTreeFile *file = (HnSRTreeFile *)fileSt->opaque;
    HnPointVector points;
    HnDataItemVector dataItems;

    file->getInRect(rectStToRect(queryRect), &points, &dataItems);

    *pointsSt_return = pointVectorToPointVectorSt(points);
    *dataItemsSt_return = dataItemVectorToDataItemVectorSt(dataItems);
}

void
HnSRTreeFileSt_getInSphere(HnSRTreeFileSt *fileSt,
			   const HnSphereSt *querySphere,
			   HnPointVectorSt **pointsSt_return,
			   HnDataItemVectorSt **dataItemsSt_return)
{
    HnSRTreeFile *file = (HnSRTreeFile *)fileSt->opaque;
    HnPointVector points;
    HnDataItemVector dataItems;

    file->getInSphere(sphereStToSphere(querySphere), &points, &dataItems);

    *pointsSt_return = pointVectorToPointVectorSt(points);
    *dataItemsSt_return = dataItemVectorToDataItemVectorSt(dataItems);
}

void
HnSRTreeFileSt_getNeighbors(HnSRTreeFileSt *fileSt,
			    const HnPointSt *queryPointSt, int maxCount,
			    HnPointVectorSt **pointsSt_return,
			    HnDataItemVectorSt **dataItemsSt_return)
{
    HnSRTreeFile *file = (HnSRTreeFile *)fileSt->opaque;
    HnPointVector points;
    HnDataItemVector dataItems;

    file->getNeighbors(pointStToPoint(queryPointSt), maxCount,
		       &points, &dataItems);

    *pointsSt_return = pointVectorToPointVectorSt(points);
    *dataItemsSt_return = dataItemVectorToDataItemVectorSt(dataItems);
}

void
HnSRTreeFileSt_getColoredNeighbors(HnSRTreeFileSt *fileSt,
				   const HnPointVectorSt *queryPointsSt,
				   int maxCount,
				   HnPointVectorSt **pointsSt_return,
				   HnDataItemVectorSt **dataItemsSt_return,
				   HnSRTreeCompColorsFunc *compColorsFunc)
{
    HnSRTreeFile *file = (HnSRTreeFile *)fileSt->opaque;
    HnPointVector points;
    HnDataItemVector dataItems;

    file->getColoredNeighbors(pointVectorStToPointVector(queryPointsSt),
			      maxCount,
			      &points, &dataItems,
			      compColorsFunc);

    *pointsSt_return = pointVectorToPointVectorSt(points);
    *dataItemsSt_return = dataItemVectorToDataItemVectorSt(dataItems);
}

int
HnSRTreeFileSt_getDimension(HnSRTreeFileSt *fileSt)
{
    HnSRTreeFile *file = (HnSRTreeFile *)fileSt->opaque;

    return file->getDimension();
}

int
HnSRTreeFileSt_getBlockSize(HnSRTreeFileSt *fileSt)
{
    HnSRTreeFile *file = (HnSRTreeFile *)fileSt->opaque;

    return file->getBlockSize();
}

int
HnSRTreeFileSt_getDataItemSize(HnSRTreeFileSt *fileSt)
{
    HnSRTreeFile *file = (HnSRTreeFile *)fileSt->opaque;

    return file->getDataItemSize();
}

int
HnSRTreeFileSt_getHeight(HnSRTreeFileSt *fileSt)
{
    HnSRTreeFile *file = (HnSRTreeFile *)fileSt->opaque;

    return file->getHeight();
}

void
HnSRTreeFileSt_check(HnSRTreeFileSt *fileSt)
{
    HnSRTreeFile *file = (HnSRTreeFile *)fileSt->opaque;

    file->check();
}

void
HnSRTreeFileSt_print(HnSRTreeFileSt *fileSt, HnBool verbose)
{
    HnSRTreeFile *file = (HnSRTreeFile *)fileSt->opaque;

    file->print(verbose);
}

void
HnSRTreeFileSt_resetProfile(HnSRTreeFileSt *fileSt)
{
    HnSRTreeFile *file = (HnSRTreeFile *)fileSt->opaque;

    file->resetProfile();
}

void
HnSRTreeFileSt_copyProfileInto(HnSRTreeFileSt *fileSt,
			       HnSRTreeProfileSt *profile)
{
    HnSRTreeFile *file = (HnSRTreeFile *)fileSt->opaque;

    file->copyProfileInto(profile);
}

HnBool
HnSRTreeFileSt_dumpToFile(HnSRTreeFileSt *fileSt, const char *fileName)
{
    HnSRTreeFile *file = (HnSRTreeFile *)fileSt->opaque;

    return file->dumpToFile(fileName);
}

HnBool
HnSRTreeFileSt_dumpToFileStream(HnSRTreeFileSt *fileSt, FILE *fp)
{
    HnSRTreeFile *file = (HnSRTreeFile *)fileSt->opaque;

    return file->dumpToFileStream(fp);
}

void
HnSRTreeFileSt_setProperties(HnSRTreeFileSt *fileSt,
			     const HnPropertiesSt *properties)
{
    HnSRTreeFile *file = (HnSRTreeFile *)fileSt->opaque;

    file->setProperties(propertiesStToProperties(properties));
}

void
HnSRTreeFileSt_getProperties(HnSRTreeFileSt *fileSt,
			     HnPropertiesSt *propertiesSt_return)
{
    HnSRTreeFile *file = (HnSRTreeFile *)fileSt->opaque;

    propertiesToPropertiesSt(file->getProperties(), propertiesSt_return);
}

void
HnSRTreeFileSt_setDebug(HnBool debug)
{
    HnSRTreeFile::setDebug(debug);
}

/*
 * Conversion functions
 */

static HnPointSt *
pointToPointSt(const HnPoint &point)
{
    int dimension = point.getDimension();
    HnPointSt *pointSt;

    pointSt = HnPointSt_allocate(dimension);
    memcpy(pointSt->coords, point.getCoords(), sizeof(double) * dimension);

    return pointSt;
}

static HnPoint
pointStToPoint(const HnPointSt *pointSt)
{
    HnPoint point;

    point = new_HnPoint(pointSt->dimension);
    memcpy(point.getCoords(), pointSt->coords,
	   sizeof(double) * pointSt->dimension);

    return point;
}

static HnPointVectorSt *
pointVectorToPointVectorSt(const HnPointVector &points)
{
    HnPointVectorSt *pointsSt;
    int i;

    pointsSt = HnPointVectorSt_allocate();

    for ( i=0; i<points.size(); i++ ) {
	HnPointVectorSt_addElement(pointsSt,
				   pointToPointSt(points.elementAt(i)));
    }

    return pointsSt;
}

static HnPointVector
pointVectorStToPointVector(const HnPointVectorSt *pointsSt)
{
    HnPointVector points;
    int i;

    points = new_HnPointVector();

    for ( i=0; i<pointsSt->size; i++ ) {
	points.addElement(pointStToPoint(pointsSt->elements[i]));
    }

    return points;
}

static HnDataItemSt *
dataItemToDataItemSt(const HnDataItem &dataItem)
{
    HnDataItemSt *dataItemSt;

    dataItemSt =
	HnDataItemSt_allocate(dataItem.toCharArray(), dataItem.length());

    return dataItemSt;
}

static HnDataItem
dataItemStToDataItem(const HnDataItemSt *dataItemSt)
{
    HnDataItem dataItem;

    dataItem = new_HnDataItem(dataItemSt->buffer, dataItemSt->length);
    return dataItem;
}

static HnDataItemVectorSt *
dataItemVectorToDataItemVectorSt(const HnDataItemVector &dataItems)
{
    HnDataItemVectorSt *dataItemsSt;
    int i;

    dataItemsSt = HnDataItemVectorSt_allocate();

    for ( i=0; i<dataItems.size(); i++ ) {
	HnDataItemVectorSt_addElement
	    (dataItemsSt, dataItemToDataItemSt(dataItems.elementAt(i)));
    }

    return dataItemsSt;
}

static HnDataItemVector
dataItemVectorStToDataItemVector(const HnDataItemVectorSt *dataItemsSt)
{
    HnDataItemVector dataItems;
    int i;

    dataItems = new_HnDataItemVector();

    for ( i=0; i<dataItemsSt->size; i++ ) {
	dataItems.addElement(dataItemStToDataItem(dataItemsSt->elements[i]));
    }

    return dataItems;
}


static HnSphere
sphereStToSphere(const HnSphereSt *sphereSt)
{
    HnPoint center;
    HnSphere sphere;
    int axis;

    center = new_HnPoint(sphereSt->center->dimension);

    for ( axis=0; axis<sphereSt->center->dimension; axis++ ) {
	center.setCoordAt(sphereSt->center->coords[axis], axis);
    }

    sphere = new_HnSphere(center, sphereSt->radius);

    return sphere;
}

static HnRect
rectStToRect(const HnRectSt *rectSt)
{
    HnRect rect;
    int axis;

    rect = new_HnRect(rectSt->dimension);

    for ( axis=0; axis<rectSt->dimension; axis++ ) {
	rect.setRangeAt(rectSt->ranges[axis].min,
			rectSt->ranges[axis].max, axis);
    }

    return rect;
}

static HnProperties
propertiesStToProperties(const HnPropertiesSt *propertiesSt)
{
    HnProperties properties;
    int i;

    properties = new_HnProperties();

    for ( i=0; i<propertiesSt->keys->size; i++ ) {
	properties.setProperty(propertiesSt->keys->elements[i]->buffer,
			       propertiesSt->values->elements[i]->buffer);
    }

    return properties;
}

static void
propertiesToPropertiesSt(const HnProperties &properties,
			 HnPropertiesSt *propertiesSt_return)
{
    int i;

    HnPropertiesSt_removeAllProperties(propertiesSt_return);

    for ( i=0; i<properties.size(); i++ ) {
	HnString key = properties.getKeyAt(i);
	HnString value = properties.getValueAt(i);

	HnPropertiesSt_setProperty(propertiesSt_return,
				   (char *)key, (char *)value);
    }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合免费观看高清在线观看| 亚洲靠逼com| 色综合久久88色综合天天免费| 亚洲蜜臀av乱码久久精品蜜桃| 8x8x8国产精品| 99久久婷婷国产| 麻豆久久久久久| 亚洲精品va在线观看| 久久久久久免费| 欧美日韩成人综合天天影院| 岛国精品在线观看| 午夜精彩视频在线观看不卡| 国产精品女同一区二区三区| 日韩一区二区三区四区| 在线精品观看国产| 粉嫩av一区二区三区| 久久精品噜噜噜成人88aⅴ| 亚洲一区二区三区爽爽爽爽爽| 国产欧美中文在线| 久久这里只有精品6| 宅男噜噜噜66一区二区66| 日本乱人伦aⅴ精品| 不卡一二三区首页| 春色校园综合激情亚洲| 极品美女销魂一区二区三区| 亚洲午夜激情网站| 一区二区在线观看不卡| 最近日韩中文字幕| 一区在线播放视频| 欧美国产精品中文字幕| xnxx国产精品| 久久先锋资源网| 久久伊99综合婷婷久久伊| 538prom精品视频线放| 欧美性猛交xxxx黑人交| 色偷偷成人一区二区三区91| 99麻豆久久久国产精品免费| 成人精品电影在线观看| 成人在线视频一区| 成人午夜碰碰视频| 成人午夜视频在线观看| 成人av免费在线观看| 丁香婷婷综合激情五月色| 国产精品888| 国产69精品一区二区亚洲孕妇| 555夜色666亚洲国产免| 欧美高清视频在线高清观看mv色露露十八| 欧洲av在线精品| 欧美体内she精视频| 欧美人与性动xxxx| 日韩欧美色电影| 337p粉嫩大胆噜噜噜噜噜91av| 精品成人私密视频| 中文字幕av不卡| 日韩伦理免费电影| 亚洲国产毛片aaaaa无费看 | 久久aⅴ国产欧美74aaa| 久久99国产精品久久99| 国产真实乱偷精品视频免| 国产经典欧美精品| 色综合天天狠狠| 欧美日韩国产高清一区二区| 91精品国产综合久久福利| 26uuu另类欧美亚洲曰本| 国产日产亚洲精品系列| 国产精品久久网站| 亚洲自拍偷拍九九九| 麻豆一区二区在线| 懂色av中文一区二区三区| 色悠久久久久综合欧美99| 91精品免费在线| 国产欧美一区二区精品久导航| 亚洲欧洲成人精品av97| 偷拍自拍另类欧美| 国产福利电影一区二区三区| 91麻豆免费在线观看| 欧美一区二区在线免费观看| 国产日韩精品一区二区浪潮av| 亚洲精品欧美二区三区中文字幕| 视频一区视频二区中文| 国产激情一区二区三区| 在线视频亚洲一区| 精品1区2区在线观看| 亚洲精品乱码久久久久久| 麻豆91精品视频| 91麻豆精品在线观看| 日韩免费视频一区二区| 综合久久一区二区三区| 日本色综合中文字幕| av电影在线观看一区| 欧美欧美欧美欧美| 国产精品久久一卡二卡| 色噜噜狠狠色综合欧洲selulu| 日韩一区国产二区欧美三区| 国产精品视频在线看| 日韩主播视频在线| 97精品国产97久久久久久久久久久久| 717成人午夜免费福利电影| 中文字幕不卡三区| 美女视频一区二区| 在线视频你懂得一区| 精品裸体舞一区二区三区| 亚洲情趣在线观看| 国产成人亚洲综合a∨婷婷| 欧美日韩国产精品成人| 综合亚洲深深色噜噜狠狠网站| 久久精品国产网站| 欧美男女性生活在线直播观看| 国产精品素人一区二区| 国产精品综合在线视频| 777亚洲妇女| 亚洲最大成人网4388xx| 成人丝袜18视频在线观看| 精品国免费一区二区三区| 午夜精品一区二区三区三上悠亚| av电影一区二区| 欧美国产97人人爽人人喊| 激情图片小说一区| 日韩视频免费观看高清完整版 | 91精品国产综合久久精品麻豆| 亚洲欧美日韩成人高清在线一区| 国产精品一级二级三级| 欧美成人一区二区| 欧美bbbbb| 日韩一区二区三区视频在线观看 | 国产高清一区日本| 欧美成人精品1314www| 日韩电影一二三区| 欧美人狂配大交3d怪物一区| 一区二区三区四区高清精品免费观看 | 色婷婷国产精品| 亚洲三级久久久| 91视视频在线观看入口直接观看www| 久久久99免费| 国产成人自拍在线| 国产精品伦理一区二区| 成人在线综合网| 亚洲日穴在线视频| 色先锋资源久久综合| 亚洲精品视频自拍| 欧美在线三级电影| 五月激情六月综合| 日韩午夜精品视频| 国内欧美视频一区二区| 久久先锋影音av| 国产91丝袜在线播放| 欧美激情中文字幕一区二区| 国产成a人亚洲精| 中文字幕亚洲区| 在线观看日韩国产| 日韩av中文字幕一区二区| 日韩视频国产视频| 国产精品一品二品| 亚洲欧美日韩国产另类专区| 欧美午夜免费电影| 另类小说一区二区三区| 久久久蜜桃精品| jlzzjlzz亚洲日本少妇| 亚洲一二三级电影| 日韩免费高清av| 国产91精品一区二区| 亚洲精品国产无天堂网2021| 欧美三级韩国三级日本一级| 麻豆精品视频在线观看免费| 久久久国产精品午夜一区ai换脸| 99在线精品一区二区三区| 亚洲国产sm捆绑调教视频| 欧美大片一区二区| 99久久夜色精品国产网站| 日日夜夜精品视频免费| 国产午夜一区二区三区| 欧美综合天天夜夜久久| 麻豆国产精品官网| 中文字幕一区二区三区视频| 欧美日韩精品一区二区三区蜜桃| 激情小说亚洲一区| 亚洲精品乱码久久久久| 日韩美女主播在线视频一区二区三区 | 日韩视频一区在线观看| 岛国精品一区二区| 日欧美一区二区| 国产精品欧美一区喷水| 欧美日韩亚洲丝袜制服| 国产成人鲁色资源国产91色综 | 国内精品免费**视频| 亚洲乱码国产乱码精品精可以看| 欧美精品高清视频| 成人美女视频在线观看18| 石原莉奈在线亚洲三区| 国产精品久久久久久久午夜片| 欧美日韩成人在线一区| 波多野结衣中文字幕一区二区三区| 日韩av一区二| 亚洲激情在线激情| 久久精品在这里| 日韩欧美色综合| 欧美日韩精品三区| 91在线观看视频| 国产成人免费av在线| 秋霞av亚洲一区二区三|