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

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

?? database.cpp

?? firtext搜索引擎源碼
?? CPP
字號:
//// Copyright(C) 2005--2006 Institute of Computing Tech, Chinese Academy of Sciences. // All rights reserved.// This file is part of FirteX (www.firtex.org)//// Use of the FirteX is subject to the terms of the software license set forth in // the LICENSE file included with this software, and also available at// http://www.firtex.org/license.html
//// Author	: 郭瑞杰(GuoRuijie)// Email	: ruijieguo@software.ict.ac.cn// Created	: 2006/9/11//
#include "com/Com.h"
#include "com/comerror.h"
#include <assert.h>
#include <errno.h>
#include <memory>

#include <pthread.h>
#include <stdlib.h>
#include <string.h>
#include "com/linux/internal.h"
#include "com/linux/database.h"

#include "utility/XML.h"
#define FIRTEX_COMDB "FIRTEX_COMDB_PATH"

namespace firtex{	namespace com 	{
		namespace database
		{
			static int32_t initialize_count = 0;
			static char	dbPath[512] = "./plugins.xml";
			static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;

			FX_HRESULT Initialize()
			{
				firtex::com::internal::pthread_mutex_lock lock( &mutex );

				// check if we need to do initialization
				if ( initialize_count == 0 )
				{
					// check that the environment variable has been set
					if ( ! getenv( FIRTEX_COMDB ) || !*getenv(FIRTEX_COMDB) )
					{
						internal::log_printf( internal::ERROR, "Please set the environment variable " FIRTEX_COMDB " to point to the COM registry database(comdb.xml).\n" );
						return FX_E_FAIL;
					}
					strcpy(dbPath,getenv( FIRTEX_COMDB ));
					strcat(dbPath,"/plugins.xml");
				}

				// update count
				++initialize_count;
				// and we are done
				return FX_S_OK;
			}

			void Uninitialize()
			{
				// lock this module
				internal::pthread_mutex_lock lock( &mutex );

				// make sure everything is in good order
				assert( initialize_count > 0 );				

				// decrement the lock count
				--initialize_count;
				if ( initialize_count > 0 ) return;				
			}

			static char const* tmfield( THREADINGMODEL tm )
			{
				switch (tm) 
				{
				case ThreadingModelApartment: return "1";
				case ThreadingModelFree: return "2";
				case ThreadingModelBoth: return "3";
				case ThreadingModelNeutral: return "4";
				default: return "0";
				}
			}

			firtex::utility::CXMLElement* loadXMLDB(const char* dbname)
			{
				try
				{
					firtex::utility::CXMLElement* db;
					internal::pthread_mutex_lock lock( &mutex );					
					db = firtex::utility::CXMLElement::fromFile(dbname);					
					return db;
				}
				catch (...)
				{
					internal::log_printf(internal::ERROR,"load com database error.\n");						
				}			
				return NULL;
			}
			FX_HRESULT lookupInprocServer32( FX_REFCLSID rclsid, char* filename )
			{
				// need string from clsid
				wchar_t wcs_clsid[64];
				FX_StringFromGUID2( rclsid, wcs_clsid, sizeof(wcs_clsid)/sizeof(*wcs_clsid) );
				char clsid[64];
				mbstate_t state;				memset( &state, 0, sizeof(state) );
				wchar_t * wcs_clsid_ptr = wcs_clsid;
				wcsrtombs( clsid, (const wchar_t**)&wcs_clsid_ptr, sizeof(clsid)/sizeof(*clsid), &state);

				std::auto_ptr<firtex::utility::CXMLElement> db_ptr(loadXMLDB(dbPath));				
				if(!db_ptr.get())
					return FX_E_FAIL;
				firtex::utility::CXMLElement* pluginsElem = db_ptr.get();			
				
				for ( firtex::utility::ElementIterator iter = pluginsElem->getElementIterator() ; pluginsElem->hasNextElement(iter) ; )
				{
					firtex::utility::CXMLElement* pElement = pluginsElem->getNextElement( iter );
					firtex::utility::CXMLElement* clsidElem = pElement->getElementByName(_T("clsid"));
					if(!clsidElem)
						continue;
					if ( _tcsicmp(clsidElem->getValue().c_str(),clsid ))
					{
						firtex::utility::CXMLElement* fnElem = pElement->getElementByName(_T("filename"));
						if(fnElem)
						{
							strcpy(filename,getenv(FIRTEX_COMDB));
							strcat(filename,"/");
							strcat(filename,fnElem->getValue().c_str());
							strcat(filename,".so");
							return FX_S_OK;
						}						
					}

				}
				return FX_E_FAIL;			
			}

			FX_HRESULT addInprocServer32( wchar_t const* filename, com::FX_REFCLSID rclsid, wchar_t const* name, THREADINGMODEL tm, wchar_t const* VersionIndependentProgId, wchar_t const* ProgId )
			{
//				internal::log_printf( internal::INFO, "Adding InprocServer32\n" );				
//
//				try
//				{
//					// need string from clsid
//					wchar_t clsid[64];
//					FX_StringFromGUID2( rclsid, clsid, sizeof(clsid)/sizeof(*clsid) );
//
//					internal::pthread_mutex_lock lock( &mutex );
//					firtex::utility::CXMLElement* db = loadXMLDB(dbPath);
//					assert(db);
//					firtex::utility::CXMLElement* clsidsElem = db->getElementByName(_T("clsids"),true);
//					firtex::utility::CXMLElement* clsidElem = clsidsElem->addElement(_T("clsid"));
//					firtex::utility::CXMLElement* pElem = clsidElem->addElement(_T("clsid"));
//
//#ifndef _UNICODE
//					internal::zstr c_clsid( clsid);
//					char const* temp = ((char const*)c_clsid) ? ((char const*)c_clsid) : "";
//					pElem->setValue(temp);
//#else 
//					pElem->setValue(clsid);
//#endif
//
//					pElem = clsidElem->addElement(_T("name"));
//#ifndef _UNICODE
//					internal::zstr c_name(name);
//					temp = ((char const*)c_name) ? ((char const*)c_name) : "";
//					pElem->setValue(temp);
//#else
//					pElem->setValue(name);
//#endif
//					pElem = clsidElem->addElement(_T("progid"));
//#ifndef _UNICODE
//					internal::zstr c_progid( ProgId);
//					temp = ((char const*)c_progid) ? ((char const*)c_progid) : "";
//					pElem->setValue(temp);
//#else 
//					pElem->setValue(ProgId);
//#endif
//					pElem = clsidElem->addElement(_T("versionindependentprogid"));
//#ifndef _UNICODE
//					internal::zstr c_vprogid( VersionIndependentProgId);
//					temp = ((char const*)c_vprogid) ? ((char const*)c_vprogid) : "";
//					pElem->setValue(temp);
//#else 
//					pElem->setValue(VersionIndependentProgId);
//#endif
//					pElem = clsidElem->addElement(_T("threadingmodel"));
//					pElem->setValue(tmfield(tm));
//
//					pElem = clsidElem->addElement(_T("filename"));
//#ifndef _UNICODE
//					internal::zstr c_fn( filename);
//					temp = ((char const*)c_fn) ? ((char const*)c_fn) : "";
//					pElem->setValue(temp);
//#else 
//					pElem->setValue(filename);
//#endif
//					db->toFile(dbPath,true);
//					delete db;
//
//				}
//				catch (...)
//				{
//					internal::zstr c_filename( filename );
//					char const* tmp = ((char const*)c_filename) ? ((char const*)c_filename) : "";
//					internal::log_printf( internal::ERROR, "Could not register InprocServer32 (%s).\n", tmp ); 
//					return FX_E_FAIL;
//				}
				return FX_S_OK;
			}
			FX_HRESULT removeInprocServer32( com::FX_REFCLSID clsid_)
			{
			//	// need string from clsid
			//	wchar_t wcs_clsid[64];
			//	FX_StringFromGUID2( clsid_, wcs_clsid, sizeof(wcs_clsid)/sizeof(*wcs_clsid) );
			//	char clsid[64];
			//	wchar_t* wcs_clsid_ptr = wcs_clsid;
			//	wcsrtombs( clsid, (const wchar_t**)&wcs_clsid_ptr, sizeof(clsid)/sizeof(*clsid), 0 );

			//	internal::pthread_mutex_lock lock( &mutex );
			//	firtex::utility::CXMLElement* db = loadXMLDB(dbPath);
			//	assert(db);
			//	firtex::utility::CXMLElement* clsidsElem = db->getElementByName(_T("clsids"));
			//	if(!clsidsElem)
			//		return FX_S_OK;

			//	
			//	for ( firtex::utility::ElementIterator iter = clsidsElem->getElementIterator() ; clsidsElem->hasNextElement(iter) ; )
			//	{
			//		firtex::utility::CXMLElement* pElement = clsidsElem->getNextElement( iter );
			//		for ( firtex::utility::ElementIterator iter2 = pElement->getElementIterator() ; pElement->hasNextElement(iter) ; )
			//		{
			//			firtex::utility::CXMLElement* pElement2 = clsidsElem->getNextElement( iter );
			//			if ( _tcsicmp(pElement2->getValue().c_str(),clsid ) == 0 )
			//			{
			//				clsidsElem->removeElement(pElement);
			//				return FX_S_OK;
			//			}
			//		}

			//	}			
			//	db->toFile(dbPath,true);
			//	delete db;
			//	return FX_S_OK;
			}					
		}	
		
	}
}

static wchar_t regsvr32_filename[260*2+1];

extern wchar_t const* firtex::com::internal::regsvr32_get_filename()
{
	return regsvr32_filename;
}

extern firtex::com::FX_HRESULT firtex::com::internal::regsvr32_set_filename( wchar_t const* filename )
{
	if ( !filename ) filename = L"";
	if ( wcslen(filename) > sizeof(regsvr32_filename)/sizeof(*regsvr32_filename) - 1 ) return FX_E_OUTOFMEMORY;
	wcscpy( regsvr32_filename, filename );
	return FX_S_OK;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕乱码久久午夜不卡| 91精品黄色片免费大全| 久久色在线视频| 久久精品夜色噜噜亚洲a∨| 日本少妇一区二区| 欧美三级欧美一级| 亚洲欧美一区二区三区久本道91| 成人视屏免费看| 久久婷婷综合激情| 国产**成人网毛片九色| 国产精品欧美综合在线| 粉嫩嫩av羞羞动漫久久久| 欧美激情综合五月色丁香| 粉嫩嫩av羞羞动漫久久久| 日本一区二区三区久久久久久久久不| 一区二区久久久| 在线免费视频一区二区| 亚洲gay无套男同| 精品噜噜噜噜久久久久久久久试看 | 99综合影院在线| 国产精品网站导航| 精品在线一区二区三区| 欧美色综合影院| 视频在线观看91| 日韩一级免费观看| 国产成人亚洲综合a∨猫咪| 国产精品久久久一本精品| 国产一区二区伦理片| 欧美国产1区2区| 色综合久久久久久久久久久| 夜夜精品视频一区二区 | 午夜精品一区二区三区电影天堂| 国产成人自拍网| 亚洲日本乱码在线观看| 欧美日产国产精品| 韩国v欧美v亚洲v日本v| 中文字幕va一区二区三区| 色综合激情五月| 免费的成人av| 国产欧美日韩另类一区| 日韩精品一区二区三区四区| 激情av综合网| 亚洲日本乱码在线观看| 日韩一区二区三区在线视频| 国产成人在线观看| 亚洲成人av福利| 久久久久久9999| 色八戒一区二区三区| 老汉av免费一区二区三区| 国产欧美日韩视频一区二区| 欧美日韩久久久| 成人国产精品免费网站| 午夜欧美2019年伦理| 久久久久久久久一| 欧美午夜理伦三级在线观看| 国产麻豆精品视频| 欧美国产一区在线| 日韩免费成人网| 色婷婷久久久久swag精品 | 亚洲欧美影音先锋| 欧美无砖专区一中文字| 国产精品一级黄| 视频一区二区不卡| 亚洲欧美日本在线| 久久影视一区二区| 欧美日本国产视频| 91老师国产黑色丝袜在线| 国精产品一区一区三区mba桃花| 一区二区激情小说| 国产精品久久久久久久第一福利 | 亚洲欧美激情一区二区| 欧美一区二区三区人| 在线观看视频91| av资源网一区| 国产成人精品1024| 久久99精品久久只有精品| 国产精品不卡一区| 国产日产欧美一区| 久久久精品免费网站| 日韩欧美高清dvd碟片| 欧美日韩亚洲丝袜制服| 在线观看精品一区| 色综合久久天天| 国产黑丝在线一区二区三区| 韩国三级在线一区| 九九视频精品免费| 久久国产综合精品| 婷婷综合久久一区二区三区| 亚洲激情六月丁香| 夜夜精品视频一区二区| 亚洲蜜臀av乱码久久精品蜜桃| 国产日韩在线不卡| 久久一区二区视频| 久久久午夜精品| 欧美成人三级电影在线| 欧美一级黄色录像| 日韩一二三区不卡| 欧美成人一区二区三区片免费| 日韩一区和二区| 欧美xxxxx牲另类人与| 日韩无一区二区| 日韩免费电影网站| 久久伊99综合婷婷久久伊| 久久精品一二三| 欧美激情一区二区三区蜜桃视频| 国产免费成人在线视频| 中文字幕一区二区三区四区| 国产精品乱码久久久久久| 国产精品毛片无遮挡高清| 亚洲欧洲日韩在线| 亚洲综合视频在线观看| 亚洲精品v日韩精品| 自拍偷拍亚洲欧美日韩| 一区二区三区.www| 男男gaygay亚洲| 麻豆国产欧美日韩综合精品二区 | 天天色天天爱天天射综合| 天堂影院一区二区| 麻豆91精品视频| 国产精品69毛片高清亚洲| 成人国产精品免费观看| 91麻豆成人久久精品二区三区| 欧美日韩你懂得| 日韩精品在线一区| 欧美mv日韩mv国产网站| 日韩精品专区在线影院重磅| 国产偷国产偷精品高清尤物 | 日韩极品在线观看| 国产制服丝袜一区| 99久久精品国产导航| 欧美亚洲一区三区| 日韩无一区二区| 亚洲激情欧美激情| 成人性生交大合| 日韩视频免费观看高清完整版在线观看 | 日韩码欧中文字| 蜜臀av一区二区| 色哟哟精品一区| 国产欧美视频一区二区| 视频在线观看一区| 色婷婷av一区| 国产日韩欧美在线一区| 青青青伊人色综合久久| 在线观看不卡一区| 国产精品乱人伦| 国产又黄又大久久| 91精品国产高清一区二区三区蜜臀 | 国产精品不卡一区二区三区| 极品少妇一区二区三区精品视频| 欧美午夜在线一二页| 中文字幕在线不卡视频| 国产精品自拍毛片| 日韩精品在线一区二区| 日本视频在线一区| 欧美精品在线观看播放| 一卡二卡三卡日韩欧美| 91婷婷韩国欧美一区二区| 国产女同互慰高潮91漫画| 国产麻豆精品在线观看| 久久久综合精品| 久久99深爱久久99精品| 欧美电影免费提供在线观看| 免费人成在线不卡| 3d动漫精品啪啪| 日韩电影在线看| 91麻豆精品国产91久久久久久久久| 一区二区三区电影在线播| 在线视频观看一区| 一区二区三区高清不卡| 日韩欧美国产精品| 亚洲国产欧美一区二区三区丁香婷 | 欧美猛男gaygay网站| 亚洲成人精品在线观看| 欧美性感一类影片在线播放| 亚洲精品va在线观看| 精品婷婷伊人一区三区三| 亚洲成av人片在线观看无码| 欧美日韩视频第一区| 免费美女久久99| 亚洲精品在线三区| 国产a视频精品免费观看| 久久精品男人天堂av| 成人av在线影院| 亚洲美女少妇撒尿| 欧美军同video69gay| 青青国产91久久久久久| 日韩欧美卡一卡二| 国产成人h网站| 亚洲人成亚洲人成在线观看图片| 色婷婷一区二区三区四区| 亚洲成在线观看| 日韩欧美在线一区二区三区| 国产剧情一区二区| 亚洲欧美日韩国产综合在线| 欧美日韩精品欧美日韩精品一综合| 免费人成精品欧美精品| 国产亚洲精品福利| 欧美色国产精品| 国产麻豆一精品一av一免费| 综合亚洲深深色噜噜狠狠网站|