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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? logger.cpp

?? 機器人足球AI設計比賽
?? CPP
字號:
/***************************************************************************************** *                                      SEU-3D *                     ------------------------------------------------- * Copyright (c) 2005, Yuan XU<xychn15@yahoo.com.cn>,Chang'e SHI<evelinesce@yahoo.com.cn> * Copyright (c) 2006, Yuan XU<xuyuan.cn@gmail.com>,Chunlu JIANG<JamAceWatermelon@gmail.com> * Southeast University ,China * All rights reserved. * * $Id: Logger.cpp,v 1.1.1.1 2006/09/15 02:03:05 Administrator Exp $ * * Additionally,this program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program 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 General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ****************************************************************************************/  #include "Logger.h" #ifdef Solaris #include <varargs.h> //-*  needed for va_list and va_start under Solaris#else #include <stdarg.h>#endif#include "WorldModel.h"using namespace std;using namespace salt;extern string teamName;/*****************************************************************************//**************************** LOGGER *****************************************//*****************************************************************************/#ifdef ENABLE_LOGLogger::Logger( ostream& o, int iMin, int iMax ):mOS(&o),_timeLogged(0){	addLogRange( iMin, iMax );}bool Logger::addLogLevel( int iLevel ){  _setLogLevels.insert( iLevel );  return true;}bool Logger::addLogRange( int iMin, int iMax ){  bool bReturn = true;  for( int i = iMin ; i <= iMax;  i++ )    bReturn &= addLogLevel( i );  return bReturn;}bool Logger::log( int iLevel, string str ){  if( isInLogLevel( iLevel ) )  {	printTree(iLevel);	*mOS << str << '\n';    return true;  }  return false;}bool Logger::log( int iLevel, char *str, ... ){  if( isInLogLevel( iLevel ) )  {    va_list ap;#ifdef Solaris    va_start( ap );#else    va_start( ap, str );#endif    if( vsnprintf( _buf, MAX_LOG_LINE-1, str, ap ) == -1 )      assert(! "Logger::log, buffer is too small!\n");    va_end(ap);    	printTree(iLevel);	*mOS << _buf << '\n';     return true;  }  return false;}bool Logger::isInLogLevel( int iLevel ){  return _setLogLevels.find( iLevel ) != _setLogLevels.end() ;}char* Logger::repeatChar( char c, int n ){  const static int MAX_REP = 100;  static char out[MAX_REP+1];  if( n > MAX_REP )    n = MAX_REP;  for( int i = 0; i < n; i++ )    out[i] = c;  out[n] = '\0';  return out;}void Logger::logTable(){	*mOS<<"# ( GameTime SimTime )"<<endl;}void Logger::printTree( int iLevel ){	if ( iLevel != 0 )	{		Time currentTime = WM->getRealTime();		if ( _timeLogged < currentTime )		{// need log time			_timeLogged = currentTime;			*mOS <<"# ( "			<< WM->getGameTime() << " " 			<< currentTime			<< " )\n";		}    	int num = _functions.size();		*mOS << "# " << iLevel << ' ' << num << ' ';		if ( num > 0 )		{			*mOS << '[' << _functions.back() << "] ";		}	}}int Logger::normalizeLogLevel( int iLevel ){	return clamp(iLevel,MIN_LOG_LEVEL,MAX_LOG_LEVEL);}void Logger::flush(){	mOS->flush();}void Logger::functionBegin(const string &name){	_functions.push_back(name);}void Logger::functionEnd(){	_functions.pop_back();}#endifvoid Logger::logErr( string str ){	cerr << str << endl;}void Logger::logErr( char *str, ... ){	va_list ap;#ifdef Solaris    va_start( ap );#else    va_start( ap, str );#endif    if( vsnprintf( _buf, MAX_LOG_LINE-1, str, ap ) == -1 )      assert( !"Logger::log, buffer is too small!\n");    va_end(ap);	cerr << _buf << endl; }#ifdef ENABLE_LOGLogFlag::LogFlag(const char* name1,const char* name2){	char name[256];	sprintf(name,"%s::%s",name1,name2);	Logger::GetSingletonPtr()->functionBegin(name);}#endif/*****************************************************************************//**************************** FILE LOGGER ************************************//*****************************************************************************/#ifdef ENABLE_LOGFileLogger::FileLogger():_filePtr(NULL),_enabled(false){}FileLogger::FileLogger( const char* logname ){	openFile( logname );}FileLogger::~FileLogger(){	if ( _filePtr != NULL )		fclose(_filePtr);	_filePtr = NULL;	_enabled = false;}bool FileLogger::openFile(const char* logname, const char* teamname, unsigned int id){	if ( _filePtr != NULL )		fclose(_filePtr);	_filePtr = NULL;	_enabled = false;	sprintf(_fileName, "logs/%s-%s-%d.log", logname, teamname, id);	_filePtr = fopen(_fileName, "w");	if(!_filePtr)	{		LOGERR("Cannot open file %s for writing!\n", _fileName);	}	else	{    	LOG( 1, "FileLogger opend: %s\n", _fileName);    	_enabled = true;	}	return _enabled;}bool FileLogger::openFile( const char* logname ){	return openFile( logname, teamName.c_str(), WM->getMyNum());}void FileLogger::log(const char* log_msg, ... ){  if(_enabled)  {      va_list ap;      va_start(ap, log_msg );      vfprintf(_filePtr, log_msg, ap);  }}void FileLogger::log( const string& log_str ){	log( log_str.c_str() );}#endif#ifdef ENABLE_GL_LOGGraphicLogger graphic_logger;GraphicLogger::GraphicLogger( ostream& o ):_OS(o){}void GraphicLogger::addLogLevel( const string& level ){	_setLogLevels.insert( level );}void GraphicLogger::logSphere(const string& level, const Vector3f& pos, float r){	int index = getLevelIndex(level);	if ( index >=0 )	{		_data[index].add(new LogShpere(pos, r));	}}void GraphicLogger::logSphere(const string& level, const Vector3f& pos, float r, const Vector3f& rgb){	int index = getLevelIndex(level);	if ( index >=0 )	{		_data[index].add(new LogShpere(pos, r, rgb));	}}int GraphicLogger::getLevelIndex(const string& strLevel)const{	set<string>::const_iterator iterFind= _setLogLevels.find(strLevel);	if ( iterFind == _setLogLevels.end() ) return -1;// no this level!!	int index = 0;	for( set<string>::const_iterator iter = _setLogLevels.begin();		iter != iterFind; ++iter )	{		index++;	}	return index;}void GraphicLogger::flush(){	_OS<<"(L "<<WM->getGameTime()<<' '<<_data<<")\n";	_OS.flush();	_data.clear();}void GraphicLogger::registerLevel(){	_OS<<"(LogRegister "<<WM->getMyTeamName()<<' '<<WM->getMyNum();		for( set<string>::const_iterator iter = _setLogLevels.begin();		iter != _setLogLevels.end(); ++iter )	{		_OS<<' '<<*iter;	}	_OS<<")\n";	_OS.flush();}void GraphicLogger::logRectangle(const string& level, const Vector3f& pos, float szX, float szY){	int index = getLevelIndex(level);	if ( index >=0 )	{		_data[index].add(new LogRectangle(pos, szX, szY));	}}void GraphicLogger::logRectangle(const string& level, const Vector3f& pos, float szX, float szY, const Vector3f& rotation){	int index = getLevelIndex(level);	if ( index >=0 )	{		_data[index].add(new LogRectangle(pos, szX, szY, rotation));	}}void GraphicLogger::logRectangle(const string& level, const Vector3f& pos, float szX, float szY, const Vector3f& rotation, const Vector3f& rgb){	int index = getLevelIndex(level);	if ( index >=0 )	{		_data[index].add(new LogRectangle(pos, szX, szY, rotation, rgb));	}}void GraphicLogger::logCircle(const string& level, const Vector3f& pos, float r){	int index = getLevelIndex(level);	if ( index >=0 )	{		_data[index].add(new LogCircle(pos, r));	}}void GraphicLogger::logCircle(const string& level, const Vector3f& pos, float r, const Vector3f& rotation){	int index = getLevelIndex(level);	if ( index >=0 )	{		_data[index].add(new LogCircle(pos, r, rotation));	}}void GraphicLogger::logCircle(const string& level, const Vector3f& pos, float r, const Vector3f& rotation, const Vector3f& rgb){	int index = getLevelIndex(level);	if ( index >=0 )	{		_data[index].add(new LogCircle(pos, r, rotation, rgb));	}}void GraphicLogger::logLine(const string& level, const Vector3f& x0, const Vector3f& x1){	int index = getLevelIndex(level);	if ( index >=0 )	{		_data[index].add(new LogLine(x0, x1));	}}void GraphicLogger::logLine(const string& level, const Vector3f& x0, const Vector3f& x1, const Vector3f& rgb){	int index = getLevelIndex(level);	if ( index >=0 )	{		_data[index].add(new LogLine(x0, x1,rgb));	}}void GraphicLogger::logText(const string& level, const Vector3f& pos, const string& str){	int index = getLevelIndex(level);	if ( index >=0 )	{		_data[index].add(new LogText(pos, str));	}}void GraphicLogger::logText(const string& level, const Vector3f& pos, const char *str, ... ){	int index = getLevelIndex(level);	if ( index >=0 )	{		static char buffer[MAX_LOG_LINE];		va_list ap;    	va_start(ap, str );    	vsprintf(buffer, str, ap);		va_end(ap);		_data[index].add(new LogText(pos, buffer));	}}void GraphicLogger::logText(const string& level, const Vector3f& pos, const Vector3f& rgb, const string& str){	int index = getLevelIndex(level);	if ( index >=0 )	{		_data[index].add(new LogText(pos, str, rgb));	}}void GraphicLogger::logText(const string& level, const Vector3f& pos, const Vector3f& rgb, const char *str, ... ){	int index = getLevelIndex(level);	if ( index >=0 )	{		static char buffer[MAX_LOG_LINE];		va_list ap;    	va_start(ap, str );    	vsprintf(buffer, str, ap);		va_end(ap);		_data[index].add(new LogText(pos, buffer, rgb));	}}void GraphicLogger::logPrint(const string& level, const string& str){	int index = getLevelIndex(level);	if ( index >=0 )	{		_data[index].add(new LogPrint(str));	}}void GraphicLogger::logPrint(const string& level, const Vector3f& rgb, const string& str ){	int index = getLevelIndex(level);	if ( index >=0 )	{		_data[index].add(new LogPrint(str,rgb));	}}void GraphicLogger::logPrint(const string& level, const char *str, ... ){	int index = getLevelIndex(level);	if ( index >=0 )	{		static char buffer[MAX_LOG_LINE];		va_list ap;    	va_start(ap, str );    	vsprintf(buffer, str, ap);		va_end(ap);		_data[index].add(new LogPrint(buffer));	}}void GraphicLogger::logPrint(const string& level, const Vector3f& rgb, const char *str, ... ){	int index = getLevelIndex(level);	if ( index >=0 )	{		static char buffer[MAX_LOG_LINE];		va_list ap;    	va_start(ap, str );    	vsprintf(buffer, str, ap);		va_end(ap);		_data[index].add(new LogPrint(buffer,rgb));	}}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
8v天堂国产在线一区二区| 亚洲激情网站免费观看| 精品久久五月天| 欧美一级片在线看| 69久久99精品久久久久婷婷 | 欧日韩精品视频| 91视频在线观看| 在线看日韩精品电影| 欧美午夜一区二区| 精品视频一区三区九区| 欧美日韩一级二级| 欧美一区二区视频观看视频| 欧美电视剧免费观看| 久久午夜电影网| 中文字幕国产精品一区二区| 国产精品狼人久久影院观看方式| 国产精品色婷婷久久58| 亚洲欧洲av在线| 亚洲综合色区另类av| 天堂成人免费av电影一区| 久久99国产精品麻豆| 国产精品一区二区久久精品爱涩| www.欧美色图| 欧美视频三区在线播放| 亚洲欧美激情小说另类| 亚洲国产成人av网| 美女网站一区二区| 成人免费不卡视频| 欧美性videosxxxxx| 欧美一级黄色大片| 久久精品免费在线观看| 亚洲免费在线观看| 日本不卡一二三区黄网| 国产成人8x视频一区二区 | 国产精品免费视频网站| 日韩美女精品在线| 日一区二区三区| 国产福利一区二区三区视频| 91欧美一区二区| 欧美一级一区二区| 欧美国产综合一区二区| 亚洲成人激情综合网| 国产精品一区二区久久精品爱涩 | 欧美一区二区在线观看| 国产午夜精品久久久久久久| 亚洲精品日韩综合观看成人91| 蜜臀久久99精品久久久久宅男| 国产91露脸合集magnet| 欧美性高清videossexo| 久久综合色婷婷| 亚洲激情在线激情| 国产尤物一区二区| 欧美日韩亚洲不卡| 国产精品欧美经典| 麻豆精品久久久| 色婷婷av一区二区三区gif| 精品久久久久久无| 亚洲最色的网站| 国产老妇另类xxxxx| 欧美女孩性生活视频| 国产精品网站在线播放| 青青国产91久久久久久| 91欧美一区二区| 久久久精品天堂| av午夜一区麻豆| 欧美精品一区二区三区在线| 亚洲一二三区不卡| 99久久精品国产网站| 久久综合久久鬼色| 日韩中文字幕1| 成人听书哪个软件好| 国产精品影音先锋| 欧美日韩视频在线一区二区| 中文字幕第一区二区| 久久精品久久精品| 欧美在线综合视频| 国产欧美一区二区三区在线老狼| 免费高清成人在线| 精品视频资源站| 亚洲精品乱码久久久久久久久| 国产白丝精品91爽爽久久 | 亚洲最色的网站| 成人免费看黄yyy456| 欧美精品一区二区三区蜜臀 | 欧美日韩国产片| 亚洲美女少妇撒尿| 91亚洲大成网污www| 国产欧美一区二区精品忘忧草| 久久电影网电视剧免费观看| 91精品欧美综合在线观看最新| 亚洲国产sm捆绑调教视频| 色婷婷av一区二区三区之一色屋| 国产精品亲子伦对白| 高清国产一区二区三区| 国产欧美精品一区二区三区四区| 国产乱码字幕精品高清av| 日韩写真欧美这视频| 免费av网站大全久久| 欧美一二三四区在线| 日本亚洲免费观看| 日韩精品一区二区三区在线播放 | 欧美日韩一级片网站| 亚洲国产美女搞黄色| 欧美性欧美巨大黑白大战| 夜夜夜精品看看| 91国产视频在线观看| 亚洲午夜一区二区三区| 91传媒视频在线播放| 亚洲国产成人精品视频| 欧美日本在线播放| 麻豆国产精品一区二区三区 | 国产精品日日摸夜夜摸av| 成人在线综合网| 亚洲天堂福利av| 欧美性猛交xxxx乱大交退制版| 亚洲国产一区二区三区青草影视| 欧美另类久久久品| 日本 国产 欧美色综合| 亚洲精品一区二区三区蜜桃下载| 国产激情视频一区二区在线观看 | 亚洲综合丁香婷婷六月香| 欧美日韩亚洲综合在线 | 日韩高清在线一区| 日韩精品一区二区三区视频播放 | 亚洲永久精品大片| 欧美日韩午夜在线| 久久99久久久欧美国产| 久久久99免费| 99热99精品| 亚洲18女电影在线观看| 欧美大片国产精品| 国产高清一区日本| 日韩理论片网站| 69堂成人精品免费视频| 国产露脸91国语对白| 亚洲免费看黄网站| 日韩一区二区电影在线| 国产精品乡下勾搭老头1| 亚洲欧洲99久久| 欧美高清hd18日本| 风间由美中文字幕在线看视频国产欧美| 中文字幕在线不卡一区二区三区| 欧美自拍丝袜亚洲| 国产一区二区在线看| 亚洲三级在线观看| 欧美一级久久久久久久大片| 成人在线一区二区三区| 亚洲成av人片一区二区三区 | 国产精品资源在线| 亚洲欧美韩国综合色| 日韩欧美一级片| jlzzjlzz亚洲日本少妇| 日本欧美一区二区| 中文字幕在线一区二区三区| 欧美精选一区二区| 成人av在线影院| 美女网站在线免费欧美精品| 中文字幕在线视频一区| 欧美一级欧美一级在线播放| www.爱久久.com| 久久国产综合精品| 亚洲一区二区三区四区在线| 欧美变态凌虐bdsm| 欧美在线不卡视频| 豆国产96在线|亚洲| 日韩精品亚洲一区| 尤物视频一区二区| 亚洲国产精品ⅴa在线观看| 日韩一区国产二区欧美三区| 91年精品国产| 国产不卡在线视频| 裸体歌舞表演一区二区| 亚洲地区一二三色| 国产精品高清亚洲| 国产欧美一区视频| 精品日韩av一区二区| 欧美浪妇xxxx高跟鞋交| 色婷婷综合久久久久中文一区二区| 国产精品综合网| 久久精品国产秦先生| 亚洲观看高清完整版在线观看| 中文字幕制服丝袜成人av| 久久久精品国产99久久精品芒果 | 久久精品99国产精品日本| 亚洲精品五月天| 中文字幕一区二区三区不卡| 国产视频一区二区在线| 欧美va亚洲va在线观看蝴蝶网| 欧美日韩国产中文| 欧美综合久久久| 色菇凉天天综合网| 成人av网站大全| 高清免费成人av| 国产精品一二三区在线| 久久电影网站中文字幕 | 91精品国产高清一区二区三区 | 成人性生交大片免费看视频在线 | 9191精品国产综合久久久久久| 欧美亚一区二区| 在线国产电影不卡|