codegen_utils.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include "codegen_utils.h"
00014
00015 #include "../uml.h"
00016 #include "../umldoc.h"
00017
00018 namespace Codegen_Utils {
00019
00020 QStringList cppDatatypes() {
00021 QStringList l;
00022 l.append("int");
00023 l.append("char");
00024 l.append("bool");
00025 l.append("float");
00026 l.append("double");
00027 l.append("short");
00028 l.append("long");
00029 l.append("unsigned int");
00030 l.append("unsigned short");
00031 l.append("unsigned long");
00032 l.append("string");
00033 return l;
00034 }
00035
00036 const QStringList reservedCppKeywords() {
00037
00038 static QStringList keywords;
00039
00040 if (keywords.isEmpty()) {
00041 keywords.append( "and" );
00042 keywords.append( "and_eq" );
00043 keywords.append( "__asm__" );
00044 keywords.append( "asm" );
00045 keywords.append( "__attribute__" );
00046 keywords.append( "auto" );
00047 keywords.append( "bitand" );
00048 keywords.append( "bitor" );
00049 keywords.append( "bool" );
00050 keywords.append( "break" );
00051 keywords.append( "BUFSIZ" );
00052 keywords.append( "case" );
00053 keywords.append( "catch" );
00054 keywords.append( "char" );
00055 keywords.append( "CHAR_BIT" );
00056 keywords.append( "CHAR_MAX" );
00057 keywords.append( "CHAR_MIN" );
00058 keywords.append( "class" );
00059 keywords.append( "CLOCKS_PER_SEC" );
00060 keywords.append( "clock_t" );
00061 keywords.append( "compl" );
00062 keywords.append( "__complex__" );
00063 keywords.append( "complex" );
00064 keywords.append( "const" );
00065 keywords.append( "const_cast" );
00066 keywords.append( "continue" );
00067 keywords.append( "__DATE__" );
00068 keywords.append( "DBL_DIG" );
00069 keywords.append( "DBL_EPSILON" );
00070 keywords.append( "DBL_MANT_DIG" );
00071 keywords.append( "DBL_MAX" );
00072 keywords.append( "DBL_MAX_10_EXP" );
00073 keywords.append( "DBL_MAX_EXP" );
00074 keywords.append( "DBL_MIN" );
00075 keywords.append( "DBL_MIN_10_EXP" );
00076 keywords.append( "DBL_MIN_EXP" );
00077 keywords.append( "default" );
00078 keywords.append( "delete" );
00079 keywords.append( "DIR" );
00080 keywords.append( "div_t" );
00081 keywords.append( "do" );
00082 keywords.append( "double" );
00083 keywords.append( "dynamic_cast" );
00084 keywords.append( "E2BIG" );
00085 keywords.append( "EACCES" );
00086 keywords.append( "EAGAIN" );
00087 keywords.append( "EBADF" );
00088 keywords.append( "EBADMSG" );
00089 keywords.append( "EBUSY" );
00090 keywords.append( "ECANCELED" );
00091 keywords.append( "ECHILD" );
00092 keywords.append( "EDEADLK" );
00093 keywords.append( "EDOM" );
00094 keywords.append( "EEXIST" );
00095 keywords.append( "EFAULT" );
00096 keywords.append( "EFBIG" );
00097 keywords.append( "EILSEQ" );
00098 keywords.append( "EINPROGRESS" );
00099 keywords.append( "EINTR" );
00100 keywords.append( "EINVAL" );
00101 keywords.append( "EIO" );
00102 keywords.append( "EISDIR" );
00103 keywords.append( "else" );
00104 keywords.append( "EMFILE" );
00105 keywords.append( "EMLINK" );
00106 keywords.append( "EMSGSIZE" );
00107 keywords.append( "ENAMETOOLONG" );
00108 keywords.append( "ENFILE" );
00109 keywords.append( "ENODEV" );
00110 keywords.append( "ENOENT" );
00111 keywords.append( "ENOEXEC" );
00112 keywords.append( "ENOLCK" );
00113 keywords.append( "ENOMEM" );
00114 keywords.append( "ENOSPC" );
00115 keywords.append( "ENOSYS" );
00116 keywords.append( "ENOTDIR" );
00117 keywords.append( "ENOTEMPTY" );
00118 keywords.append( "ENOTSUP" );
00119 keywords.append( "ENOTTY" );
00120 keywords.append( "enum" );
00121 keywords.append( "ENXIO" );
00122 keywords.append( "EOF" );
00123 keywords.append( "EPERM" );
00124 keywords.append( "EPIPE" );
00125 keywords.append( "ERANGE" );
00126 keywords.append( "EROFS" );
00127 keywords.append( "ESPIPE" );
00128 keywords.append( "ESRCH" );
00129 keywords.append( "ETIMEDOUT" );
00130 keywords.append( "EXDEV" );
00131 keywords.append( "EXIT_FAILURE" );
00132 keywords.append( "EXIT_SUCCESS" );
00133 keywords.append( "explicit" );
00134 keywords.append( "export" );
00135 keywords.append( "extern" );
00136 keywords.append( "false" );
00137 keywords.append( "__FILE__" );
00138 keywords.append( "FILE" );
00139 keywords.append( "FILENAME_MAX" );
00140 keywords.append( "float" );
00141 keywords.append( "FLT_DIG" );
00142 keywords.append( "FLT_EPSILON" );
00143 keywords.append( "FLT_MANT_DIG" );
00144 keywords.append( "FLT_MAX" );
00145 keywords.append( "FLT_MAX_10_EXP" );
00146 keywords.append( "FLT_MAX_EXP" );
00147 keywords.append( "FLT_MIN" );
00148 keywords.append( "FLT_MIN_10_EXP" );
00149 keywords.append( "FLT_MIN_EXP" );
00150 keywords.append( "FLT_RADIX" );
00151 keywords.append( "FLT_ROUNDS" );
00152 keywords.append( "FOPEN_MAX" );
00153 keywords.append( "for" );
00154 keywords.append( "fpos_t" );
00155 keywords.append( "friend" );
00156 keywords.append( "__FUNCTION__" );
00157 keywords.append( "__GNUC__" );
00158 keywords.append( "goto" );
00159 keywords.append( "HUGE_VAL" );
00160 keywords.append( "if" );
00161 keywords.append( "__imag__" );
00162 keywords.append( "inline" );
00163 keywords.append( "int" );
00164 keywords.append( "INT16_MAX" );
00165 keywords.append( "INT16_MIN" );
00166 keywords.append( "int16_t" );
00167 keywords.append( "INT32_MAX" );
00168 keywords.append( "INT32_MIN" );
00169 keywords.append( "int32_t" );
00170 keywords.append( "INT64_MAX" );
00171 keywords.append( "INT64_MIN" );
00172 keywords.append( "int64_t" );
00173 keywords.append( "INT8_MAX" );
00174 keywords.append( "INT8_MIN" );
00175 keywords.append( "int8_t" );
00176 keywords.append( "INT_FAST16_MAX" );
00177 keywords.append( "INT_FAST16_MIN" );
00178 keywords.append( "int_fast16_t" );
00179 keywords.append( "INT_FAST32_MAX" );
00180 keywords.append( "INT_FAST32_MIN" );
00181 keywords.append( "int_fast32_t" );
00182 keywords.append( "INT_FAST64_MAX" );
00183 keywords.append( "INT_FAST64_MIN" );
00184 keywords.append( "int_fast64_t" );
00185 keywords.append( "INT_FAST8_MAX" );
00186 keywords.append( "INT_FAST8_MIN" );
00187 keywords.append( "int_fast8_t" );
00188 keywords.append( "INT_LEAST16_MAX" );
00189 keywords.append( "INT_LEAST16_MIN" );
00190 keywords.append( "int_least16_t" );
00191 keywords.append( "INT_LEAST32_MAX" );
00192 keywords.append( "INT_LEAST32_MIN" );
00193 keywords.append( "int_least32_t" );
00194 keywords.append( "INT_LEAST64_MAX" );
00195 keywords.append( "INT_LEAST64_MIN" );
00196 keywords.append( "int_least64_t" );
00197 keywords.append( "INT_LEAST8_MAX" );
00198 keywords.append( "INT_LEAST8_MIN" );
00199 keywords.append( "int_least8_t" );
00200 keywords.append( "INT_MAX" );
00201 keywords.append( "INTMAX_MAX" );
00202 keywords.append( "INTMAX_MIN" );
00203 keywords.append( "intmax_t" );
00204 keywords.append( "INT_MIN" );
00205 keywords.append( "INTPTR_MAX" );
00206 keywords.append( "INTPTR_MIN" );
00207 keywords.append( "intptr_t" );
00208 keywords.append( "_IOFBF" );
00209 keywords.append( "_IOLBF" );
00210 keywords.append( "_IONBF" );
00211 keywords.append( "jmp_buf" );
00212 keywords.append( "__label__" );
00213 keywords.append( "LC_ALL" );
00214 keywords.append( "LC_COLLATE" );
00215 keywords.append( "LC_CTYPE" );
00216 keywords.append( "LC_MONETARY" );
00217 keywords.append( "LC_NUMERIC" );
00218 keywords.append( "LC_TIME" );
00219 keywords.append( "LDBL_DIG" );
00220 keywords.append( "LDBL_EPSILON" );
00221 keywords.append( "LDBL_MANT_DIG" );
00222 keywords.append( "LDBL_MAX" );
00223 keywords.append( "LDBL_MAX_10_EXP" );
00224 keywords.append( "LDBL_MAX_EXP" );
00225 keywords.append( "LDBL_MIN" );
00226 keywords.append( "LDBL_MIN_10_EXP" );
00227 keywords.append( "LDBL_MIN_EXP" );
00228 keywords.append( "ldiv_t" );
00229 keywords.append( "__LINE__" );
00230 keywords.append( "LLONG_MAX" );
00231 keywords.append( "long" );
00232 keywords.append( "LONG_MAX" );
00233 keywords.append( "LONG_MIN" );
00234 keywords.append( "L_tmpnam" );
00235 keywords.append( "M_1_PI" );
00236 keywords.append( "M_2_PI" );
00237 keywords.append( "M_2_SQRTPI" );
00238 keywords.append( "MB_CUR_MAX" );
00239 keywords.append( "MB_LEN_MAX" );
00240 keywords.append( "mbstate_t" );
00241 keywords.append( "M_E" );
00242 keywords.append( "M_LN10" );
00243 keywords.append( "M_LN2" );
00244 keywords.append( "M_LOG10E" );
00245 keywords.append( "M_LOG2E" );
00246 keywords.append( "M_PI" );
00247 keywords.append( "M_PI_2" );
00248 keywords.append( "M_PI_4" );
00249 keywords.append( "M_SQRT1_2" );
00250 keywords.append( "M_SQRT2" );
00251 keywords.append( "mutable" );
00252 keywords.append( "namespace" );
00253 keywords.append( "new" );
00254 keywords.append( "not" );
00255 keywords.append( "not_eq" );
00256 keywords.append( "NPOS" );
00257 keywords.append( "NULL" );
00258 keywords.append( "operator" );
00259 keywords.append( "or" );
00260 keywords.append( "or_eq" );
00261 keywords.append( "__PRETTY_FUNCTION__" );
00262 keywords.append( "private" );
00263 keywords.append( "protected" );
00264 keywords.append( "PTRDIFF_MAX" );
00265 keywords.append( "PTRDIFF_MIN" );
00266 keywords.append( "ptrdiff_t" );
00267 keywords.append( "public" );
00268 keywords.append( "RAND_MAX" );
00269 keywords.append( "__real__" );
00270 keywords.append( "register" );
00271 keywords.append( "reinterpret_cast" );
00272 keywords.append( "restrict" );
00273 keywords.append( "return" );
00274 keywords.append( "SCHAR_MAX" );
00275 keywords.append( "SCHAR_MIN" );
00276 keywords.append( "SEEK_CUR" );
00277 keywords.append( "SEEK_END" );
00278 keywords.append( "SEEK_SET" );
00279 keywords.append( "short" );
00280 keywords.append( "SHRT_MAX" );
00281 keywords.append( "SHRT_MIN" );
00282 keywords.append( "SIGABRT" );
00283 keywords.append( "SIGALRM" );
00284 keywords.append( "SIG_ATOMIC_MAX" );
00285 keywords.append( "SIG_ATOMIC_MIN" );
00286 keywords.append( "sig_atomic_t" );
00287 keywords.append( "SIGCHLD" );
00288 keywords.append( "SIGCONT" );
00289 keywords.append( "SIG_DFL" );
00290 keywords.append( "SIG_ERR" );
00291 keywords.append( "SIGFPE" );
00292 keywords.append( "SIGHUP" );
00293 keywords.append( "SIG_IGN" );
00294 keywords.append( "SIGILL" );
00295 keywords.append( "SIGINT" );
00296 keywords.append( "SIGKILL" );
00297 keywords.append( "signed" );
00298 keywords.append( "SIGPIPE" );
00299 keywords.append( "SIGQUIT" );
00300 keywords.append( "SIGSEGV" );
00301 keywords.append( "SIGSTOP" );
00302 keywords.append( "SIGTERM" );
00303 keywords.append( "SIGTRAP" );
00304 keywords.append( "SIGTSTP" );
00305 keywords.append( "SIGTTIN" );
00306 keywords.append( "SIGTTOU" );
00307 keywords.append( "SIGUSR1" );
00308 keywords.append( "SIGUSR2" );
00309 keywords.append( "SINT_MAX" );
00310 keywords.append( "SINT_MIN" );
00311 keywords.append( "SIZE_MAX" );
00312 keywords.append( "sizeof" );
00313 keywords.append( "size_t" );
00314 keywords.append( "SLONG_MAX" );
00315 keywords.append( "SLONG_MIN" );
00316 keywords.append( "SSHRT_MAX" );
00317 keywords.append( "SSHRT_MIN" );
00318 keywords.append( "ssize_t" );
00319 keywords.append( "static" );
00320 keywords.append( "static_cast" );
00321 keywords.append( "__STDC__" );
00322 keywords.append( "__STDC_VERSION__" );
00323 keywords.append( "stderr" );
00324 keywords.append( "stdin" );
00325 keywords.append( "stdout" );
00326 keywords.append( "struct" );
00327 keywords.append( "switch" );
00328 keywords.append( "template" );
00329 keywords.append( "this" );
00330 keywords.append( "throw" );
00331 keywords.append( "__TIME__" );
00332 keywords.append( "time_t" );
00333 keywords.append( "TMP_MAX" );
00334 keywords.append( "true" );
00335 keywords.append( "try" );
00336 keywords.append( "typedef" );
00337 keywords.append( "typeid" );
00338 keywords.append( "typename" );
00339 keywords.append( "typeof" );
00340 keywords.append( "UCHAR_MAX" );
00341 keywords.append( "UINT16_MAX" );
00342 keywords.append( "uint16_t" );
00343 keywords.append( "UINT32_MAX" );
00344 keywords.append( "uint32_t" );
00345 keywords.append( "UINT64_MAX" );
00346 keywords.append( "uint64_t" );
00347 keywords.append( "UINT8_MAX" );
00348 keywords.append( "uint8_t" );
00349 keywords.append( "UINT_FAST16_MAX" );
00350 keywords.append( "uint_fast16_t" );
00351 keywords.append( "UINT_FAST32_MAX" );
00352 keywords.append( "uint_fast32_t" );
00353 keywords.append( "UINT_FAST64_MAX" );
00354 keywords.append( "uint_fast64_t" );
00355 keywords.append( "UINT_FAST8_MAX" );
00356 keywords.append( "uint_fast8_t" );
00357 keywords.append( "UINT_LEAST16_MAX" );
00358 keywords.append( "uint_least16_t" );
00359 keywords.append( "UINT_LEAST32_MAX" );
00360 keywords.append( "uint_least32_t" );
00361 keywords.append( "UINT_LEAST64_MAX" );
00362 keywords.append( "uint_least64_t" );
00363 keywords.append( "UINT_LEAST8_MAX" );
00364 keywords.append( "uint_least8_t" );
00365 keywords.append( "UINT_MAX" );
00366 keywords.append( "UINTMAX_MAX" );
00367 keywords.append( "uintmax_t" );
00368 keywords.append( "UINTPTR_MAX" );
00369 keywords.append( "uintptr_t" );
00370 keywords.append( "ULLONG_MAX" );
00371 keywords.append( "ULONG_MAX" );
00372 keywords.append( "union" );
00373 keywords.append( "unsigned" );
00374 keywords.append( "USHRT_MAX" );
00375 keywords.append( "using" );
00376 keywords.append( "va_list" );
00377 keywords.append( "virtual" );
00378 keywords.append( "void" );
00379 keywords.append( "__volatile__" );
00380 keywords.append( "volatile" );
00381 keywords.append( "WCHAR_MAX" );
00382 keywords.append( "WCHAR_MIN" );
00383 keywords.append( "wchar_t" );
00384 keywords.append( "wctrans_t" );
00385 keywords.append( "wctype_t" );
00386 keywords.append( "WEOF" );
00387 keywords.append( "while" );
00388 keywords.append( "WINT_MAX" );
00389 keywords.append( "WINT_MIN" );
00390 keywords.append( "wint_t" );
00391 keywords.append( "xor" );
00392 keywords.append( "xor_eq" );
00393 }
00394
00395 return keywords;
00396 }
00397
00398 void createCppStereotypes(){
00399 UMLDoc *umldoc = UMLApp::app()->getDocument();
00400 umldoc->findOrCreateStereotype("constructor");
00401
00402 umldoc->findOrCreateStereotype("friend");
00403
00404 umldoc->findOrCreateStereotype("virtual");
00405 }
00406
00407 }
00408
This file is part of the documentation for umbrello Version 3.1.0.