src/types.h

changeset 6
67b6ef6917ba
parent 3
d0b278fd29d5
child 13
9bdddd2ccde6
equal deleted inserted replaced
5:3c04e05ab24f 6:67b6ef6917ba
13 typedef unsigned int uint; 13 typedef unsigned int uint;
14 typedef unsigned short ushort; 14 typedef unsigned short ushort;
15 typedef unsigned long ulong; 15 typedef unsigned long ulong;
16 template<class T> using initlist = std::initializer_list<T>; 16 template<class T> using initlist = std::initializer_list<T>;
17 using std::size_t; 17 using std::size_t;
18
19 typedef qint8 int8;
20 typedef qint16 int16;
21 typedef qint32 int32;
22 typedef qint64 int64;
23 typedef quint8 uint8;
24 typedef quint16 uint16;
25 typedef quint32 uint32;
26 typedef quint64 uint64;
27
28 #ifdef IN_IDE_PARSER // :|
29 typedef void FILE;
30 #endif
18 31
19 // ============================================================================= 32 // =============================================================================
20 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 33 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
21 // ============================================================================= 34 // =============================================================================
22 // StringFormatArg 35 // StringFormatArg
51 StringFormatArg( const void* v ); 64 StringFormatArg( const void* v );
52 65
53 template<class T> StringFormatArg( const list<T>& v ) { 66 template<class T> StringFormatArg( const list<T>& v ) {
54 m_val = "{ "; 67 m_val = "{ ";
55 uint i = 0; 68 uint i = 0;
69 const bool isString = typeid( T ) == typeid( str );
56 70
57 for( const T& it : v ) { 71 for( const T& it : v ) {
58 if( i++ ) 72 if( i++ )
59 m_val += ", "; 73 m_val += ", ";
60 74
61 StringFormatArg arg( it ); 75 StringFormatArg arg( it );
62 m_val += arg.value(); 76
77 if( isString )
78 m_val += "\"" + arg.value() + "\"";
79 else
80 m_val += arg.value();
63 } 81 }
64 82
65 if( i ) 83 if( i )
66 m_val += " "; 84 m_val += " ";
67 85
77 95
78 // Formatter function 96 // Formatter function
79 str doFormat( initlist<StringFormatArg> args ); 97 str doFormat( initlist<StringFormatArg> args );
80 98
81 // printf replacement 99 // printf replacement
82 void doPrint( initlist<StringFormatArg> args ); 100 void doPrint( FILE* fp, initlist<StringFormatArg> args );
83 101
84 // Macros to access these functions 102 // Macros to access these functions
85 #ifndef IN_IDE_PARSER 103 #ifndef IN_IDE_PARSER
86 # define fmt(...) doFormat({ __VA_ARGS__ }) 104 # define fmt(...) doFormat({ __VA_ARGS__ })
87 # define print(...) doPrint({ __VA_ARGS__ }) 105 # define print(...) doPrint( stdout, { __VA_ARGS__ })
106 # define fprint(FP, ...) doPrint( FP, { __VA_ARGS__ })
88 #else 107 #else
89 str fmt( const char* fmtstr, ... ); 108 str fmt( const char* fmtstr, ... );
90 void print( const char* fmtstr, ... ); 109 void print( const char* fmtstr, ... );
110 void fprint( FILE* fp, const char* fmtstr, ... );
91 #endif 111 #endif
92 112
93 #endif // TYPES_H 113 #endif // TYPES_H

mercurial