|
|
Go to the documentation of this file.
45 if(number>= std::numeric_limits<Int>::max()) return "inf";
46 if(number<= std::numeric_limits<Int>::min()+1) return "-inf";
48 std::stringstream sstr;
57 std::stringstream sstr;
58 sstr << "0x" << std::setbase(16) << number;
66 if(number>= std::numeric_limits<Float>::max()) return "inf";
67 if(number<= -1*std::numeric_limits<Float>::max()) return "-inf";
68 std::stringstream sstr;
69 if(number == static_cast<Float>( static_cast<Int>(number) )) {
70 sstr << static_cast<Int>(number);
81std::string ExpandString( const std::string& rString, unsigned int len) {
84 std::string::size_type xtra = (std::string::size_type) len - rString.length();
85 if ((xtra > 0) && (xtra < 10000)) {
86 res.append(xtra, ' ');
92std::string CollapsString( const std::string& rString, unsigned int len) {
93 if(len <=1) return rString;
94 if(rString.length() <= len) return rString;
96 int ctail = len-chead;
97 return rString.substr(0,chead) + "..." + rString.substr(rString.length()-ctail,ctail);
103 unsigned long ul = strtoul (rString.c_str(), &end, 0);
104 unsigned long idxmax = std::numeric_limits<Idx>::max();
106 throw Exception( "atoidx", "Idx overflow", 600);
113 std::string res=rString;
114 std::transform(res.begin(), res.end(), res.begin(),
115 []( unsigned char c){ return std::tolower(c); });
122std::string StringSubstitute( const std::string& rString, const std::string& rFrom, const std::string& rTo) {
127 while(pos<rString.length()) {
128 std::size_t next=rString.find(rFrom,pos);
129 if(next==std::string::npos) break;
130 res.append(rString.substr(pos, next-pos));
132 pos=next+rFrom.length();
135 if(pos<rString.length())
136 res.append(rString.substr(pos));
143 return std::string(FAUDES_VERSION);
148 return std::string(FAUDES_PLUGINS);
154 "Ramon Barakat, Ruediger Berndt, Christian Breindl, Christine Baier, Tobias Barthel, Christoph Doerr, Marc Duevel, Norman Franchi, Stefan Goetz, Rainer Hartmann, Jochen Hellenschmidt, Stefan Jacobi, Matthias Leinfelder, Tomas Masopust, Michael Meyer, Andreas Mohr, Thomas Moor, Mihai Musunoi, Bernd Opitz, Katja Pelaic, Irmgard Petzoldt, Sebastian Perk, Thomas Rempel, Daniel Ritter, Berno Schlein, Ece Schmidt, Klaus Schmidt, Anne-Kathrin Schmuck, Sven Schneider, Matthias Singer, Yiheng Tang, Ulas Turan, Christian Wamser, Zhengying Wang, Thomas Wittmann, Shi Xiaoxun, Changming Yang, Yang Yi, Jorgos Zaddach, Hao Zhou, Christian Zwick, et al";
157#define XLITSTR(x) LITSTR(x)
162#ifdef FAUDES_BUILDENV
163 res = res + std::string(FAUDES_BUILDENV);
165 res = res + std::string( "generic");
167#ifdef FAUDES_BUILDTIME
168 res = res + std::string( " ") + std::string(FAUDES_BUILDTIME);
170 res = res + std::string( " ") + std::string(FAUDES_CONFIG_TIMESTAMP);
178 const std::string& rOutFile, const std::string& rOutFormat, const std::string& rDotExec)
180 std::string format=rOutFormat;
183 if(rOutFile.rfind( '.')+1 < rOutFile.size()) {
184 format=rOutFile.substr(rOutFile.rfind( '.')+1);
188 if (format == "canon");
189 else if (format == "dot");
190 else if (format == "xdot");
191 else if (format == "cmap");
192 else if (format == "dia");
193 else if (format == "fig");
194 else if (format == "gd");
195 else if (format == "gd2");
196 else if (format == "gif");
197 else if (format == "hpgl");
198 else if (format == "imap");
199 else if (format == "cmapx");
200 else if (format == "ismap");
201 else if (format == "jpg");
202 else if (format == "jpeg");
203 else if (format == "mif");
204 else if (format == "mp");
205 else if (format == "pcl");
206 else if (format == "pic");
207 else if (format == "plain");
208 else if (format == "plain-ext");
209 else if (format == "png");
210 else if (format == "ps");
211 else if (format == "ps2");
212 else if (format == "svg");
213 else if (format == "svgz");
214 else if (format == "vrml");
215 else if (format == "vtx");
216 else if (format == "wbmp");
217 else if (format == "eps");
218 else if (format == "pdf");
220 std::stringstream errstr;
221 errstr << "Dot output format \"" << format << "\" unknown";
222 throw Exception( "faudes::ProcessDot", errstr.str(), 3);
224 std::string args = "-T"+format+ " \""+rDotFile+ "\" -o \""+rOutFile+ "\"";
226 throw Exception( "faudes::ProcessDot", "Error in running " + rDotExec + " " + args, 3);
234 static std::string knowngood= "";
235 static std::string knownbad= "";
236 if(rDotExec== "") return false;
237 if(rDotExec==knowngood) return true;
238 if(rDotExec==knownbad) return false;
240 std::string args = "-V";
256 char filename[]= "faudes_temp_XXXXXX";
261 filedes= mkstemp(filename);
263 FD_DF( "faudes::CreateTempFile(): error");
267 res=std::string(filename);
285 char* tmpname = _mktemp(filename);
288 FD_DF( "faudes::CreateTempFile(): error");
291 fopen_s(&file,tmpname, "w");
293 FD_DF( "faudes::CreateTempFile(): error");
297 res=std::string(tmpname);
299 FD_DF( "faudes::CreateTempFile(): " << res);
307 if(seppos==std::string::npos) return res;
308 res=rFullPath.substr(0,seppos+1);
314 std::string res=rFullPath;
316 if(seppos==std::string::npos) return res;
317 res=rFullPath.substr(seppos+1);
323 std::string res=rFullPath;
325 if(seppos!=std::string::npos) {
326 res=res.substr(seppos+1);
328 std::size_t dotpos = res.find_last_of( ".");
329 if(dotpos!=std::string::npos) {
330 res=res.substr(0,dotpos);
337 std::string res=rFullPath;
339 if(seppos!=std::string::npos) {
340 res=res.substr(seppos+1);
342 std::size_t dotpos = res.find_last_of( ".");
343 if(dotpos!=std::string::npos)
344 if(dotpos +1 < res.size()) {
345 return res.substr(dotpos+1,res.size()-dotpos-1);
347 return std::string();
351std::string PrependPath( const std::string& rLeft, const std::string& rRight) {
354 return std::string(rRight);
356 return std::string(rLeft);
362 if(seppos!=std::string::npos)
363 sepchar=rLeft.at(seppos);
365 std::string res=rLeft;
366 if(res.at(res.length()-1)!=sepchar)
367 res.append(1,sepchar);
368 if(rRight.at(0)!=sepchar){
372 if(rRight.length()<=1) {
375 res.append(rRight,1,std::string::npos);
383 thedir=opendir(rDirectory.c_str());
384 if(thedir) closedir(thedir);
388 DWORD fattr = GetFileAttributesA( faudes_extpath(rDirectory).c_str());
390 (fattr!=INVALID_FILE_ATTRIBUTES) && (fattr & FILE_ATTRIBUTE_DIRECTORY);
397 std::set< std::string > res;
400 struct dirent *theent;
401 thedir=opendir(rDirectory.c_str());
402 if(!thedir) return res;
403 while((theent=readdir(thedir))) {
404 std::string fname(theent->d_name);
405 if(fname== ".") continue;
406 if(fname== "..") continue;
413 WIN32_FIND_DATA data;
414 hf = FindFirstFile((rDirectory+ "\\*.*").c_str(), &data);
415 if (hf != INVALID_HANDLE_VALUE) {
417 std::string fname(data.cFileName);
418 if(fname== ".") continue;
419 if(fname== "..") continue;
421 } while (FindNextFile(hf, &data));
432 fp.open(rFilename.c_str(), std::ios::in | std::ios::binary);
438 return remove(rFilename.c_str()) == 0;
442bool FileCopy( const std::string& rFromFile, const std::string& rToFile) {
443 std::ifstream froms(rFromFile.c_str(), std::ios::binary);
444 std::ofstream tos(rToFile.c_str(), std::ios::binary);
445 tos << froms.rdbuf();
447 return !(froms.fail() || tos.fail());
483 DoWrite(message,cntnow,cntdone,verb);
486 (void) cntnow; (void) cntdone;
487 if( mVerb<verb) return;
489 if(!sout) sout=&std::cout;
498void Print( int v, const std::string& message) {
500 std::ostringstream line;
501 line << "FAUDES_PRINT: " << message << std::endl;
506void Print( const std::string& message) {
524 mspCount= new std::map<std::string,long int>();
525 mspMax= new std::map<std::string,long int>();
533 long int cnt = ((*mspCount)[rTypeName]+=1);
538 (*mspCount)[rTypeName]-=1;
544#ifdef FAUDES_DEBUG_CODE
553 std::map<std::string,long int>::iterator cit;
563#ifdef FAUDES_DEBUG_CODE
565class ExitFunctionInstall {
568 static ExitFunctionInstall mInstance;
569 ExitFunctionInstall( void) {
572 std::atexit(ExitFunction);
577bool ExitFunctionInstall::mDone= false;
578ExitFunctionInstall ExitFunctionInstall::mInstance;
589 std::string filename=rSource;
591 if(filename== "") filename= "faudes_dump";
595 std::string::size_type pos=0;
596 for(;pos<filename.length();pos++)
597 if(filename.at(pos)== '.') filename.at(pos)= '_';
599 filename.append( ".prot");
603 filename.insert(0, "tmp_");
629void TestProtocol( const std::string& rMessage, const std::string& rData) {
644 fp.open(prot.c_str(), std::ios::in | std::ios::binary);
652 fr.open(ref.c_str(), std::ios::in | std::ios::binary);
656 fr.open(ref.c_str(), std::ios::in | std::ios::binary);
671 if(fp.eof() && fr.eof()) { break; }
672 if(!fp.good() || !fr.good()) { dline=cline; break;}
674 if( cp== '\r' && cr == '\r') continue;
675 if( cp== '\r' && fp.eof()){ dline=cline; break;}
676 if( cp== '\r') cp = fp.get();
677 if( cr== '\r' && fr.eof()){ dline=cline; break;}
678 if( cr== '\r') cr = fr.get();
680 if( cr== '\n') cline++;
682 if( cp!= cr ){dline=cline; break;}
684 } catch(std::ios::failure&) {
711 throw Exception( "LoopCallback", "break on application request", 110);
#define FAUDES_WRITE_DIRECT(message)
#define FAUDES_WRITE_CONSOLE(message)
static ConsoleOut * G(void)
static ConsoleOut * smpInstance
virtual void DoWrite(const std::string &message, long int cntnow=0, long int cntdone=0, int verb=1)
virtual ~ConsoleOut(void)
const std::string & Filename(void)
virtual void Write(const std::string &message, long int cntnow=0, long int cntdone=0, int verb=1)
void Redirect(ConsoleOut *out)
void ToFile(const std::string &filename)
static FunctionRegistry * G()
static void Inc(const std::string &rTypeName)
static void Dec(const std::string &rTypeName)
static std::map< std::string, long int > * mspCount
static std::map< std::string, long int > * mspMax
std::string FileName(void) const
void WriteComment(const std::string &rComment)
static TypeRegistry * G()
void Write(const Type *pContext=0) const
void SWrite(TokenWriter &rTw) const
std::string VersionString()
std::string ExtractDirectory(const std::string &rFullPath)
bool DotReady(const std::string &rDotExec)
std::string PrependPath(const std::string &rLeft, const std::string &rRight)
Idx ToIdx(const std::string &rString)
TokenWriter * gTestProtocolTw
void ProcessDot(const std::string &rDotFile, const std::string &rOutFile, const std::string &rOutFormat, const std::string &rDotExec)
std::string CreateTempFile(void)
bool FileCopy(const std::string &rFromFile, const std::string &rToFile)
std::string PluginsString()
std::string ExpandString(const std::string &rString, unsigned int len)
static bool(* gBreakFnct)(void)=0
std::string BuildString()
bool FileDelete(const std::string &rFilename)
std::string ToStringFloat(Float number)
std::string ExtractFilename(const std::string &rFullPath)
std::string ToStringInteger16(Int number)
std::string ContributorsString()
std::string ToStringInteger(Int number)
std::set< std::string > ReadDirectory(const std::string &rDirectory)
std::string StringSubstitute(const std::string &rString, const std::string &rFrom, const std::string &rTo)
std::string ToLowerCase(const std::string &rString)
void Print(int v, const std::string &message)
std::string gTestProtocolFr
std::string ExtractBasename(const std::string &rFullPath)
bool DirectoryExists(const std::string &rDirectory)
bool FileExists(const std::string &rFilename)
std::string ExtractSuffix(const std::string &rFullPath)
std::string CollapsString(const std::string &rString, unsigned int len)
libFAUDES 2.34g
--- 2026.04.08
--- c++ api documentaion by doxygen
|