青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Cpper
C/C++高級工程師 Android高級軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語言 程序猿

本文主要涉及boost中algorithm之string問題
基本的字符串函數類型有
替換
裁剪
大小寫替換
正則表達式
切割
判斷
和擦除操作等等
//! boost之2:字符串算法類 
#include <string>
#include 
<vector>
#include 
<iostream>
#include 
<iterator>
#include 
<functional>
#include 
<boost/algorithm/string.hpp>

using namespace std;
using namespace boost;

int main()
{  
    
//! 字符串 
    string str(" abc-*-ABC-*-aBc ");
    
    
//! 以-或者*切割字符串 
    vector<std::string> ret;
    split(ret,str,is_any_of(
"-*"),token_compress_on);

    
for(unsigned int index=0;index<ret.size();index++)
    {
        cout
<<index<<":"<<ret[index]<<endl;
    };
    
    
//! 切換為小寫
    to_lower(str); 
    cout
<<"*"<<str<<"*"<<endl;
    
//! 去掉左邊的空格
    trim_left(str);
    cout
<<"*"<<str<<"*"<<endl;
    
//! 去掉右邊的空格
    trim_right(str);
    cout
<<"*"<<str<<"*"<<endl;
    
    
//! 替換
    replace_all(str,"a","A"); 
    cout
<<str<<endl;
    
//! 擦除 
    cout<<erase_all_copy(str,"A")<<endl;
    
    replace_nth(str,
"c",2,"ccsdu2004"); 
    cout
<<str<<endl;
    
    
//! 擦除給定范圍
    cout<<erase_range_copy(str,make_iterator_range(str.begin()+2,str.begin()+5))<<endl; 
    
    cout
<<"is start with:A:"<<starts_with(str,string("A"))<<endl;
    cout
<<"is end with:C:"<<ends_with(str,string("C"))<<endl;
    cout
<<"is contain with:ccs:"<<contains(str,string("ccs"))<<endl;
    
    cout
<<endl;
    system(
"PAUSE");
    
return 0;
}


posted @ 2010-08-10 10:11 ccsdu2009 閱讀(643) | 評論 (0)編輯 收藏
 
發一系列關于boost庫的使用文章以備使用
//! boost庫引導1.minmax 
#include <list>
#include 
<algorithm>
#include 
<cstdlib>
#include 
<iostream>
#include 
<boost/algorithm/minmax.hpp>
#include 
<boost/algorithm/minmax_element.hpp>

using namespace std;
inline 
void Print(int i)
{
    std::cout
<<i<<std::endl;  
}

inline 
int Rand()
{
    
return rand()%10;       
}

int main()
{
    list
<int> l;
    typedef list
<int>::const_iterator iterator;
    
//! 使用給定泛函子生成12個隨機數并推入鏈表 
    generate_n(front_inserter(l),12,Rand);
    std::for_each(l.begin(),l.end(),Print);
    std::cout
<<"list size is:"<<l.size()<<std::endl;
    
//! 獲取給定序列的對大最小值,返回為std::pair<..,..> 
    pair<iterator,iterator> result = boost::minmax_element(l.begin(),l.end());
    cout
<<"the smallest element is:"<<*(result.first)<<endl;
    cout
<<"the largest element is:"<<*(result.second)<<endl;
    
//! 獲取第一個最小元素 
    iterator minitr = boost::first_min_element(l.begin(),l.end());
    cout
<<"first min element is:"<<*minitr<<endl;
    system(
"PAUSE");
    
return 1;
}

 
//! 后論:似乎沒看到什么強大的功能
//!ccsdu2004

posted @ 2010-08-09 13:31 ccsdu2009 閱讀(680) | 評論 (1)編輯 收藏
 
如下:
int Parse(int argc,char* argv[])
{
    
if(argc < 2)
    {
        cout
<<"need para."<<endl;
        system(
"PAUSE");
        
return -1;
    }

    
bool is_input_file_para = false;
    
bool is_output_file_para = false;

    
for(int i = 1; i < argc;i++)
    {
        
if(strcmp(argv[i],"-read"== 0)
        {
            is_input_file_para 
= true;
            is_output_file_para 
= false;
        }
        
else if(strcmp(argv[i],"-write"== 0)
        {
            is_input_file_para 
= false;
            is_output_file_para 
= true;
        }
        
else
        {
            
if(is_input_file_para == true)
            {
                input_file_name 
= argv[i];
                is_output_file_para 
= true;
            }
            
else if(is_output_file_para == true)
            {
                output_file_name 
= argv[i];
                is_input_file_para 
= true;
            }
        }
    }
    
return 1;
}

該函數解析命令行獲取輸入文件和輸出文件名字
使用方法為:
srilm_lm -read gonewiththewind.count -write gonewiththewind.lm
其中srilm_lm為程序名
該函數可使用于win32和utunbu下
posted @ 2010-08-04 19:31 ccsdu2009 閱讀(2312) | 評論 (1)編輯 收藏
 
由于需要使用c++對字符串進行切割
故對相關的知識做一個總結
1.使用
std::stringstream
切割字符串
比如:
    std::stringstream str(text);
    std::
string tok;
    
while(getline(str,tok,(char)32)){}
2.還是使用std::stringstream流析出
比如:
    std::stringstream str(s);
    
string t1,t2,t3,t4;
    str 
>>t1;
    str 
>>t2;
    str 
>>t3;
    str 
>>t4;
3.使用strtok
比如:
char* token = strtok(str.c_str()," ");
4.使用boost的
tokenizer
比如:
boost::tokenizer<> ss(s,char_separator(' '));
for(boost::tokenizer<>::iterator beg=ss.begin(); beg!=ss.end(); ++beg){cout<<*beg<<endl;}
不過其默認的分隔為空格和標點符號
如果需要定制其模板參數
可以按照下面的書寫:
class char_separator
{
public:      
    char_separator(
char c):sep(c){}
    
void reset(){}
    template 
<typename InputIterator,typename Token>
    
bool operator()(InputIterator& next,InputIterator end,Token& tok)
    {
        tok 
= Token();
        
for(;next != end && *next == sep;++next);
        
if (next == end) 
            
return false;
        
for(;next != end && *next != sep;++next)
        {
            tok 
+= *next;
        }
        
return true;
    }
private:
    
char sep;
}; 
比如:
boost::tokenizer<char_separator> mytok(str,char_separator('@'));
    
for(boost::tokenizer<char_separator>::iterator beg=mytok.begin(); beg!=mytok.end(); ++beg)
    {
        
if(index == 0)
            text1 
= *beg;
        
else if(index == 1)
            text2 
= *beg;
        
else if(index == 2)
            text3 
= *beg;
        
else if(index == 3)
            text4 
= *beg;            
        index
++;
    }
5.還是boost.
#include <cstdlib>
#include 
<iostream>
#include 
<string>
#include 
<vector>
#include 
<iostream>
#include 
<iterator>
#include 
<functional>
#include 
<boost/algorithm/string/classification.hpp>
#include 
<boost/algorithm/string/split.hpp>
#include 
<boost/algorithm/string/find_iterator.hpp>

using namespace std;
using namespace boost;

int main(int argc, char *argv[])
{
    vector
<string> strlist;
    
string str("12 34 56 678  ccsdu2004");
    split(strlist,str,is_any_of(
" "),token_compress_on);

    
for(unsigned int index=0;index<strlist.size();index++)
    {
        cout
<<index <<":"<<strlist[index]<<endl;
    };
        
    system(
"PAUSE");
    
return EXIT_SUCCESS;
}
6.其他不知道的方法若干
...

posted @ 2010-08-04 14:16 ccsdu2009 閱讀(2902) | 評論 (3)編輯 收藏
 
Srilm的全稱是Stanford Research Institute Language Modeling Toolkit
他被用來構建和應用統計語言模型,主要用于語音識別,統計標注和切分,以及機器翻譯等工作
由于需要我要在win32下編譯她
可是在網上找到很多都是基于cygwin的交叉式編譯
使用起來總是有點問題
不過還好找到了一個使用srilm的vc解決方案
在這里:
http://www.inference.phy.cam.ac.uk/kv227/srilm/
然后需要做的就是下載srilm解壓放在srilm_vc2008 or srilm_2005文件夾下編譯即可

posted @ 2010-08-03 10:46 ccsdu2009 閱讀(2108) | 評論 (1)編輯 收藏
 
插件系統是游戲引擎中一個比較大的子系統
這個系統的目的就是動態增加引擎的功能而不必修改引擎接口

之前雖然做過插件這塊‘
但是感覺設計的不好
這次總算弄了一個比較完備的插件系統

相關對象和結構
1.插件 Plugin
///////////////////////////////////////////////////////////
/// 定義引擎插件數據結構
///////////////////////////////////////////////////////////
class Plugin
{
public:
    Plugin()
    {   
        Reset();
    }   
    
///////////////////////////////////////////////////////
    
/// 插件重啟
    
///////////////////////////////////////////////////////     
    void Reset();
    
///////////////////////////////////////////////////////
    
/// 插件名字
    
///////////////////////////////////////////////////////     
    engine_string name;
    
///////////////////////////////////////////////////////
    
/// 插件作者
    
///////////////////////////////////////////////////////     
    engine_string maker;
    
///////////////////////////////////////////////////////
    
///插件描述
    
///////////////////////////////////////////////////////     
    engine_string description;
    
///////////////////////////////////////////////////////
    
/// 插件版本
    
///////////////////////////////////////////////////////     
    ushort  vermain;
    
ushort  versub;
    
ushort  verpitch;
    
///////////////////////////////////////////////////////
    
/// 插件類型
    
///////////////////////////////////////////////////////     
    ushort  type;
    
///////////////////////////////////////////////////////
    
/// 插件合法性標記
    
///////////////////////////////////////////////////////     
    ushort  valid;
};
插件數據結構只包含了插件的一些基本信息 比如名字,描述,作者,功能類型等

2.PluginLoader
////////////////////////////////////////////////////////
/// 定義插件載入類
////////////////////////////////////////////////////////
class PluginLoader
{
public:
    
/////////////////////////////////////////////////////
    
/// 構造,析構插件載入
    
/////////////////////////////////////////////////////
    PluginLoader();
    
~PluginLoader();
public:     
    
/////////////////////////////////////////////////////
    
/// 載入插件和卸載
    
/////////////////////////////////////////////////////
    bool  Load(const engine_string &plugin);
    
void  Free();     
    
/////////////////////////////////////////////////////
    
/// 獲取插件指定符號地址
    
/////////////////////////////////////////////////////     
    void* GetAddress(const engine_string &name);
    
/////////////////////////////////////////////////////
    
/// 檢測插件是否合法
    
/////////////////////////////////////////////////////     
    bool  IsValid()const{return handle != NULL;}
    
/////////////////////////////////////////////////////
    
/// 獲取插件句柄
    
/////////////////////////////////////////////////////
    void* GetHandle(){return handle;}
    
void* GetHandle()const{return handle;}   
    
/////////////////////////////////////////////////////
    
/// 獲取插件名
    
/////////////////////////////////////////////////////
    engine_string GetPluginName()const{return pluginame;}   
private:     
    
void*         handle;
    engine_string pluginame;   
};

PluginLoader主要是載入插件文件并獲取給定符號的函數指針
這個并沒沒有暴漏出來供用戶調用
3.PluginFactory

///////////////////////////////////////////////////////////
/// 定義引擎插件工廠基類
///////////////////////////////////////////////////////////
class GAPI PluginFactory : public Object
{
public:
    
///////////////////////////////////////////////////////
    
/// 構造和析構引擎插件工廠基類
    
///////////////////////////////////////////////////////
    PluginFactory();
    
virtual ~PluginFactory();
public:
    
///////////////////////////////////////////////////////
    
/// 注冊,反注冊插件
    
///////////////////////////////////////////////////////
    virtual bool ENGINE_CALL RegisterFactory(const engine_string& plugin) = 0;
    
virtual void ENGINE_CALL UnregisterFacory() = 0;
public:     
    
///////////////////////////////////////////////////////
    
/// 獲取對應插件類型標識
    
///////////////////////////////////////////////////////     
    virtual ushort GetPluginType()const = 0;
private:
    DECLARE_OBJECT(PluginFactory)        
};

插件工廠是一切需要從插件中獲取功能的對象工廠
她主要提供了插件的注冊和反注冊以及獲取插件工廠所對應的插件類型

4.PluginManager 插件管理器
///////////////////////////////////////////////////////////
/// 定義引擎插件管理器
///////////////////////////////////////////////////////////
class GAPI PluginManager
{   
public:
    
///////////////////////////////////////////////////////
    
/// 獲取,設置插件目錄
    
///////////////////////////////////////////////////////
    engine_string GetPluginFolder()const;
    
void SetPluginFolder(const engine_string& folder);
public:
    
///////////////////////////////////////////////////////
    
/// 插件裝載和卸載
    
///////////////////////////////////////////////////////
    void InstallPlugin();   
    
void UnstallPlugin();   
public:
    
///////////////////////////////////////////////////////
    
/// 注冊,反注冊插件工廠
    
///////////////////////////////////////////////////////        
    bool RegisterPluginFactory(PluginFactory* factory);
    
bool UnregisterPluginFactory(PluginFactory* factory);
public:
    
///////////////////////////////////////////////////////
    
/// 獲取插件個數
    
///////////////////////////////////////////////////////        
    ushort ENGINE_CALL GetPluginNumber()const;
    
///////////////////////////////////////////////////////
    
/// 獲取給定索引插件信息
    
///////////////////////////////////////////////////////
    Plugin ENGINE_CALL GetPluginByType(ushort index)const;
    
///////////////////////////////////////////////////////
    
/// 獲取給定索引的插件名
    
///////////////////////////////////////////////////////  
    engine_string ENGINE_CALL GetPluginNameByType(ushort index)const;   
    
///////////////////////////////////////////////////////
    
/// 獲取給定插件類型的插件載入類
    
///////////////////////////////////////////////////////      
private:
    PluginManagerImpl  
*impl;
    DEFINE_SINGLETON(PluginManager);
};

}

//! 定義插件管理器單件
#define GLOBAL_PLUGINMANAGER_PTR (core::PluginManager::GetInstance())
插件管理器是插件系統的核心,充當了插件管理者的角色
要使用插件線需要設置插件目錄
然后裝載插件
然后注冊特定的插件工廠
然后就可以通過插件工廠獲取插件對象指針咯

在這里插件管理器是作為一個單間使用的
具體的宏 DEFINE_SINGLETON(PluginManager);
展開之后為:
#define DEFINE_SINGLETON(SingletonObject)\
private:\
    
static std::auto_ptr<SingletonObject> instance;\
protected:\
    SingletonObject();\
public:\
    
~SingletonObject();\
    
static SingletonObject* GetInstance(){\
    
if(!instance.get())\
    {\
        instance 
= std::auto_ptr<SingletonObject>(new SingletonObject());\
    }\
    
return instance.get();\
}

#define IMPLEMENT_SINGLETON(SingletonObject)\
std::auto_ptr
<SingletonObject> SingletonObject::instance(NULL);
下面是具體的一個插件對象---攝像頭捕獲類
如下:通過調用CaptureImage就可以把攝像頭所見程序保存為image了
///////////////////////////////////////////////////////////
/// 定義攝像頭捕獲類(以插件形式提供之)
///////////////////////////////////////////////////////////
class GAPI CapturePicture : public Object
{
public:
    
///////////////////////////////////////////////////////
    
/// 構造和析構
    
///////////////////////////////////////////////////////
    CapturePicture();
    
virtual ~CapturePicture();
public:
    
///////////////////////////////////////////////////////
    
/// 獲取攝像頭圖形數據
    
///////////////////////////////////////////////////////
    virtual bool CaptureImage(RefPtr<Image> &image);
private:
    DECLARE_OBJECT(CapturePicture)        
};

通過調用CaptureImage就可以把攝像頭所見程序保存為image了

下面這個是對于的工廠:
///////////////////////////////////////////////////////////
/// 定義攝像頭捕獲工廠類
///////////////////////////////////////////////////////////
class GAPI CapturePictureFactory : public PluginFactory
{
public:
    
///////////////////////////////////////////////////////
    
/// 構造和析構
    
///////////////////////////////////////////////////////
    CapturePictureFactory();
    
virtual ~CapturePictureFactory();
public:
    
///////////////////////////////////////////////////////
    
/// 獲取攝像頭捕獲指針
    
///////////////////////////////////////////////////////
    CapturePicture* Create();
    
///////////////////////////////////////////////////////
    
/// 注冊插件
    
///////////////////////////////////////////////////////
    bool ENGINE_CALL RegisterFactory(const engine_string& plugin);
    
void ENGINE_CALL UnregisterFacory();
    
///////////////////////////////////////////////////////
    
/// 獲取對應插件類型標識
    
///////////////////////////////////////////////////////     
    ushort GetPluginType()const;
private:
    PluginLoader
* loader;
    DECLARE_OBJECT(CapturePictureFactory)
};
這個只是多了一個函數Createer而已

然后再說具體的插件部分
插件3函數:
extern "C" void    GAPI Plugin_Info(Plugin &plugin);         
extern "C" Object* GAPI Plugin_Install();
extern "C" void    GAPI Plugin_Unstall(void*);  
具體為通過Plugin_Info
通過Plugin_Install獲取插件實際對象指針
通過Plugin_Unstall卸載插件

最后一個部分是插件的使用小例子:
#include <cstdlib>
#include 
<iostream>
#include 
<GEngine/Header.hpp>

using namespace std;

int main(int argc, char *argv[])
{
    GLOBAL_PLUGINMANAGER_PTR
->SetPluginFolder("plugin");
    GLOBAL_PLUGINMANAGER_PTR
->InstallPlugin();
    std::cout
<<"插件個數:"<<GLOBAL_PLUGINMANAGER_PTR->GetPluginNumber()<<std::endl;
    core::CapturePictureFactory factory;
    std::cout
<<"注冊視頻捕獲插件工廠:"<<GLOBAL_PLUGINMANAGER_PTR->RegisterPluginFactory(&factory)<<std::endl;
    core::CapturePicture
* capturepicture = factory.Create();
    std::cout
<<"插件工廠產品標識:"<<factory.GetPluginType()<<std::endl;
    core::RefPtr
<core::Device> device = core::InitDevice("插件測試");
    
if(!capturepicture)
    {
        std::cout
<<"生成攝像頭捕獲指針失敗了"<<std::endl;
        system(
"PAUSE");
        
return -1;
    }
    core::RefPtr
<core::ResourceManager> resmgr = device->GetResourceManager();
    core::RefPtr
<core::ImageManager> imagemanager = resmgr->GetImageManager();
    core::RefPtr
<core::Image> image = imagemanager->CreateObject("capturepicture");
   
    capturepicture
->CaptureImage(image);
    std::cout
<<"save image is:"<<image->Save("capture.bmp")<<std::endl;
   
    BEGIN_LOOP(device)
       glClearColor(
0.1,0.3,0.2,1.0f);
       glClear(GL_COLOR_BUFFER_BIT 
| GL_DEPTH_BUFFER_BIT);     
    END_LOOP(device)   
   
    GLOBAL_PLUGINMANAGER_PTR
->UnregisterPluginFactory(&factory);
    GLOBAL_PLUGINMANAGER_PTR
->UnstallPlugin();
    
//system("PAUSE");
    return EXIT_SUCCESS;
}
題后話:
當前引擎支持xp,vista,win7環境
在編譯器支持vc7.1,vc8,vc9,devc++,codeblock
也許在不久的將來我會弄一個linux版本的
posted @ 2010-07-29 16:40 ccsdu2009 閱讀(2563) | 評論 (17)編輯 收藏
 
一直以來使用FreeImage保存圖像總是采用下面的辦法:

FIBITMAP* bitmap =FreeImage_Allocate(width,height,24);    
const unsigned char* source = data;
    
for(int y=0; y < height; y++ )
    {
        unsigned 
char* scanline = (unsigned char*)FreeImage_GetScanLine(bitmap, height - y - 1 );     
        memcpy(scanline,data,
sizeof(source[0]) * width);
        data 
+= width;
    }
FreeImage_Save(FIF_BMP,bitmap,file,0)
不過今天看到了函數:
FreeImage_ConvertFromRawBits
使用它可以更加快速的保存圖形
如下:
FIBITMAP* bitmap = FreeImage_ConvertFromRawBits(data,width,height,pitch,24,FI_RGBA_BLUE_MASK, FI_RGBA_GREEN_MASK, FI_RGBA_RED_MASK,FALSE); 
    
然后調用FreeImageSave即可

另外關于獲取FreeImage圖形到數組
也有2個辦法
一個是逐行復制
一個是使用memcpy(data,FreeImage.GetDibBits())
當然也可以逐像素復制咯
posted @ 2010-07-21 20:14 ccsdu2009 閱讀(4400) | 評論 (0)編輯 收藏
 
大律法求取圖形閾值
放在這里

int GetOtsuValue(unsigned char* data,int width,int height)
{
    
int table[256];
    memset(table,
0,sizeof(int)*256);
    
for(int i = 0; i < width*height;i++)    
    {
        table[data[i]] 
++;        
    }
    
    
int sum = 0;
    
for(int i = 0 ;i < 256;i++)
    {
        sum 
+= table[i];
        
if(sum >= width*height*0.5)
           
return i;
    }
    
return 255;
}


posted @ 2010-07-21 17:13 ccsdu2009 閱讀(1192) | 評論 (0)編輯 收藏
 
1.C風格的鏈接方式
比如:
#define GAPI G_DLL_API
#define G_FUNC(ret) extern "C" GAPI ret
編譯函數:
G_FUNC(Vector3) GetRandVec3();
對于msvc系列編譯器是不允許的
對于mingw系列是被允許的咯
2.對模板支持的差別
對沒有實際調用的模板類成員函數存在的問題處理方式的差異
msvc可以給出編譯錯誤
mingw不能

舉例來說:
template <class T>
struct Vec2
{
    Vec2();
    Vec2(T x,T y);
    
    Vec2
<T> operator+=(const Vec2& v2)
    {
        
return Vec(x+v2.x,y+v2.y_);  
    }

    T x_,y_;
};
實例化為
Vec2<int> v2;

3.對靜態浮點類型成員變量處理的差異
msvc不允許靜態浮點類型的成員變量
比如
struct Math
{  
    static const float PI = 3.14.15925f;
};
mingw是允許的

posted @ 2010-07-16 10:35 ccsdu2009 閱讀(560) | 評論 (1)編輯 收藏
 
先放這里改天寫吧!
posted @ 2010-06-28 20:28 ccsdu2009 閱讀(551) | 評論 (0)編輯 收藏
僅列出標題
共38頁: First 24 25 26 27 28 29 30 31 32 Last 
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一区二区三区精品国产| 99在线热播精品免费| 久久久精品一品道一区| 久久精品免费看| 亚洲高清免费| 99精品视频免费观看视频| 99在线热播精品免费99热| 午夜精品视频在线| 欧美激情精品久久久久久蜜臀| 亚洲深夜福利| 欧美激情bt| 国产综合一区二区| 一区二区三区国产盗摄| 久久嫩草精品久久久精品一| 日韩亚洲视频| 欧美1区2区| 狠狠色综合色区| 先锋影音网一区二区| a91a精品视频在线观看| 国产亚洲免费的视频看| 亚洲欧美日韩一区二区三区在线观看 | 欧美91精品| 亚洲一区二区毛片| 亚洲韩日在线| 欧美国产日韩a欧美在线观看| 亚洲欧美成人一区二区在线电影 | 免费观看在线综合色| 亚洲永久在线| 中国女人久久久| 在线日韩av| 奶水喷射视频一区| 久久久久一区二区三区四区| 国产乱码精品一区二区三区av| 宅男噜噜噜66一区二区66| 久久av红桃一区二区小说| 国产欧美日韩一区| 欧美一区二区在线| 性欧美长视频| 国产一区二区三区在线观看网站| 最新日韩在线视频| 欧美日韩一区二| 一本久久综合亚洲鲁鲁| 久久青草欧美一区二区三区| 亚洲欧洲一区二区天堂久久 | 亚洲欧美日韩在线综合| 国产精品伦理| 久久精品在线观看| 国产精品第一页第二页第三页| 性欧美在线看片a免费观看| 欧美—级在线免费片| 亚洲图片你懂的| 欧美亚洲日本国产| 亚洲高清色综合| 亚洲精品美女| 国产精品久久久久一区二区三区共| 欧美激情视频一区二区三区在线播放 | 欧美激情第3页| 精品91免费| 亚洲精品中文字幕女同| 国产精品美女| 日韩一区二区精品视频| 在线中文字幕一区| 欧美日韩国产成人在线| 久久精品系列| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲精品午夜精品| 亚洲男女自偷自拍| 亚洲国产老妈| 亚洲一区在线视频| 亚洲国产精品久久久久秋霞影院 | 亚洲欧美春色| 久久久久久久久蜜桃| 国产一区二区三区在线观看免费视频| 性欧美暴力猛交69hd| 久久久精品欧美丰满| 在线精品视频一区二区| 乱人伦精品视频在线观看| 亚洲欧美成人精品| 国产一区二区观看| 久久夜色精品国产亚洲aⅴ | 欧美99久久| 亚洲理论在线| 久久亚洲午夜电影| 亚洲激情一区| 午夜精品www| 在线成人欧美| 欧美亚洲免费电影| 欧美国产日韩一区| 亚洲午夜在线观看| 韩国精品在线观看| 欧美伦理91i| 亚洲国产小视频在线观看| 亚洲图片在区色| 国内伊人久久久久久网站视频| 久久婷婷综合激情| 99在线热播精品免费| 久久久久久一区| 一本大道久久a久久综合婷婷| 国产伦精品一区二区三区视频孕妇| 久久国产精品一区二区| 久久国产欧美精品| 亚洲精品一区二区三区婷婷月| 国产精品高清网站| 久久色在线播放| 亚洲一区国产精品| 亚洲激情成人在线| 久久久噜噜噜久久中文字幕色伊伊| 日韩午夜精品| 伊人狠狠色丁香综合尤物| 欧美午夜精品久久久久久人妖| 亚洲精品一区在线观看| 久久久久欧美精品| 亚洲一区免费看| 亚洲精品一区二区三区樱花| 国产亚洲欧美在线| 国产精品高潮呻吟| 欧美伦理91| 欧美高清视频一区二区| 久久精品一区| 亚洲二区免费| 久久久天天操| 欧美一区二区三区免费观看| 日韩一级在线| 91久久线看在观草草青青| 国内精品亚洲| 国产亚洲人成a一在线v站 | 国产精品久久久久久久久免费| 欧美mv日韩mv国产网站| 美女主播精品视频一二三四| 久久久av水蜜桃| 欧美自拍偷拍午夜视频| 小黄鸭精品aⅴ导航网站入口| 亚洲图中文字幕| 免费观看在线综合色| 亚洲精品视频免费在线观看| 在线日本成人| 亚洲国产精品成人一区二区| 黄色亚洲网站| 国语自产偷拍精品视频偷| 国产视频精品xxxx| 嫩草成人www欧美| 久久在线免费观看| 日韩一级在线| 99精品福利视频| 一区二区久久久久久| 亚洲视频1区2区| 亚洲欧美国产精品桃花| 午夜日韩电影| 久久久久久久性| 噜噜噜久久亚洲精品国产品小说| 老司机aⅴ在线精品导航| 嫩草国产精品入口| 欧美三级免费| 欧美成人免费小视频| 亚洲欧美日韩国产成人| 午夜精品亚洲| 久久亚洲免费| 欧美日韩精品一区二区三区| 国产精品久久久久av| 国产亚洲精品bt天堂精选| 精品二区视频| 亚洲另类自拍| 欧美中文在线观看| 一区二区三区视频在线| 亚洲欧美日韩在线| 久久免费黄色| 亚洲区在线播放| 亚洲在线视频网站| 久色成人在线| 国产精品yjizz| 精品动漫一区| 亚洲一本视频| 蜜臀久久99精品久久久久久9| 亚洲激情不卡| 欧美在线日韩| 欧美日韩一区二区在线播放| 国产亚洲综合性久久久影院| 亚洲人成在线观看网站高清| 午夜精品久久久久久久99水蜜桃 | 久久午夜精品一区二区| 午夜精品久久久久久久蜜桃app | 国产精品免费区二区三区观看| 伊人影院久久| 亚洲欧美综合国产精品一区| 欧美福利电影网| 欧美国产第一页| 亚洲男人的天堂在线| 欧美黑人在线观看| 好男人免费精品视频| 亚洲一区二区精品| 亚洲国产一二三| 久久久久久自在自线| 国产精品一卡二| 亚洲视频电影在线| 亚洲电影天堂av| 久久久www| 国产婷婷色一区二区三区四区| 这里只有精品丝袜| 亚洲黑丝在线| 久久这里只有|