umbrello API Documentation

codegen_utils.cpp

00001 /***************************************************************************
00002  *                                                                         *
00003  *   This program is free software; you can redistribute it and/or modify  *
00004  *   it under the terms of the GNU General Public License as published by  *
00005  *   the Free Software Foundation; either version 2 of the License, or     *
00006  *   (at your option) any later version.                                   *
00007  *                                                                         *
00008  *   Copyright (C) 2004-2007                                               *
00009  *   Umbrello UML Modeller Authors <uml-devel@uml.sf.net>                  *
00010  ***************************************************************************/
00011 
00012 // own header
00013 #include "codegen_utils.h"
00014 // app includes
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     // declares an operation as friend
00402     umldoc->findOrCreateStereotype("friend");
00403     // to use in methods that aren't abstract
00404     umldoc->findOrCreateStereotype("virtual");
00405 }
00406 
00407 }  // end namespace Codegen_Utils
00408 
KDE Logo
This file is part of the documentation for umbrello Version 3.1.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Jun 26 08:07:55 2007 by doxygen 1.4.1 written by Dimitri van Heesch, © 1997-2003