Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members

stdutil.h

Go to the documentation of this file.
00001 #ifndef stdutil_h
00002 #define stdutil_h
00003 
00004 #include <iosfwd>
00005 
00006 #include <cstdio>
00007 #include <cstdarg>
00008 
00009 #include <string>
00010 #include <vector>
00011 #include <iostream>
00012 
00013 namespace stdutil {
00014 
00015 inline std::string vform( const char * format, va_list ap, va_list ap1 ) {
00016   char * buf = new char[vsnprintf( NULL, 0, format, ap ) + 1];
00017   vsprintf( buf, format, ap1 );
00018   string val( buf );
00019   delete [] buf;
00020   return val;
00021 }
00022 
00023 inline std::string form( const char * format, ... )
00024     __attribute__ ((format (printf, 1, 2)));
00025 
00026 inline std::string form( const char * format, ... ) {
00027   va_list ap;
00028   va_list ap1;
00029   va_start( ap, format );
00030   va_start( ap1, format );
00031   string val( vform( format, ap, ap1 ) );
00032   va_end( ap );
00033   va_end( ap1 );
00034   return val;
00035 }
00036 
00037 inline std::string numstring( char n,          int w = 0 ) { return form( "%*hhd", w, n ); }
00038 inline std::string numstring( unsigned char n, int w = 0 ) { return form( "%*hhu", w, n ); }
00039 inline std::string numstring( int n,           int w = 0 ) { return form( "%*d",   w, n ); }
00040 inline std::string numstring( unsigned n,      int w = 0 ) { return form( "%*u",   w, n ); }
00041 inline std::string numstring( long n,          int w = 0 ) { return form( "%*ld",  w, n ); }
00042 inline std::string numstring( unsigned long n, int w = 0 ) { return form( "%*lu",  w, n ); }
00043 
00044 inline std::string hexstring( char n,          int w = 4 ) { return form( "%#0*hhx", w, n ); }
00045 inline std::string hexstring( unsigned char n, int w = 4 ) { return form( "%#0*hhx", w, n ); }
00046 inline std::string hexstring( int n,           int w = 10 ){ return form( "%#0*x",   w, n ); }
00047 inline std::string hexstring( unsigned n,      int w = 10 ){ return form( "%#0*x",   w, n ); }
00048 inline std::string hexstring( long n,          int w = 10 ){ return form( "%#0*lx",  w, n ); }
00049 inline std::string hexstring( unsigned long n, int w = 10 ){ return form( "%#0*lx",  w, n ); }
00050 
00051 inline std::string octstring( char n,          int w = 4 ) { return form( "%#0*hho", w, n ); }
00052 inline std::string octstring( unsigned char n, int w = 4 ) { return form( "%#0*hho", w, n ); }
00053 inline std::string octstring( int n,           int w = 0 ) { return form( "%#*o",    w, n ); }
00054 inline std::string octstring( unsigned n,      int w = 0 ) { return form( "%#*o",    w, n ); }
00055 inline std::string octstring( long n,          int w = 0 ) { return form( "%#*lo",   w, n ); }
00056 inline std::string octstring( unsigned long n, int w = 0 ) { return form( "%#*lo",   w, n ); }
00057 
00058 } // namespace stdutil
00059 #endif // stdutil_h

Generated on Wed Nov 12 04:52:32 2008 for yast2-ncurses by  doxygen 1.3.9.1