Now works end to end :) DoxygenTranslator restructured and placed into SWIG, Changes to java.cxx and

lang.cxx to accomodate this



git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2008-cherylfoil@10761 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Cheryl Foil 2008-08-15 23:36:18 +00:00
commit 4f2a579d6d
39 changed files with 5101 additions and 58 deletions

View file

@ -426,7 +426,7 @@ int yylook(void) {
if ((strncmp(loc,"/*@SWIG@",6) == 0) && (loc[Len(cmt)-3] == '@')) {
scanner_locator(cmt);
}
if (strncmp(loc, "/**<", 4) == 0 || strncmp(loc, "///<", 3) == 0||strncmp(loc, "/*!<", 3) == 0||strncmp(loc, "//!<", 3) == 0) {
if (strncmp(loc, "/**<", 4) == 0 || strncmp(loc, "///<", 4) == 0||strncmp(loc, "/*!<", 4) == 0||strncmp(loc, "//!<", 4) == 0) {
printf("Doxygen Post Comment: %s lines %d-%d [%s]\n", Char(Scanner_file(scan)), Scanner_start_line(scan), Scanner_line(scan), loc);
yylval.str = NewString(loc);
return DOXYGENPOSTSTRING;
@ -436,12 +436,6 @@ int yylook(void) {
yylval.str = NewString(loc);
return DOXYGENSTRING;
}
/*DOES NOT WORK PROPERLY AT THE MINUTE
if (strncmp(loc, "//", 2)== 0) {
printf("C style Comment: %s lines %d-%d [%s]\n", Char(Scanner_file(scan)), Scanner_start_line(scan), Scanner_line(scan), loc);
yylval.str = NewString(loc);
return C_COMMENT_STRING;
}*/
}
break;
case SWIG_TOKEN_ENDLINE:

View file

@ -64,26 +64,25 @@ String *currentPostComment; /* Location of the stored Doxygen Post-Comment */
String *currentCComment; /* Location of the stored C Comment */
static Node *previousNode = NULL; /* Pointer to the previous node (for post comments) */
/* NOT a safe method at the moment */
int isStructuralDoxygen(String *s){
char *k = Char(s);
while (k[0] != '\0' && k[0] != '\\' && k[0] != '@'){
k++;
}
if (k[0] == '\0') return 0;
k++;
if (strncmp(k, "addtogroup", 10) == 0 || strncmp(k, "callgraph", 9) == 0 || strncmp(k, "callergraph", 11) == 0
|| strncmp(k, "category", 8) == 0 || strncmp(k, "class", 5) == 0 || strncmp(k, "def", 3) == 0
|| strncmp(k, "defgroup", 8) == 0 || strncmp(k, "dir", 3) == 0 || strncmp(k, "enum", 4) == 0
|| strncmp(k, "example", 7) == 0 || strncmp(k, "file", 4) == 0 || strncmp(k, "fn", 2) == 0
|| strncmp(k, "headerfile", 9) == 0 || strncmp(k, "hideinitializer", 12) == 0 || strncmp(k, "ingroup", 7) == 0
|| strncmp(k, "interface", 9) == 0 || strncmp(k, "internal", 8) == 0 || strncmp(k, "mainpage", 8) == 0
|| strncmp(k, "name", 4) == 0 || strncmp(k, "namespace", 9) == 0 || strncmp(k, "nosubgrouping", 13) == 0
|| strncmp(k, "overload", 8) == 0 || strncmp(k, "package", 7) == 0 || strncmp(k, "page", 4) == 0
|| strncmp(k, "property", 8) == 0 || strncmp(k, "protocol", 8) == 0 || strncmp(k, "relates", 7) == 0
|| strncmp(k, "relatesalso", 5) == 0 || strncmp(k, "showinitializer", 5) == 0 || strncmp(k, "struct", 5) == 0
|| strncmp(k, "typedef", 7) == 0 || strncmp(k, "union", 5) == 0 || strncmp(k, "var", 3) == 0
|| strncmp(k, "weakgroup", 9) == 0){ return 1;}
char *slashPointer = Strchr(s, '\\');
char *atPointer = Strchr(s,'@');
if (slashPointer == NULL && atPointer == NULL) return 0;
else if( slashPointer == NULL) slashPointer = atPointer;
/* Perhaps a better solution exists... */
slashPointer++;
if (strncmp(slashPointer, "addtogroup", 10) == 0 || strncmp(slashPointer, "callgraph", 9) == 0 || strncmp(slashPointer, "callergraph", 11) == 0
|| strncmp(slashPointer, "category", 8) == 0 || strncmp(slashPointer, "class", 5) == 0 || strncmp(slashPointer, "def", 3) == 0
|| strncmp(slashPointer, "defgroup", 8) == 0 || strncmp(slashPointer, "dir", 3) == 0 || strncmp(slashPointer, "enum", 4) == 0
|| strncmp(slashPointer, "example", 7) == 0 || strncmp(slashPointer, "file", 4) == 0 || strncmp(slashPointer, "fn", 2) == 0
|| strncmp(slashPointer, "headerfile", 9) == 0 || strncmp(slashPointer, "hideinitializer", 12) == 0 || strncmp(slashPointer, "ingroup", 7) == 0
|| strncmp(slashPointer, "interface", 9) == 0 || strncmp(slashPointer, "internal", 8) == 0 || strncmp(slashPointer, "mainpage", 8) == 0
|| strncmp(slashPointer, "name", 4) == 0 || strncmp(slashPointer, "namespace", 9) == 0 || strncmp(slashPointer, "nosubgrouping", 13) == 0
|| strncmp(slashPointer, "overload", 8) == 0 || strncmp(slashPointer, "package", 7) == 0 || strncmp(slashPointer, "page", 4) == 0
|| strncmp(slashPointer, "property", 8) == 0 || strncmp(slashPointer, "protocol", 8) == 0 || strncmp(slashPointer, "relates", 7) == 0
|| strncmp(slashPointer, "relatesalso", 5) == 0 || strncmp(slashPointer, "showinitializer", 5) == 0 || strncmp(slashPointer, "struct", 5) == 0
|| strncmp(slashPointer, "typedef", 7) == 0 || strncmp(slashPointer, "union", 5) == 0 || strncmp(slashPointer, "var", 3) == 0
|| strncmp(slashPointer, "weakgroup", 9) == 0){ return 1;}
return 0;
}
@ -4091,8 +4090,8 @@ cpp_members : cpp_member cpp_members {
appendChild($$,$4);
set_nextSibling($$,$6);
}
| include_directive { $$ = $1; }
| empty { $$ = 0;}
| include_directive { $$ = $1; }
| empty { $$ = 0;}
| error {
int start_line = cparse_line;
skip_decl();
@ -4136,6 +4135,9 @@ cpp_member : c_declaration { $$ = $1; }
| storage_class idcolon SEMI { $$ = 0; }
| cpp_using_decl { $$ = $1; }
| cpp_template_decl { $$ = $1; }
| doxygen_comment{ $$ = $1; }
| c_style_comment{ $$ = $1; }
| doxygen_post_comment{ $$ = $1; }
| cpp_catch_decl { $$ = 0; }
| template_directive { $$ = $1; }
| warn_directive { $$ = $1; }

View file

@ -0,0 +1,380 @@
DoxygenTranslator/src/DoxygenEntity.o \
DoxygenTranslator/src/DoxygenEntity.o: \
DoxygenTranslator/src/DoxygenEntity.cpp \
DoxygenTranslator/src/DoxygenEntity.h /usr/include/c++/4.2/cstdlib \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++config.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/os_defines.h \
/usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
/usr/include/gnu/stubs-32.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/cpu_defines.h \
/usr/include/c++/4.2/cstddef \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stddef.h \
/usr/include/stdlib.h /usr/include/bits/waitflags.h \
/usr/include/bits/waitstatus.h /usr/include/endian.h \
/usr/include/bits/endian.h /usr/include/xlocale.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/time.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/c++/4.2/iostream \
/usr/include/c++/4.2/ostream /usr/include/c++/4.2/ios \
/usr/include/c++/4.2/iosfwd \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++locale.h \
/usr/include/c++/4.2/cstring /usr/include/string.h \
/usr/include/c++/4.2/cstdio /usr/include/stdio.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/c++/4.2/clocale /usr/include/locale.h \
/usr/include/bits/locale.h /usr/include/langinfo.h \
/usr/include/nl_types.h /usr/include/iconv.h /usr/include/libintl.h \
/usr/include/c++/4.2/cstdarg \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++io.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \
/usr/include/signal.h /usr/include/bits/setjmp.h /usr/include/unistd.h \
/usr/include/bits/posix_opt.h /usr/include/bits/environments.h \
/usr/include/bits/confname.h /usr/include/getopt.h \
/usr/include/c++/4.2/cctype /usr/include/ctype.h \
/usr/include/c++/4.2/bits/stringfwd.h \
/usr/include/c++/4.2/bits/postypes.h /usr/include/c++/4.2/cwchar \
/usr/include/c++/4.2/ctime /usr/include/bits/wchar.h \
/usr/include/stdint.h /usr/include/c++/4.2/bits/functexcept.h \
/usr/include/c++/4.2/exception_defines.h /usr/include/c++/4.2/exception \
/usr/include/c++/4.2/bits/char_traits.h \
/usr/include/c++/4.2/bits/stl_algobase.h /usr/include/c++/4.2/climits \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/limits.h \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/syslimits.h \
/usr/include/limits.h /usr/include/bits/posix1_lim.h \
/usr/include/bits/local_lim.h /usr/include/linux/limits.h \
/usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
/usr/include/c++/4.2/bits/stl_pair.h \
/usr/include/c++/4.2/bits/cpp_type_traits.h \
/usr/include/c++/4.2/ext/type_traits.h /usr/include/c++/4.2/utility \
/usr/include/c++/4.2/bits/stl_relops.h \
/usr/include/c++/4.2/bits/stl_iterator_base_types.h \
/usr/include/c++/4.2/bits/stl_iterator_base_funcs.h \
/usr/include/c++/4.2/bits/concept_check.h \
/usr/include/c++/4.2/bits/stl_iterator.h \
/usr/include/c++/4.2/debug/debug.h \
/usr/include/c++/4.2/bits/localefwd.h \
/usr/include/c++/4.2/bits/ios_base.h \
/usr/include/c++/4.2/ext/atomicity.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/atomic_word.h \
/usr/include/c++/4.2/bits/locale_classes.h /usr/include/c++/4.2/string \
/usr/include/c++/4.2/memory /usr/include/c++/4.2/bits/allocator.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++allocator.h \
/usr/include/c++/4.2/ext/new_allocator.h /usr/include/c++/4.2/new \
/usr/include/c++/4.2/bits/stl_construct.h \
/usr/include/c++/4.2/bits/stl_uninitialized.h \
/usr/include/c++/4.2/bits/stl_raw_storage_iter.h \
/usr/include/c++/4.2/limits /usr/include/c++/4.2/bits/ostream_insert.h \
/usr/include/c++/4.2/bits/stl_function.h \
/usr/include/c++/4.2/bits/basic_string.h /usr/include/c++/4.2/algorithm \
/usr/include/c++/4.2/bits/stl_algo.h \
/usr/include/c++/4.2/bits/stl_heap.h \
/usr/include/c++/4.2/bits/stl_tempbuf.h \
/usr/include/c++/4.2/bits/basic_string.tcc \
/usr/include/c++/4.2/streambuf /usr/include/c++/4.2/bits/streambuf.tcc \
/usr/include/c++/4.2/bits/basic_ios.h \
/usr/include/c++/4.2/bits/streambuf_iterator.h \
/usr/include/c++/4.2/bits/locale_facets.h /usr/include/c++/4.2/cwctype \
/usr/include/wctype.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_base.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_inline.h \
/usr/include/c++/4.2/bits/codecvt.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/time_members.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/messages_members.h \
/usr/include/c++/4.2/bits/basic_ios.tcc \
/usr/include/c++/4.2/bits/ostream.tcc /usr/include/c++/4.2/locale \
/usr/include/c++/4.2/bits/locale_facets.tcc \
/usr/include/c++/4.2/typeinfo /usr/include/c++/4.2/istream \
/usr/include/c++/4.2/bits/istream.tcc /usr/include/c++/4.2/list \
/usr/include/c++/4.2/bits/stl_list.h /usr/include/c++/4.2/bits/list.tcc
DoxygenTranslator/src/DoxygenEntity.h:
/usr/include/c++/4.2/cstdlib:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++config.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/os_defines.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-32.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/cpu_defines.h:
/usr/include/c++/4.2/cstddef:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stddef.h:
/usr/include/stdlib.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/c++/4.2/iostream:
/usr/include/c++/4.2/ostream:
/usr/include/c++/4.2/ios:
/usr/include/c++/4.2/iosfwd:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++locale.h:
/usr/include/c++/4.2/cstring:
/usr/include/string.h:
/usr/include/c++/4.2/cstdio:
/usr/include/stdio.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/c++/4.2/clocale:
/usr/include/locale.h:
/usr/include/bits/locale.h:
/usr/include/langinfo.h:
/usr/include/nl_types.h:
/usr/include/iconv.h:
/usr/include/libintl.h:
/usr/include/c++/4.2/cstdarg:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++io.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr-default.h:
/usr/include/pthread.h:
/usr/include/sched.h:
/usr/include/bits/sched.h:
/usr/include/signal.h:
/usr/include/bits/setjmp.h:
/usr/include/unistd.h:
/usr/include/bits/posix_opt.h:
/usr/include/bits/environments.h:
/usr/include/bits/confname.h:
/usr/include/getopt.h:
/usr/include/c++/4.2/cctype:
/usr/include/ctype.h:
/usr/include/c++/4.2/bits/stringfwd.h:
/usr/include/c++/4.2/bits/postypes.h:
/usr/include/c++/4.2/cwchar:
/usr/include/c++/4.2/ctime:
/usr/include/bits/wchar.h:
/usr/include/stdint.h:
/usr/include/c++/4.2/bits/functexcept.h:
/usr/include/c++/4.2/exception_defines.h:
/usr/include/c++/4.2/exception:
/usr/include/c++/4.2/bits/char_traits.h:
/usr/include/c++/4.2/bits/stl_algobase.h:
/usr/include/c++/4.2/climits:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/limits.h:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/syslimits.h:
/usr/include/limits.h:
/usr/include/bits/posix1_lim.h:
/usr/include/bits/local_lim.h:
/usr/include/linux/limits.h:
/usr/include/bits/posix2_lim.h:
/usr/include/bits/xopen_lim.h:
/usr/include/c++/4.2/bits/stl_pair.h:
/usr/include/c++/4.2/bits/cpp_type_traits.h:
/usr/include/c++/4.2/ext/type_traits.h:
/usr/include/c++/4.2/utility:
/usr/include/c++/4.2/bits/stl_relops.h:
/usr/include/c++/4.2/bits/stl_iterator_base_types.h:
/usr/include/c++/4.2/bits/stl_iterator_base_funcs.h:
/usr/include/c++/4.2/bits/concept_check.h:
/usr/include/c++/4.2/bits/stl_iterator.h:
/usr/include/c++/4.2/debug/debug.h:
/usr/include/c++/4.2/bits/localefwd.h:
/usr/include/c++/4.2/bits/ios_base.h:
/usr/include/c++/4.2/ext/atomicity.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/atomic_word.h:
/usr/include/c++/4.2/bits/locale_classes.h:
/usr/include/c++/4.2/string:
/usr/include/c++/4.2/memory:
/usr/include/c++/4.2/bits/allocator.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++allocator.h:
/usr/include/c++/4.2/ext/new_allocator.h:
/usr/include/c++/4.2/new:
/usr/include/c++/4.2/bits/stl_construct.h:
/usr/include/c++/4.2/bits/stl_uninitialized.h:
/usr/include/c++/4.2/bits/stl_raw_storage_iter.h:
/usr/include/c++/4.2/limits:
/usr/include/c++/4.2/bits/ostream_insert.h:
/usr/include/c++/4.2/bits/stl_function.h:
/usr/include/c++/4.2/bits/basic_string.h:
/usr/include/c++/4.2/algorithm:
/usr/include/c++/4.2/bits/stl_algo.h:
/usr/include/c++/4.2/bits/stl_heap.h:
/usr/include/c++/4.2/bits/stl_tempbuf.h:
/usr/include/c++/4.2/bits/basic_string.tcc:
/usr/include/c++/4.2/streambuf:
/usr/include/c++/4.2/bits/streambuf.tcc:
/usr/include/c++/4.2/bits/basic_ios.h:
/usr/include/c++/4.2/bits/streambuf_iterator.h:
/usr/include/c++/4.2/bits/locale_facets.h:
/usr/include/c++/4.2/cwctype:
/usr/include/wctype.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_base.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_inline.h:
/usr/include/c++/4.2/bits/codecvt.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/time_members.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/messages_members.h:
/usr/include/c++/4.2/bits/basic_ios.tcc:
/usr/include/c++/4.2/bits/ostream.tcc:
/usr/include/c++/4.2/locale:
/usr/include/c++/4.2/bits/locale_facets.tcc:
/usr/include/c++/4.2/typeinfo:
/usr/include/c++/4.2/istream:
/usr/include/c++/4.2/bits/istream.tcc:
/usr/include/c++/4.2/list:
/usr/include/c++/4.2/bits/stl_list.h:
/usr/include/c++/4.2/bits/list.tcc:

View file

@ -0,0 +1,398 @@
DoxygenTranslator/src/DoxygenParser.o \
DoxygenTranslator/src/DoxygenParser.o: \
DoxygenTranslator/src/DoxygenParser.cpp \
DoxygenTranslator/src/DoxygenParser.h /usr/include/c++/4.2/cstdlib \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++config.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/os_defines.h \
/usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
/usr/include/gnu/stubs-32.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/cpu_defines.h \
/usr/include/c++/4.2/cstddef \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stddef.h \
/usr/include/stdlib.h /usr/include/bits/waitflags.h \
/usr/include/bits/waitstatus.h /usr/include/endian.h \
/usr/include/bits/endian.h /usr/include/xlocale.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/time.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/c++/4.2/iostream \
/usr/include/c++/4.2/ostream /usr/include/c++/4.2/ios \
/usr/include/c++/4.2/iosfwd \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++locale.h \
/usr/include/c++/4.2/cstring /usr/include/string.h \
/usr/include/c++/4.2/cstdio /usr/include/stdio.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/c++/4.2/clocale /usr/include/locale.h \
/usr/include/bits/locale.h /usr/include/langinfo.h \
/usr/include/nl_types.h /usr/include/iconv.h /usr/include/libintl.h \
/usr/include/c++/4.2/cstdarg \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++io.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \
/usr/include/signal.h /usr/include/bits/setjmp.h /usr/include/unistd.h \
/usr/include/bits/posix_opt.h /usr/include/bits/environments.h \
/usr/include/bits/confname.h /usr/include/getopt.h \
/usr/include/c++/4.2/cctype /usr/include/ctype.h \
/usr/include/c++/4.2/bits/stringfwd.h \
/usr/include/c++/4.2/bits/postypes.h /usr/include/c++/4.2/cwchar \
/usr/include/c++/4.2/ctime /usr/include/bits/wchar.h \
/usr/include/stdint.h /usr/include/c++/4.2/bits/functexcept.h \
/usr/include/c++/4.2/exception_defines.h /usr/include/c++/4.2/exception \
/usr/include/c++/4.2/bits/char_traits.h \
/usr/include/c++/4.2/bits/stl_algobase.h /usr/include/c++/4.2/climits \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/limits.h \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/syslimits.h \
/usr/include/limits.h /usr/include/bits/posix1_lim.h \
/usr/include/bits/local_lim.h /usr/include/linux/limits.h \
/usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
/usr/include/c++/4.2/bits/stl_pair.h \
/usr/include/c++/4.2/bits/cpp_type_traits.h \
/usr/include/c++/4.2/ext/type_traits.h /usr/include/c++/4.2/utility \
/usr/include/c++/4.2/bits/stl_relops.h \
/usr/include/c++/4.2/bits/stl_iterator_base_types.h \
/usr/include/c++/4.2/bits/stl_iterator_base_funcs.h \
/usr/include/c++/4.2/bits/concept_check.h \
/usr/include/c++/4.2/bits/stl_iterator.h \
/usr/include/c++/4.2/debug/debug.h \
/usr/include/c++/4.2/bits/localefwd.h \
/usr/include/c++/4.2/bits/ios_base.h \
/usr/include/c++/4.2/ext/atomicity.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/atomic_word.h \
/usr/include/c++/4.2/bits/locale_classes.h /usr/include/c++/4.2/string \
/usr/include/c++/4.2/memory /usr/include/c++/4.2/bits/allocator.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++allocator.h \
/usr/include/c++/4.2/ext/new_allocator.h /usr/include/c++/4.2/new \
/usr/include/c++/4.2/bits/stl_construct.h \
/usr/include/c++/4.2/bits/stl_uninitialized.h \
/usr/include/c++/4.2/bits/stl_raw_storage_iter.h \
/usr/include/c++/4.2/limits /usr/include/c++/4.2/bits/ostream_insert.h \
/usr/include/c++/4.2/bits/stl_function.h \
/usr/include/c++/4.2/bits/basic_string.h /usr/include/c++/4.2/algorithm \
/usr/include/c++/4.2/bits/stl_algo.h \
/usr/include/c++/4.2/bits/stl_heap.h \
/usr/include/c++/4.2/bits/stl_tempbuf.h \
/usr/include/c++/4.2/bits/basic_string.tcc \
/usr/include/c++/4.2/streambuf /usr/include/c++/4.2/bits/streambuf.tcc \
/usr/include/c++/4.2/bits/basic_ios.h \
/usr/include/c++/4.2/bits/streambuf_iterator.h \
/usr/include/c++/4.2/bits/locale_facets.h /usr/include/c++/4.2/cwctype \
/usr/include/wctype.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_base.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_inline.h \
/usr/include/c++/4.2/bits/codecvt.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/time_members.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/messages_members.h \
/usr/include/c++/4.2/bits/basic_ios.tcc \
/usr/include/c++/4.2/bits/ostream.tcc /usr/include/c++/4.2/locale \
/usr/include/c++/4.2/bits/locale_facets.tcc \
/usr/include/c++/4.2/typeinfo /usr/include/c++/4.2/istream \
/usr/include/c++/4.2/bits/istream.tcc /usr/include/c++/4.2/fstream \
/usr/include/c++/4.2/i486-linux-gnu/bits/basic_file.h \
/usr/include/c++/4.2/bits/fstream.tcc /usr/include/c++/4.2/list \
/usr/include/c++/4.2/bits/stl_list.h /usr/include/c++/4.2/bits/list.tcc \
DoxygenTranslator/src/DoxygenEntity.h DoxygenTranslator/src/TokenList.h \
DoxygenTranslator/src/Token.h DoxygenTranslator/src/JavaDocConverter.h
DoxygenTranslator/src/DoxygenParser.h:
/usr/include/c++/4.2/cstdlib:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++config.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/os_defines.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-32.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/cpu_defines.h:
/usr/include/c++/4.2/cstddef:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stddef.h:
/usr/include/stdlib.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/c++/4.2/iostream:
/usr/include/c++/4.2/ostream:
/usr/include/c++/4.2/ios:
/usr/include/c++/4.2/iosfwd:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++locale.h:
/usr/include/c++/4.2/cstring:
/usr/include/string.h:
/usr/include/c++/4.2/cstdio:
/usr/include/stdio.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/c++/4.2/clocale:
/usr/include/locale.h:
/usr/include/bits/locale.h:
/usr/include/langinfo.h:
/usr/include/nl_types.h:
/usr/include/iconv.h:
/usr/include/libintl.h:
/usr/include/c++/4.2/cstdarg:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++io.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr-default.h:
/usr/include/pthread.h:
/usr/include/sched.h:
/usr/include/bits/sched.h:
/usr/include/signal.h:
/usr/include/bits/setjmp.h:
/usr/include/unistd.h:
/usr/include/bits/posix_opt.h:
/usr/include/bits/environments.h:
/usr/include/bits/confname.h:
/usr/include/getopt.h:
/usr/include/c++/4.2/cctype:
/usr/include/ctype.h:
/usr/include/c++/4.2/bits/stringfwd.h:
/usr/include/c++/4.2/bits/postypes.h:
/usr/include/c++/4.2/cwchar:
/usr/include/c++/4.2/ctime:
/usr/include/bits/wchar.h:
/usr/include/stdint.h:
/usr/include/c++/4.2/bits/functexcept.h:
/usr/include/c++/4.2/exception_defines.h:
/usr/include/c++/4.2/exception:
/usr/include/c++/4.2/bits/char_traits.h:
/usr/include/c++/4.2/bits/stl_algobase.h:
/usr/include/c++/4.2/climits:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/limits.h:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/syslimits.h:
/usr/include/limits.h:
/usr/include/bits/posix1_lim.h:
/usr/include/bits/local_lim.h:
/usr/include/linux/limits.h:
/usr/include/bits/posix2_lim.h:
/usr/include/bits/xopen_lim.h:
/usr/include/c++/4.2/bits/stl_pair.h:
/usr/include/c++/4.2/bits/cpp_type_traits.h:
/usr/include/c++/4.2/ext/type_traits.h:
/usr/include/c++/4.2/utility:
/usr/include/c++/4.2/bits/stl_relops.h:
/usr/include/c++/4.2/bits/stl_iterator_base_types.h:
/usr/include/c++/4.2/bits/stl_iterator_base_funcs.h:
/usr/include/c++/4.2/bits/concept_check.h:
/usr/include/c++/4.2/bits/stl_iterator.h:
/usr/include/c++/4.2/debug/debug.h:
/usr/include/c++/4.2/bits/localefwd.h:
/usr/include/c++/4.2/bits/ios_base.h:
/usr/include/c++/4.2/ext/atomicity.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/atomic_word.h:
/usr/include/c++/4.2/bits/locale_classes.h:
/usr/include/c++/4.2/string:
/usr/include/c++/4.2/memory:
/usr/include/c++/4.2/bits/allocator.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++allocator.h:
/usr/include/c++/4.2/ext/new_allocator.h:
/usr/include/c++/4.2/new:
/usr/include/c++/4.2/bits/stl_construct.h:
/usr/include/c++/4.2/bits/stl_uninitialized.h:
/usr/include/c++/4.2/bits/stl_raw_storage_iter.h:
/usr/include/c++/4.2/limits:
/usr/include/c++/4.2/bits/ostream_insert.h:
/usr/include/c++/4.2/bits/stl_function.h:
/usr/include/c++/4.2/bits/basic_string.h:
/usr/include/c++/4.2/algorithm:
/usr/include/c++/4.2/bits/stl_algo.h:
/usr/include/c++/4.2/bits/stl_heap.h:
/usr/include/c++/4.2/bits/stl_tempbuf.h:
/usr/include/c++/4.2/bits/basic_string.tcc:
/usr/include/c++/4.2/streambuf:
/usr/include/c++/4.2/bits/streambuf.tcc:
/usr/include/c++/4.2/bits/basic_ios.h:
/usr/include/c++/4.2/bits/streambuf_iterator.h:
/usr/include/c++/4.2/bits/locale_facets.h:
/usr/include/c++/4.2/cwctype:
/usr/include/wctype.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_base.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_inline.h:
/usr/include/c++/4.2/bits/codecvt.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/time_members.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/messages_members.h:
/usr/include/c++/4.2/bits/basic_ios.tcc:
/usr/include/c++/4.2/bits/ostream.tcc:
/usr/include/c++/4.2/locale:
/usr/include/c++/4.2/bits/locale_facets.tcc:
/usr/include/c++/4.2/typeinfo:
/usr/include/c++/4.2/istream:
/usr/include/c++/4.2/bits/istream.tcc:
/usr/include/c++/4.2/fstream:
/usr/include/c++/4.2/i486-linux-gnu/bits/basic_file.h:
/usr/include/c++/4.2/bits/fstream.tcc:
/usr/include/c++/4.2/list:
/usr/include/c++/4.2/bits/stl_list.h:
/usr/include/c++/4.2/bits/list.tcc:
DoxygenTranslator/src/DoxygenEntity.h:
DoxygenTranslator/src/TokenList.h:
DoxygenTranslator/src/Token.h:
DoxygenTranslator/src/JavaDocConverter.h:

View file

@ -0,0 +1,401 @@
DoxygenTranslator/src/DoxygenTranslator.o \
DoxygenTranslator/src/DoxygenTranslator.o: \
DoxygenTranslator/src/DoxygenTranslator.cpp \
DoxygenTranslator/src/DoxygenParser.h /usr/include/c++/4.2/cstdlib \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++config.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/os_defines.h \
/usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
/usr/include/gnu/stubs-32.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/cpu_defines.h \
/usr/include/c++/4.2/cstddef \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stddef.h \
/usr/include/stdlib.h /usr/include/bits/waitflags.h \
/usr/include/bits/waitstatus.h /usr/include/endian.h \
/usr/include/bits/endian.h /usr/include/xlocale.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/time.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/c++/4.2/iostream \
/usr/include/c++/4.2/ostream /usr/include/c++/4.2/ios \
/usr/include/c++/4.2/iosfwd \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++locale.h \
/usr/include/c++/4.2/cstring /usr/include/string.h \
/usr/include/c++/4.2/cstdio /usr/include/stdio.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/c++/4.2/clocale /usr/include/locale.h \
/usr/include/bits/locale.h /usr/include/langinfo.h \
/usr/include/nl_types.h /usr/include/iconv.h /usr/include/libintl.h \
/usr/include/c++/4.2/cstdarg \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++io.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \
/usr/include/signal.h /usr/include/bits/setjmp.h /usr/include/unistd.h \
/usr/include/bits/posix_opt.h /usr/include/bits/environments.h \
/usr/include/bits/confname.h /usr/include/getopt.h \
/usr/include/c++/4.2/cctype /usr/include/ctype.h \
/usr/include/c++/4.2/bits/stringfwd.h \
/usr/include/c++/4.2/bits/postypes.h /usr/include/c++/4.2/cwchar \
/usr/include/c++/4.2/ctime /usr/include/bits/wchar.h \
/usr/include/stdint.h /usr/include/c++/4.2/bits/functexcept.h \
/usr/include/c++/4.2/exception_defines.h /usr/include/c++/4.2/exception \
/usr/include/c++/4.2/bits/char_traits.h \
/usr/include/c++/4.2/bits/stl_algobase.h /usr/include/c++/4.2/climits \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/limits.h \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/syslimits.h \
/usr/include/limits.h /usr/include/bits/posix1_lim.h \
/usr/include/bits/local_lim.h /usr/include/linux/limits.h \
/usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
/usr/include/c++/4.2/bits/stl_pair.h \
/usr/include/c++/4.2/bits/cpp_type_traits.h \
/usr/include/c++/4.2/ext/type_traits.h /usr/include/c++/4.2/utility \
/usr/include/c++/4.2/bits/stl_relops.h \
/usr/include/c++/4.2/bits/stl_iterator_base_types.h \
/usr/include/c++/4.2/bits/stl_iterator_base_funcs.h \
/usr/include/c++/4.2/bits/concept_check.h \
/usr/include/c++/4.2/bits/stl_iterator.h \
/usr/include/c++/4.2/debug/debug.h \
/usr/include/c++/4.2/bits/localefwd.h \
/usr/include/c++/4.2/bits/ios_base.h \
/usr/include/c++/4.2/ext/atomicity.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/atomic_word.h \
/usr/include/c++/4.2/bits/locale_classes.h /usr/include/c++/4.2/string \
/usr/include/c++/4.2/memory /usr/include/c++/4.2/bits/allocator.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++allocator.h \
/usr/include/c++/4.2/ext/new_allocator.h /usr/include/c++/4.2/new \
/usr/include/c++/4.2/bits/stl_construct.h \
/usr/include/c++/4.2/bits/stl_uninitialized.h \
/usr/include/c++/4.2/bits/stl_raw_storage_iter.h \
/usr/include/c++/4.2/limits /usr/include/c++/4.2/bits/ostream_insert.h \
/usr/include/c++/4.2/bits/stl_function.h \
/usr/include/c++/4.2/bits/basic_string.h /usr/include/c++/4.2/algorithm \
/usr/include/c++/4.2/bits/stl_algo.h \
/usr/include/c++/4.2/bits/stl_heap.h \
/usr/include/c++/4.2/bits/stl_tempbuf.h \
/usr/include/c++/4.2/bits/basic_string.tcc \
/usr/include/c++/4.2/streambuf /usr/include/c++/4.2/bits/streambuf.tcc \
/usr/include/c++/4.2/bits/basic_ios.h \
/usr/include/c++/4.2/bits/streambuf_iterator.h \
/usr/include/c++/4.2/bits/locale_facets.h /usr/include/c++/4.2/cwctype \
/usr/include/wctype.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_base.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_inline.h \
/usr/include/c++/4.2/bits/codecvt.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/time_members.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/messages_members.h \
/usr/include/c++/4.2/bits/basic_ios.tcc \
/usr/include/c++/4.2/bits/ostream.tcc /usr/include/c++/4.2/locale \
/usr/include/c++/4.2/bits/locale_facets.tcc \
/usr/include/c++/4.2/typeinfo /usr/include/c++/4.2/istream \
/usr/include/c++/4.2/bits/istream.tcc /usr/include/c++/4.2/fstream \
/usr/include/c++/4.2/i486-linux-gnu/bits/basic_file.h \
/usr/include/c++/4.2/bits/fstream.tcc /usr/include/c++/4.2/list \
/usr/include/c++/4.2/bits/stl_list.h /usr/include/c++/4.2/bits/list.tcc \
DoxygenTranslator/src/DoxygenEntity.h DoxygenTranslator/src/TokenList.h \
DoxygenTranslator/src/Token.h DoxygenTranslator/src/JavaDocConverter.h \
DoxygenTranslator/src/DoxygenTranslator.h
DoxygenTranslator/src/DoxygenParser.h:
/usr/include/c++/4.2/cstdlib:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++config.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/os_defines.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-32.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/cpu_defines.h:
/usr/include/c++/4.2/cstddef:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stddef.h:
/usr/include/stdlib.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/c++/4.2/iostream:
/usr/include/c++/4.2/ostream:
/usr/include/c++/4.2/ios:
/usr/include/c++/4.2/iosfwd:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++locale.h:
/usr/include/c++/4.2/cstring:
/usr/include/string.h:
/usr/include/c++/4.2/cstdio:
/usr/include/stdio.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/c++/4.2/clocale:
/usr/include/locale.h:
/usr/include/bits/locale.h:
/usr/include/langinfo.h:
/usr/include/nl_types.h:
/usr/include/iconv.h:
/usr/include/libintl.h:
/usr/include/c++/4.2/cstdarg:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++io.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr-default.h:
/usr/include/pthread.h:
/usr/include/sched.h:
/usr/include/bits/sched.h:
/usr/include/signal.h:
/usr/include/bits/setjmp.h:
/usr/include/unistd.h:
/usr/include/bits/posix_opt.h:
/usr/include/bits/environments.h:
/usr/include/bits/confname.h:
/usr/include/getopt.h:
/usr/include/c++/4.2/cctype:
/usr/include/ctype.h:
/usr/include/c++/4.2/bits/stringfwd.h:
/usr/include/c++/4.2/bits/postypes.h:
/usr/include/c++/4.2/cwchar:
/usr/include/c++/4.2/ctime:
/usr/include/bits/wchar.h:
/usr/include/stdint.h:
/usr/include/c++/4.2/bits/functexcept.h:
/usr/include/c++/4.2/exception_defines.h:
/usr/include/c++/4.2/exception:
/usr/include/c++/4.2/bits/char_traits.h:
/usr/include/c++/4.2/bits/stl_algobase.h:
/usr/include/c++/4.2/climits:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/limits.h:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/syslimits.h:
/usr/include/limits.h:
/usr/include/bits/posix1_lim.h:
/usr/include/bits/local_lim.h:
/usr/include/linux/limits.h:
/usr/include/bits/posix2_lim.h:
/usr/include/bits/xopen_lim.h:
/usr/include/c++/4.2/bits/stl_pair.h:
/usr/include/c++/4.2/bits/cpp_type_traits.h:
/usr/include/c++/4.2/ext/type_traits.h:
/usr/include/c++/4.2/utility:
/usr/include/c++/4.2/bits/stl_relops.h:
/usr/include/c++/4.2/bits/stl_iterator_base_types.h:
/usr/include/c++/4.2/bits/stl_iterator_base_funcs.h:
/usr/include/c++/4.2/bits/concept_check.h:
/usr/include/c++/4.2/bits/stl_iterator.h:
/usr/include/c++/4.2/debug/debug.h:
/usr/include/c++/4.2/bits/localefwd.h:
/usr/include/c++/4.2/bits/ios_base.h:
/usr/include/c++/4.2/ext/atomicity.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/atomic_word.h:
/usr/include/c++/4.2/bits/locale_classes.h:
/usr/include/c++/4.2/string:
/usr/include/c++/4.2/memory:
/usr/include/c++/4.2/bits/allocator.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++allocator.h:
/usr/include/c++/4.2/ext/new_allocator.h:
/usr/include/c++/4.2/new:
/usr/include/c++/4.2/bits/stl_construct.h:
/usr/include/c++/4.2/bits/stl_uninitialized.h:
/usr/include/c++/4.2/bits/stl_raw_storage_iter.h:
/usr/include/c++/4.2/limits:
/usr/include/c++/4.2/bits/ostream_insert.h:
/usr/include/c++/4.2/bits/stl_function.h:
/usr/include/c++/4.2/bits/basic_string.h:
/usr/include/c++/4.2/algorithm:
/usr/include/c++/4.2/bits/stl_algo.h:
/usr/include/c++/4.2/bits/stl_heap.h:
/usr/include/c++/4.2/bits/stl_tempbuf.h:
/usr/include/c++/4.2/bits/basic_string.tcc:
/usr/include/c++/4.2/streambuf:
/usr/include/c++/4.2/bits/streambuf.tcc:
/usr/include/c++/4.2/bits/basic_ios.h:
/usr/include/c++/4.2/bits/streambuf_iterator.h:
/usr/include/c++/4.2/bits/locale_facets.h:
/usr/include/c++/4.2/cwctype:
/usr/include/wctype.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_base.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_inline.h:
/usr/include/c++/4.2/bits/codecvt.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/time_members.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/messages_members.h:
/usr/include/c++/4.2/bits/basic_ios.tcc:
/usr/include/c++/4.2/bits/ostream.tcc:
/usr/include/c++/4.2/locale:
/usr/include/c++/4.2/bits/locale_facets.tcc:
/usr/include/c++/4.2/typeinfo:
/usr/include/c++/4.2/istream:
/usr/include/c++/4.2/bits/istream.tcc:
/usr/include/c++/4.2/fstream:
/usr/include/c++/4.2/i486-linux-gnu/bits/basic_file.h:
/usr/include/c++/4.2/bits/fstream.tcc:
/usr/include/c++/4.2/list:
/usr/include/c++/4.2/bits/stl_list.h:
/usr/include/c++/4.2/bits/list.tcc:
DoxygenTranslator/src/DoxygenEntity.h:
DoxygenTranslator/src/TokenList.h:
DoxygenTranslator/src/Token.h:
DoxygenTranslator/src/JavaDocConverter.h:
DoxygenTranslator/src/DoxygenTranslator.h:

View file

@ -0,0 +1,385 @@
DoxygenTranslator/src/JavaDocConverter.o \
DoxygenTranslator/src/JavaDocConverter.o: \
DoxygenTranslator/src/JavaDocConverter.cpp \
DoxygenTranslator/src/JavaDocConverter.h /usr/include/c++/4.2/list \
/usr/include/c++/4.2/bits/functexcept.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++config.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/os_defines.h \
/usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
/usr/include/gnu/stubs-32.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/cpu_defines.h \
/usr/include/c++/4.2/exception_defines.h \
/usr/include/c++/4.2/bits/stl_algobase.h /usr/include/c++/4.2/cstring \
/usr/include/c++/4.2/cstddef \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stddef.h \
/usr/include/string.h /usr/include/xlocale.h \
/usr/include/c++/4.2/climits \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/limits.h \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/syslimits.h \
/usr/include/limits.h /usr/include/bits/posix1_lim.h \
/usr/include/bits/local_lim.h /usr/include/linux/limits.h \
/usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
/usr/include/bits/stdio_lim.h /usr/include/c++/4.2/cstdlib \
/usr/include/stdlib.h /usr/include/bits/waitflags.h \
/usr/include/bits/waitstatus.h /usr/include/endian.h \
/usr/include/bits/endian.h /usr/include/sys/types.h \
/usr/include/bits/types.h /usr/include/bits/typesizes.h \
/usr/include/time.h /usr/include/sys/select.h \
/usr/include/bits/select.h /usr/include/bits/sigset.h \
/usr/include/bits/time.h /usr/include/sys/sysmacros.h \
/usr/include/bits/pthreadtypes.h /usr/include/alloca.h \
/usr/include/c++/4.2/iosfwd \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++locale.h \
/usr/include/c++/4.2/cstdio /usr/include/stdio.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stdarg.h \
/usr/include/bits/sys_errlist.h /usr/include/c++/4.2/clocale \
/usr/include/locale.h /usr/include/bits/locale.h \
/usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \
/usr/include/libintl.h /usr/include/c++/4.2/cstdarg \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++io.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \
/usr/include/signal.h /usr/include/bits/setjmp.h /usr/include/unistd.h \
/usr/include/bits/posix_opt.h /usr/include/bits/environments.h \
/usr/include/bits/confname.h /usr/include/getopt.h \
/usr/include/c++/4.2/cctype /usr/include/ctype.h \
/usr/include/c++/4.2/bits/stringfwd.h \
/usr/include/c++/4.2/bits/postypes.h /usr/include/c++/4.2/cwchar \
/usr/include/c++/4.2/ctime /usr/include/bits/wchar.h \
/usr/include/stdint.h /usr/include/c++/4.2/bits/stl_pair.h \
/usr/include/c++/4.2/bits/cpp_type_traits.h \
/usr/include/c++/4.2/ext/type_traits.h /usr/include/c++/4.2/utility \
/usr/include/c++/4.2/bits/stl_relops.h \
/usr/include/c++/4.2/bits/stl_iterator_base_types.h \
/usr/include/c++/4.2/bits/stl_iterator_base_funcs.h \
/usr/include/c++/4.2/bits/concept_check.h \
/usr/include/c++/4.2/bits/stl_iterator.h \
/usr/include/c++/4.2/debug/debug.h \
/usr/include/c++/4.2/bits/allocator.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++allocator.h \
/usr/include/c++/4.2/ext/new_allocator.h /usr/include/c++/4.2/new \
/usr/include/c++/4.2/exception \
/usr/include/c++/4.2/bits/stl_construct.h \
/usr/include/c++/4.2/bits/stl_uninitialized.h \
/usr/include/c++/4.2/bits/stl_list.h /usr/include/c++/4.2/bits/list.tcc \
/usr/include/c++/4.2/string /usr/include/c++/4.2/bits/char_traits.h \
/usr/include/c++/4.2/memory \
/usr/include/c++/4.2/bits/stl_raw_storage_iter.h \
/usr/include/c++/4.2/limits /usr/include/c++/4.2/bits/ostream_insert.h \
/usr/include/c++/4.2/bits/stl_function.h \
/usr/include/c++/4.2/bits/basic_string.h \
/usr/include/c++/4.2/ext/atomicity.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/atomic_word.h \
/usr/include/c++/4.2/algorithm /usr/include/c++/4.2/bits/stl_algo.h \
/usr/include/c++/4.2/bits/stl_heap.h \
/usr/include/c++/4.2/bits/stl_tempbuf.h \
/usr/include/c++/4.2/bits/basic_string.tcc \
DoxygenTranslator/src/DoxygenEntity.h /usr/include/c++/4.2/iostream \
/usr/include/c++/4.2/ostream /usr/include/c++/4.2/ios \
/usr/include/c++/4.2/bits/localefwd.h \
/usr/include/c++/4.2/bits/ios_base.h \
/usr/include/c++/4.2/bits/locale_classes.h \
/usr/include/c++/4.2/streambuf /usr/include/c++/4.2/bits/streambuf.tcc \
/usr/include/c++/4.2/bits/basic_ios.h \
/usr/include/c++/4.2/bits/streambuf_iterator.h \
/usr/include/c++/4.2/bits/locale_facets.h /usr/include/c++/4.2/cwctype \
/usr/include/wctype.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_base.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_inline.h \
/usr/include/c++/4.2/bits/codecvt.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/time_members.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/messages_members.h \
/usr/include/c++/4.2/bits/basic_ios.tcc \
/usr/include/c++/4.2/bits/ostream.tcc /usr/include/c++/4.2/locale \
/usr/include/c++/4.2/bits/locale_facets.tcc \
/usr/include/c++/4.2/typeinfo /usr/include/c++/4.2/istream \
/usr/include/c++/4.2/bits/istream.tcc
DoxygenTranslator/src/JavaDocConverter.h:
/usr/include/c++/4.2/list:
/usr/include/c++/4.2/bits/functexcept.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++config.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/os_defines.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-32.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/cpu_defines.h:
/usr/include/c++/4.2/exception_defines.h:
/usr/include/c++/4.2/bits/stl_algobase.h:
/usr/include/c++/4.2/cstring:
/usr/include/c++/4.2/cstddef:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stddef.h:
/usr/include/string.h:
/usr/include/xlocale.h:
/usr/include/c++/4.2/climits:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/limits.h:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/syslimits.h:
/usr/include/limits.h:
/usr/include/bits/posix1_lim.h:
/usr/include/bits/local_lim.h:
/usr/include/linux/limits.h:
/usr/include/bits/posix2_lim.h:
/usr/include/bits/xopen_lim.h:
/usr/include/bits/stdio_lim.h:
/usr/include/c++/4.2/cstdlib:
/usr/include/stdlib.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/c++/4.2/iosfwd:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++locale.h:
/usr/include/c++/4.2/cstdio:
/usr/include/stdio.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stdarg.h:
/usr/include/bits/sys_errlist.h:
/usr/include/c++/4.2/clocale:
/usr/include/locale.h:
/usr/include/bits/locale.h:
/usr/include/langinfo.h:
/usr/include/nl_types.h:
/usr/include/iconv.h:
/usr/include/libintl.h:
/usr/include/c++/4.2/cstdarg:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++io.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr-default.h:
/usr/include/pthread.h:
/usr/include/sched.h:
/usr/include/bits/sched.h:
/usr/include/signal.h:
/usr/include/bits/setjmp.h:
/usr/include/unistd.h:
/usr/include/bits/posix_opt.h:
/usr/include/bits/environments.h:
/usr/include/bits/confname.h:
/usr/include/getopt.h:
/usr/include/c++/4.2/cctype:
/usr/include/ctype.h:
/usr/include/c++/4.2/bits/stringfwd.h:
/usr/include/c++/4.2/bits/postypes.h:
/usr/include/c++/4.2/cwchar:
/usr/include/c++/4.2/ctime:
/usr/include/bits/wchar.h:
/usr/include/stdint.h:
/usr/include/c++/4.2/bits/stl_pair.h:
/usr/include/c++/4.2/bits/cpp_type_traits.h:
/usr/include/c++/4.2/ext/type_traits.h:
/usr/include/c++/4.2/utility:
/usr/include/c++/4.2/bits/stl_relops.h:
/usr/include/c++/4.2/bits/stl_iterator_base_types.h:
/usr/include/c++/4.2/bits/stl_iterator_base_funcs.h:
/usr/include/c++/4.2/bits/concept_check.h:
/usr/include/c++/4.2/bits/stl_iterator.h:
/usr/include/c++/4.2/debug/debug.h:
/usr/include/c++/4.2/bits/allocator.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++allocator.h:
/usr/include/c++/4.2/ext/new_allocator.h:
/usr/include/c++/4.2/new:
/usr/include/c++/4.2/exception:
/usr/include/c++/4.2/bits/stl_construct.h:
/usr/include/c++/4.2/bits/stl_uninitialized.h:
/usr/include/c++/4.2/bits/stl_list.h:
/usr/include/c++/4.2/bits/list.tcc:
/usr/include/c++/4.2/string:
/usr/include/c++/4.2/bits/char_traits.h:
/usr/include/c++/4.2/memory:
/usr/include/c++/4.2/bits/stl_raw_storage_iter.h:
/usr/include/c++/4.2/limits:
/usr/include/c++/4.2/bits/ostream_insert.h:
/usr/include/c++/4.2/bits/stl_function.h:
/usr/include/c++/4.2/bits/basic_string.h:
/usr/include/c++/4.2/ext/atomicity.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/atomic_word.h:
/usr/include/c++/4.2/algorithm:
/usr/include/c++/4.2/bits/stl_algo.h:
/usr/include/c++/4.2/bits/stl_heap.h:
/usr/include/c++/4.2/bits/stl_tempbuf.h:
/usr/include/c++/4.2/bits/basic_string.tcc:
DoxygenTranslator/src/DoxygenEntity.h:
/usr/include/c++/4.2/iostream:
/usr/include/c++/4.2/ostream:
/usr/include/c++/4.2/ios:
/usr/include/c++/4.2/bits/localefwd.h:
/usr/include/c++/4.2/bits/ios_base.h:
/usr/include/c++/4.2/bits/locale_classes.h:
/usr/include/c++/4.2/streambuf:
/usr/include/c++/4.2/bits/streambuf.tcc:
/usr/include/c++/4.2/bits/basic_ios.h:
/usr/include/c++/4.2/bits/streambuf_iterator.h:
/usr/include/c++/4.2/bits/locale_facets.h:
/usr/include/c++/4.2/cwctype:
/usr/include/wctype.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_base.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_inline.h:
/usr/include/c++/4.2/bits/codecvt.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/time_members.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/messages_members.h:
/usr/include/c++/4.2/bits/basic_ios.tcc:
/usr/include/c++/4.2/bits/ostream.tcc:
/usr/include/c++/4.2/locale:
/usr/include/c++/4.2/bits/locale_facets.tcc:
/usr/include/c++/4.2/typeinfo:
/usr/include/c++/4.2/istream:
/usr/include/c++/4.2/bits/istream.tcc:

View file

@ -0,0 +1,379 @@
DoxygenTranslator/src/Token.o DoxygenTranslator/src/Token.o: \
DoxygenTranslator/src/Token.cpp DoxygenTranslator/src/Token.h \
/usr/include/c++/4.2/string \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++config.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/os_defines.h \
/usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
/usr/include/gnu/stubs-32.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/cpu_defines.h \
/usr/include/c++/4.2/bits/stringfwd.h \
/usr/include/c++/4.2/bits/char_traits.h /usr/include/c++/4.2/cstring \
/usr/include/c++/4.2/cstddef \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stddef.h \
/usr/include/string.h /usr/include/xlocale.h \
/usr/include/c++/4.2/bits/stl_algobase.h /usr/include/c++/4.2/climits \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/limits.h \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/syslimits.h \
/usr/include/limits.h /usr/include/bits/posix1_lim.h \
/usr/include/bits/local_lim.h /usr/include/linux/limits.h \
/usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
/usr/include/bits/stdio_lim.h /usr/include/c++/4.2/cstdlib \
/usr/include/stdlib.h /usr/include/bits/waitflags.h \
/usr/include/bits/waitstatus.h /usr/include/endian.h \
/usr/include/bits/endian.h /usr/include/sys/types.h \
/usr/include/bits/types.h /usr/include/bits/typesizes.h \
/usr/include/time.h /usr/include/sys/select.h \
/usr/include/bits/select.h /usr/include/bits/sigset.h \
/usr/include/bits/time.h /usr/include/sys/sysmacros.h \
/usr/include/bits/pthreadtypes.h /usr/include/alloca.h \
/usr/include/c++/4.2/iosfwd \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++locale.h \
/usr/include/c++/4.2/cstdio /usr/include/stdio.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stdarg.h \
/usr/include/bits/sys_errlist.h /usr/include/c++/4.2/clocale \
/usr/include/locale.h /usr/include/bits/locale.h \
/usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \
/usr/include/libintl.h /usr/include/c++/4.2/cstdarg \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++io.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \
/usr/include/signal.h /usr/include/bits/setjmp.h /usr/include/unistd.h \
/usr/include/bits/posix_opt.h /usr/include/bits/environments.h \
/usr/include/bits/confname.h /usr/include/getopt.h \
/usr/include/c++/4.2/cctype /usr/include/ctype.h \
/usr/include/c++/4.2/bits/postypes.h /usr/include/c++/4.2/cwchar \
/usr/include/c++/4.2/ctime /usr/include/bits/wchar.h \
/usr/include/stdint.h /usr/include/c++/4.2/bits/functexcept.h \
/usr/include/c++/4.2/exception_defines.h \
/usr/include/c++/4.2/bits/stl_pair.h \
/usr/include/c++/4.2/bits/cpp_type_traits.h \
/usr/include/c++/4.2/ext/type_traits.h /usr/include/c++/4.2/utility \
/usr/include/c++/4.2/bits/stl_relops.h \
/usr/include/c++/4.2/bits/stl_iterator_base_types.h \
/usr/include/c++/4.2/bits/stl_iterator_base_funcs.h \
/usr/include/c++/4.2/bits/concept_check.h \
/usr/include/c++/4.2/bits/stl_iterator.h \
/usr/include/c++/4.2/debug/debug.h /usr/include/c++/4.2/memory \
/usr/include/c++/4.2/bits/allocator.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++allocator.h \
/usr/include/c++/4.2/ext/new_allocator.h /usr/include/c++/4.2/new \
/usr/include/c++/4.2/exception \
/usr/include/c++/4.2/bits/stl_construct.h \
/usr/include/c++/4.2/bits/stl_uninitialized.h \
/usr/include/c++/4.2/bits/stl_raw_storage_iter.h \
/usr/include/c++/4.2/limits /usr/include/c++/4.2/bits/ostream_insert.h \
/usr/include/c++/4.2/bits/stl_function.h \
/usr/include/c++/4.2/bits/basic_string.h \
/usr/include/c++/4.2/ext/atomicity.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/atomic_word.h \
/usr/include/c++/4.2/algorithm /usr/include/c++/4.2/bits/stl_algo.h \
/usr/include/c++/4.2/bits/stl_heap.h \
/usr/include/c++/4.2/bits/stl_tempbuf.h \
/usr/include/c++/4.2/bits/basic_string.tcc \
/usr/include/c++/4.2/iostream /usr/include/c++/4.2/ostream \
/usr/include/c++/4.2/ios /usr/include/c++/4.2/bits/localefwd.h \
/usr/include/c++/4.2/bits/ios_base.h \
/usr/include/c++/4.2/bits/locale_classes.h \
/usr/include/c++/4.2/streambuf /usr/include/c++/4.2/bits/streambuf.tcc \
/usr/include/c++/4.2/bits/basic_ios.h \
/usr/include/c++/4.2/bits/streambuf_iterator.h \
/usr/include/c++/4.2/bits/locale_facets.h /usr/include/c++/4.2/cwctype \
/usr/include/wctype.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_base.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_inline.h \
/usr/include/c++/4.2/bits/codecvt.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/time_members.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/messages_members.h \
/usr/include/c++/4.2/bits/basic_ios.tcc \
/usr/include/c++/4.2/bits/ostream.tcc /usr/include/c++/4.2/locale \
/usr/include/c++/4.2/bits/locale_facets.tcc \
/usr/include/c++/4.2/typeinfo /usr/include/c++/4.2/istream \
/usr/include/c++/4.2/bits/istream.tcc /usr/include/c++/4.2/list \
/usr/include/c++/4.2/bits/stl_list.h /usr/include/c++/4.2/bits/list.tcc
DoxygenTranslator/src/Token.h:
/usr/include/c++/4.2/string:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++config.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/os_defines.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-32.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/cpu_defines.h:
/usr/include/c++/4.2/bits/stringfwd.h:
/usr/include/c++/4.2/bits/char_traits.h:
/usr/include/c++/4.2/cstring:
/usr/include/c++/4.2/cstddef:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stddef.h:
/usr/include/string.h:
/usr/include/xlocale.h:
/usr/include/c++/4.2/bits/stl_algobase.h:
/usr/include/c++/4.2/climits:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/limits.h:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/syslimits.h:
/usr/include/limits.h:
/usr/include/bits/posix1_lim.h:
/usr/include/bits/local_lim.h:
/usr/include/linux/limits.h:
/usr/include/bits/posix2_lim.h:
/usr/include/bits/xopen_lim.h:
/usr/include/bits/stdio_lim.h:
/usr/include/c++/4.2/cstdlib:
/usr/include/stdlib.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/c++/4.2/iosfwd:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++locale.h:
/usr/include/c++/4.2/cstdio:
/usr/include/stdio.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stdarg.h:
/usr/include/bits/sys_errlist.h:
/usr/include/c++/4.2/clocale:
/usr/include/locale.h:
/usr/include/bits/locale.h:
/usr/include/langinfo.h:
/usr/include/nl_types.h:
/usr/include/iconv.h:
/usr/include/libintl.h:
/usr/include/c++/4.2/cstdarg:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++io.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr-default.h:
/usr/include/pthread.h:
/usr/include/sched.h:
/usr/include/bits/sched.h:
/usr/include/signal.h:
/usr/include/bits/setjmp.h:
/usr/include/unistd.h:
/usr/include/bits/posix_opt.h:
/usr/include/bits/environments.h:
/usr/include/bits/confname.h:
/usr/include/getopt.h:
/usr/include/c++/4.2/cctype:
/usr/include/ctype.h:
/usr/include/c++/4.2/bits/postypes.h:
/usr/include/c++/4.2/cwchar:
/usr/include/c++/4.2/ctime:
/usr/include/bits/wchar.h:
/usr/include/stdint.h:
/usr/include/c++/4.2/bits/functexcept.h:
/usr/include/c++/4.2/exception_defines.h:
/usr/include/c++/4.2/bits/stl_pair.h:
/usr/include/c++/4.2/bits/cpp_type_traits.h:
/usr/include/c++/4.2/ext/type_traits.h:
/usr/include/c++/4.2/utility:
/usr/include/c++/4.2/bits/stl_relops.h:
/usr/include/c++/4.2/bits/stl_iterator_base_types.h:
/usr/include/c++/4.2/bits/stl_iterator_base_funcs.h:
/usr/include/c++/4.2/bits/concept_check.h:
/usr/include/c++/4.2/bits/stl_iterator.h:
/usr/include/c++/4.2/debug/debug.h:
/usr/include/c++/4.2/memory:
/usr/include/c++/4.2/bits/allocator.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++allocator.h:
/usr/include/c++/4.2/ext/new_allocator.h:
/usr/include/c++/4.2/new:
/usr/include/c++/4.2/exception:
/usr/include/c++/4.2/bits/stl_construct.h:
/usr/include/c++/4.2/bits/stl_uninitialized.h:
/usr/include/c++/4.2/bits/stl_raw_storage_iter.h:
/usr/include/c++/4.2/limits:
/usr/include/c++/4.2/bits/ostream_insert.h:
/usr/include/c++/4.2/bits/stl_function.h:
/usr/include/c++/4.2/bits/basic_string.h:
/usr/include/c++/4.2/ext/atomicity.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/atomic_word.h:
/usr/include/c++/4.2/algorithm:
/usr/include/c++/4.2/bits/stl_algo.h:
/usr/include/c++/4.2/bits/stl_heap.h:
/usr/include/c++/4.2/bits/stl_tempbuf.h:
/usr/include/c++/4.2/bits/basic_string.tcc:
/usr/include/c++/4.2/iostream:
/usr/include/c++/4.2/ostream:
/usr/include/c++/4.2/ios:
/usr/include/c++/4.2/bits/localefwd.h:
/usr/include/c++/4.2/bits/ios_base.h:
/usr/include/c++/4.2/bits/locale_classes.h:
/usr/include/c++/4.2/streambuf:
/usr/include/c++/4.2/bits/streambuf.tcc:
/usr/include/c++/4.2/bits/basic_ios.h:
/usr/include/c++/4.2/bits/streambuf_iterator.h:
/usr/include/c++/4.2/bits/locale_facets.h:
/usr/include/c++/4.2/cwctype:
/usr/include/wctype.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_base.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_inline.h:
/usr/include/c++/4.2/bits/codecvt.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/time_members.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/messages_members.h:
/usr/include/c++/4.2/bits/basic_ios.tcc:
/usr/include/c++/4.2/bits/ostream.tcc:
/usr/include/c++/4.2/locale:
/usr/include/c++/4.2/bits/locale_facets.tcc:
/usr/include/c++/4.2/typeinfo:
/usr/include/c++/4.2/istream:
/usr/include/c++/4.2/bits/istream.tcc:
/usr/include/c++/4.2/list:
/usr/include/c++/4.2/bits/stl_list.h:
/usr/include/c++/4.2/bits/list.tcc:

View file

@ -0,0 +1,382 @@
DoxygenTranslator/src/TokenList.o DoxygenTranslator/src/TokenList.o: \
DoxygenTranslator/src/TokenList.cpp DoxygenTranslator/src/TokenList.h \
/usr/include/c++/4.2/cstdlib \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++config.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/os_defines.h \
/usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
/usr/include/gnu/stubs-32.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/cpu_defines.h \
/usr/include/c++/4.2/cstddef \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stddef.h \
/usr/include/stdlib.h /usr/include/bits/waitflags.h \
/usr/include/bits/waitstatus.h /usr/include/endian.h \
/usr/include/bits/endian.h /usr/include/xlocale.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/time.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/c++/4.2/iostream \
/usr/include/c++/4.2/ostream /usr/include/c++/4.2/ios \
/usr/include/c++/4.2/iosfwd \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++locale.h \
/usr/include/c++/4.2/cstring /usr/include/string.h \
/usr/include/c++/4.2/cstdio /usr/include/stdio.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/c++/4.2/clocale /usr/include/locale.h \
/usr/include/bits/locale.h /usr/include/langinfo.h \
/usr/include/nl_types.h /usr/include/iconv.h /usr/include/libintl.h \
/usr/include/c++/4.2/cstdarg \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++io.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \
/usr/include/signal.h /usr/include/bits/setjmp.h /usr/include/unistd.h \
/usr/include/bits/posix_opt.h /usr/include/bits/environments.h \
/usr/include/bits/confname.h /usr/include/getopt.h \
/usr/include/c++/4.2/cctype /usr/include/ctype.h \
/usr/include/c++/4.2/bits/stringfwd.h \
/usr/include/c++/4.2/bits/postypes.h /usr/include/c++/4.2/cwchar \
/usr/include/c++/4.2/ctime /usr/include/bits/wchar.h \
/usr/include/stdint.h /usr/include/c++/4.2/bits/functexcept.h \
/usr/include/c++/4.2/exception_defines.h /usr/include/c++/4.2/exception \
/usr/include/c++/4.2/bits/char_traits.h \
/usr/include/c++/4.2/bits/stl_algobase.h /usr/include/c++/4.2/climits \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/limits.h \
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/syslimits.h \
/usr/include/limits.h /usr/include/bits/posix1_lim.h \
/usr/include/bits/local_lim.h /usr/include/linux/limits.h \
/usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
/usr/include/c++/4.2/bits/stl_pair.h \
/usr/include/c++/4.2/bits/cpp_type_traits.h \
/usr/include/c++/4.2/ext/type_traits.h /usr/include/c++/4.2/utility \
/usr/include/c++/4.2/bits/stl_relops.h \
/usr/include/c++/4.2/bits/stl_iterator_base_types.h \
/usr/include/c++/4.2/bits/stl_iterator_base_funcs.h \
/usr/include/c++/4.2/bits/concept_check.h \
/usr/include/c++/4.2/bits/stl_iterator.h \
/usr/include/c++/4.2/debug/debug.h \
/usr/include/c++/4.2/bits/localefwd.h \
/usr/include/c++/4.2/bits/ios_base.h \
/usr/include/c++/4.2/ext/atomicity.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/atomic_word.h \
/usr/include/c++/4.2/bits/locale_classes.h /usr/include/c++/4.2/string \
/usr/include/c++/4.2/memory /usr/include/c++/4.2/bits/allocator.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/c++allocator.h \
/usr/include/c++/4.2/ext/new_allocator.h /usr/include/c++/4.2/new \
/usr/include/c++/4.2/bits/stl_construct.h \
/usr/include/c++/4.2/bits/stl_uninitialized.h \
/usr/include/c++/4.2/bits/stl_raw_storage_iter.h \
/usr/include/c++/4.2/limits /usr/include/c++/4.2/bits/ostream_insert.h \
/usr/include/c++/4.2/bits/stl_function.h \
/usr/include/c++/4.2/bits/basic_string.h /usr/include/c++/4.2/algorithm \
/usr/include/c++/4.2/bits/stl_algo.h \
/usr/include/c++/4.2/bits/stl_heap.h \
/usr/include/c++/4.2/bits/stl_tempbuf.h \
/usr/include/c++/4.2/bits/basic_string.tcc \
/usr/include/c++/4.2/streambuf /usr/include/c++/4.2/bits/streambuf.tcc \
/usr/include/c++/4.2/bits/basic_ios.h \
/usr/include/c++/4.2/bits/streambuf_iterator.h \
/usr/include/c++/4.2/bits/locale_facets.h /usr/include/c++/4.2/cwctype \
/usr/include/wctype.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_base.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_inline.h \
/usr/include/c++/4.2/bits/codecvt.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/time_members.h \
/usr/include/c++/4.2/i486-linux-gnu/bits/messages_members.h \
/usr/include/c++/4.2/bits/basic_ios.tcc \
/usr/include/c++/4.2/bits/ostream.tcc /usr/include/c++/4.2/locale \
/usr/include/c++/4.2/bits/locale_facets.tcc \
/usr/include/c++/4.2/typeinfo /usr/include/c++/4.2/istream \
/usr/include/c++/4.2/bits/istream.tcc /usr/include/c++/4.2/list \
/usr/include/c++/4.2/bits/stl_list.h /usr/include/c++/4.2/bits/list.tcc \
DoxygenTranslator/src/Token.h
DoxygenTranslator/src/TokenList.h:
/usr/include/c++/4.2/cstdlib:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++config.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/os_defines.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-32.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/cpu_defines.h:
/usr/include/c++/4.2/cstddef:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stddef.h:
/usr/include/stdlib.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/c++/4.2/iostream:
/usr/include/c++/4.2/ostream:
/usr/include/c++/4.2/ios:
/usr/include/c++/4.2/iosfwd:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++locale.h:
/usr/include/c++/4.2/cstring:
/usr/include/string.h:
/usr/include/c++/4.2/cstdio:
/usr/include/stdio.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/c++/4.2/clocale:
/usr/include/locale.h:
/usr/include/bits/locale.h:
/usr/include/langinfo.h:
/usr/include/nl_types.h:
/usr/include/iconv.h:
/usr/include/libintl.h:
/usr/include/c++/4.2/cstdarg:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++io.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/gthr-default.h:
/usr/include/pthread.h:
/usr/include/sched.h:
/usr/include/bits/sched.h:
/usr/include/signal.h:
/usr/include/bits/setjmp.h:
/usr/include/unistd.h:
/usr/include/bits/posix_opt.h:
/usr/include/bits/environments.h:
/usr/include/bits/confname.h:
/usr/include/getopt.h:
/usr/include/c++/4.2/cctype:
/usr/include/ctype.h:
/usr/include/c++/4.2/bits/stringfwd.h:
/usr/include/c++/4.2/bits/postypes.h:
/usr/include/c++/4.2/cwchar:
/usr/include/c++/4.2/ctime:
/usr/include/bits/wchar.h:
/usr/include/stdint.h:
/usr/include/c++/4.2/bits/functexcept.h:
/usr/include/c++/4.2/exception_defines.h:
/usr/include/c++/4.2/exception:
/usr/include/c++/4.2/bits/char_traits.h:
/usr/include/c++/4.2/bits/stl_algobase.h:
/usr/include/c++/4.2/climits:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/limits.h:
/usr/lib/gcc/i486-linux-gnu/4.2.3/include/syslimits.h:
/usr/include/limits.h:
/usr/include/bits/posix1_lim.h:
/usr/include/bits/local_lim.h:
/usr/include/linux/limits.h:
/usr/include/bits/posix2_lim.h:
/usr/include/bits/xopen_lim.h:
/usr/include/c++/4.2/bits/stl_pair.h:
/usr/include/c++/4.2/bits/cpp_type_traits.h:
/usr/include/c++/4.2/ext/type_traits.h:
/usr/include/c++/4.2/utility:
/usr/include/c++/4.2/bits/stl_relops.h:
/usr/include/c++/4.2/bits/stl_iterator_base_types.h:
/usr/include/c++/4.2/bits/stl_iterator_base_funcs.h:
/usr/include/c++/4.2/bits/concept_check.h:
/usr/include/c++/4.2/bits/stl_iterator.h:
/usr/include/c++/4.2/debug/debug.h:
/usr/include/c++/4.2/bits/localefwd.h:
/usr/include/c++/4.2/bits/ios_base.h:
/usr/include/c++/4.2/ext/atomicity.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/atomic_word.h:
/usr/include/c++/4.2/bits/locale_classes.h:
/usr/include/c++/4.2/string:
/usr/include/c++/4.2/memory:
/usr/include/c++/4.2/bits/allocator.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/c++allocator.h:
/usr/include/c++/4.2/ext/new_allocator.h:
/usr/include/c++/4.2/new:
/usr/include/c++/4.2/bits/stl_construct.h:
/usr/include/c++/4.2/bits/stl_uninitialized.h:
/usr/include/c++/4.2/bits/stl_raw_storage_iter.h:
/usr/include/c++/4.2/limits:
/usr/include/c++/4.2/bits/ostream_insert.h:
/usr/include/c++/4.2/bits/stl_function.h:
/usr/include/c++/4.2/bits/basic_string.h:
/usr/include/c++/4.2/algorithm:
/usr/include/c++/4.2/bits/stl_algo.h:
/usr/include/c++/4.2/bits/stl_heap.h:
/usr/include/c++/4.2/bits/stl_tempbuf.h:
/usr/include/c++/4.2/bits/basic_string.tcc:
/usr/include/c++/4.2/streambuf:
/usr/include/c++/4.2/bits/streambuf.tcc:
/usr/include/c++/4.2/bits/basic_ios.h:
/usr/include/c++/4.2/bits/streambuf_iterator.h:
/usr/include/c++/4.2/bits/locale_facets.h:
/usr/include/c++/4.2/cwctype:
/usr/include/wctype.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_base.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/ctype_inline.h:
/usr/include/c++/4.2/bits/codecvt.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/time_members.h:
/usr/include/c++/4.2/i486-linux-gnu/bits/messages_members.h:
/usr/include/c++/4.2/bits/basic_ios.tcc:
/usr/include/c++/4.2/bits/ostream.tcc:
/usr/include/c++/4.2/locale:
/usr/include/c++/4.2/bits/locale_facets.tcc:
/usr/include/c++/4.2/typeinfo:
/usr/include/c++/4.2/istream:
/usr/include/c++/4.2/bits/istream.tcc:
/usr/include/c++/4.2/list:
/usr/include/c++/4.2/bits/stl_list.h:
/usr/include/c++/4.2/bits/list.tcc:
DoxygenTranslator/src/Token.h:

View file

View file

@ -0,0 +1,89 @@
#include "DoxygenEntity.h"
#include <string>
/* Little data class for Doxygen Commands */
/* Basic node for commands that have
* nothing after them
* example: \n
*/
string commandArray2[] = {"a", "addindex", "addtogroup", "anchor", "arg", "attention",
"author", "b", "brief", "bug", "c", "callgraph", "callergraph", "category",
"class", "code", "cond", "copybrief", "copydetails", "copydoc", "date", "def",
"defgroup", "deprecated", "details", "dir", "dontinclude", "dot", "dotfile", "e",
"else", "elseif", "em", "endcode", "endcond", "enddot", "endhtmlonly", "endif",
"endlatexonly", "endlink", "endmanonly", "endmsc", "endverbatim", "endxmlonly",
"enum", "example", "exception", "f$", "f[", "f]", "f{", "f}", "file", "fn", "headerfile",
"hideinitializer", "htmlinclude", "htmlonly", "if", "ifnot", "image", "include",
"includelineno", "ingroup", "internal", "invariant", "interface", "latexonly", "li",
"line", "link", "mainpage", "manonly", "msc", "n", "name", "namespace", "nosubgrouping",
"note", "overload", "p", "package", "page", "par", "paragraph", "param", "post", "pre",
"private", "privatesection", "property", "protected", "protectedsection", "protocol",
"public", "publicsection", "ref", "relates", "relatesalso", "remarks", "return", "retval",
"sa", "section", "see", "showinitializer", "since", "skip", "skipline", "struct", "subpage",
"subsection", "subsubsection", "test", "throw", "todo", "tparam", "typedef", "union", "until",
"var", "verbatim", "verbinclude", "version", "warning", "weakgroup", "xmlonly", "xrefitem",
"$", "@", string(1, 92), "&", "~", "<", ">", "#", "%"};
string findCommand(int commandNum){
int arraySize = sizeof(commandArray2)/sizeof(*commandArray2);
if (commandNum - 101 >= 0 && commandNum - 101 < arraySize){
return commandArray2[commandNum - 101];
}
return "" ;
}
DoxygenEntity::DoxygenEntity(string typeEnt){
typeOfEntity = typeEnt;
data = "";
isLeaf = 1;
}
/* Basic node for commands that have
* only 1 thing after them
* example: \b word
* OR holding a string
*/
DoxygenEntity::DoxygenEntity(string typeEnt, string param1){
typeOfEntity = typeEnt;
data = param1;
isLeaf = 1;
}
/* Nonterminal node
* contains
*/
DoxygenEntity::DoxygenEntity(string typeEnt, list <DoxygenEntity> &entList ){
typeOfEntity = typeEnt;
data = "";
isLeaf = 0;
entityList = entList;
}
void DoxygenEntity::printEntity(int level){
int thisLevel = level;
if (isLeaf) {
for (int i = 0; i < thisLevel; i++) {cout << "\t";}
cout << "Node Command: " << typeOfEntity << " ";
if (data.compare("") != 0) cout << "Node Data: " << data;
cout << endl;
}
else{
for (int i = 0; i < thisLevel; i++) {cout << "\t";}
cout << "Node Command : " << typeOfEntity << endl;
list<DoxygenEntity>::iterator p = entityList.begin();
thisLevel++;
while (p != entityList.end()){
(*p).printEntity(thisLevel);
p++;
}
}
}
DoxygenEntity::~DoxygenEntity()
{
}

View file

@ -0,0 +1,26 @@
#ifndef DOXYGENENTITY_H_
#define DOXYGENENTITY_H_
#include <cstdlib>
#include <iostream>
#include <string>
#include <list>
using namespace std;
class DoxygenEntity{
public:
DoxygenEntity(string typeEnt);
DoxygenEntity(string typeEnt, string param1);
DoxygenEntity(string typeEnt, list <DoxygenEntity> &entList );
~DoxygenEntity();
void printEntity(int level);
string typeOfEntity;
list <DoxygenEntity> entityList;
string data;
int isLeaf;
};
#endif /*TOKENLIST_H_*/

View file

@ -0,0 +1,797 @@
#include "DoxygenParser.h"
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>
#include <list>
#include "DoxygenEntity.h"
#include "TokenList.h"
#include "JavaDocConverter.h"
#define SIMPLECOMMAND 1
#define IGNOREDSIMPLECOMMAND 2
#define COMMANDWORD 3
#define IGNOREDCOMMANDWORD 4
#define COMMANDLINE 5
#define IGNOREDCOMMANDLINE 6
#define COMMANDPARAGRAPH 7
#define IGNORECOMMANDPARAGRAPH 8
#define COMMANDENDCOMMAND 9
#define COMMANDWORDPARAGRAPH 10
#define COMMANDWORDLINE 11
#define COMMANDWORDOWORDWORD 12
#define COMMANDOWORD 13
#define COMMANDERRORTHROW 14
#define COMMANDUNIQUE 15
#define END_LINE 101
#define PARAGRAPH_END 102
#define PLAINSTRING 103
#define COMMAND 104
using namespace std;
//////////////////////////////////////////
/*Set these to pick what internal functions
to test. */
//int testCommandParsingFunctions = 1;// not implemented
DoxygenParser::DoxygenParser()
{
}
DoxygenParser::~DoxygenParser()
{
}
int noisy = 0; // set this to 1 for extra chatter from the parsing stage.
int addCommand(string currCommand, TokenList &tokList, list <DoxygenEntity> &aNewList);
list <DoxygenEntity> parse(list<Token>::iterator endParsingIndex, TokenList &tokList);
//////////////////////////////////////////
string commandArray[] = {"a", "addindex", "addtogroup", "anchor", "arg", "attention",
"author", "b", "brief", "bug", "c", "callgraph", "callergraph", "category",
"class", "code", "cond", "copybrief", "copydetails", "copydoc", "date", "def",
"defgroup", "deprecated", "details", "dir", "dontinclude", "dot", "dotfile", "e",
"else", "elseif", "em", "endcode", "endcond", "enddot", "endhtmlonly", "endif",
"endlatexonly", "endlink", "endmanonly", "endmsc", "endverbatim", "endxmlonly",
"enum", "example", "exception", "f$", "f[", "f]", "f{", "f}", "file", "fn", "headerfile",
"hideinitializer", "htmlinclude", "htmlonly", "if", "ifnot", "image", "include",
"includelineno", "ingroup", "internal", "invariant", "interface", "latexonly", "li",
"line", "link", "mainpage", "manonly", "msc", "n", "name", "namespace", "nosubgrouping",
"note", "overload", "p", "package", "page", "par", "paragraph", "param", "post", "pre",
"private", "privatesection", "property", "protected", "protectedsection", "protocol",
"public", "publicsection", "ref", "relates", "relatesalso", "remarks", "return", "retval",
"sa", "section", "see", "showinitializer", "since", "skip", "skipline", "struct", "subpage",
"subsection", "subsubsection", "test", "throw", "todo", "tparam", "typedef", "union", "until",
"var", "verbatim", "verbinclude", "version", "warning", "weakgroup", "xmlonly", "xrefitem",
"$", "@", "\\","&", "~", "<", ">", "#", "%"};
string sectionIndicators[] = { "attention", "author", "brief", "bug", "cond", "date", "deprecated", "details",
"else", "elseif", "endcond", "endif", "exception", "if", "ifnot", "invariant", "note", "par", "param",
"tparam", "post" , "pre", "remarks", "return", "retval", "sa", "see", "since", "test", "throw", "todo",
"version", "warning", "xrefitem" };
/* All of the doxygen commands divided up by how they are parsed */
string simpleCommands[] = {"n", "$", "@", "\\", "&", "~", "<", ">", "#", "%"};
string ignoredSimpleCommands[] = {"nothing at the moment"};
string commandWords[] = {"a", "b", "c", "e", "em", "p", "def", "enum", "example", "package",
"relates", "namespace", "relatesalso","anchor", "dontinclude", "include", "includelineno"};
string ignoredCommandWords[] = {"copydoc", "copybrief", "copydetails", "verbinclude", "htmlinclude"};
string commandLines[] = {"addindex", "fn", "name", "line", "var", "skipline", "typedef", "skip", "until", "property"};
string ignoreCommandLines[] = {"nothing at the moment"};
string commandParagraph[] = {"return", "remarks", "since", "test", "sa", "see", "pre", "post", "details", "invariant",
"deprecated", "date", "note", "warning", "version", "todo", "bug", "attention", "brief", "author"};
string ignoreCommandParagraphs[] = {"nothing at the moment"};
string commandEndCommands[] = {"code", "dot", "msc", "f$", "f[", "f{environment}{", "htmlonly", "latexonly", "manonly",
"verbatim", "xmlonly", "cond", "if", "ifnot", "link"};
string commandWordParagraphs[] = {"param", "tparam", "throw", "retval", "exception"};
string commandWordLines[] = {"page", "subsection", "subsubsection", "section", "paragraph", "defgroup"};
string commandWordOWordOWords [] = {"category", "class", "protocol", "interface", "struct", "union"};
string commandOWords[] = {"dir", "file", "cond"};
string commandErrorThrowings[] = {"annotatedclasslist", "classhierarchy", "define", "functionindex", "header",
"headerfilelist", "inherit", "l", "postheader", "private", "privatesection", "protected",
"protectedsection", "public", "publicsection", "endcode", "enddot", "endmsc", "endhtmlonly",
"endlatexonly", "endmanonly", "endlink", "endverbatim", "endxmlonly", "f]", "f}", "endcond",
"endif"};
string commandUniques[] = {"xrefitem", "arg", "ingroup", "par", "headerfile", "overload", "weakgroup", "ref",
"subpage", "dotfile", "image", "addtogroup", "li"};
/* Changes a string to all lower case*/
string StringToLower(string stringToConvert)
{
for(unsigned int i=0;i<stringToConvert.length();i++)
{
stringToConvert[i] = tolower(stringToConvert[i]);
}
return stringToConvert;//return the converted string
}
/* finds out if a command exists (is a possible command)
* from the string array commandArray
* returns -1 if no match is found */
int findCommand(string smallString){
smallString = StringToLower(smallString);
int a;
for (int i = 0; i < sizeof(commandArray)/sizeof(*commandArray); i++){
if( (a = smallString.compare(commandArray[i])) == 0){
return 101 + i;
}
}
return -1;
}
/* isSectionIndicator returns a boolean if the command is a section indicator
* This is a helper method for finding the end of a paragraph
* by Doxygen's terms
*/
int isSectionIndicator(string smallString){
smallString = StringToLower(smallString);
for (int i = 0; i < sizeof( sectionIndicators)/sizeof(* sectionIndicators); i++){
if( smallString.compare( sectionIndicators[i]) == 0){
return 1;
}
}
return 0;
}
/* prints the parse tree
*
*/
void printTree( list <DoxygenEntity> &rootList){
list<DoxygenEntity>::iterator p = rootList.begin();
while (p != rootList.end()){
(*p).printEntity(0);
p++;
}
}
/* Determines how a command should be handled (what group it belongs to
* for parsing rules
*/
int commandBelongs(string theCommand){
string smallString = StringToLower(theCommand );
//cout << " Looking for command " << theCommand << endl;
int i = 0;
for ( i = 0; i < sizeof(simpleCommands)/sizeof(*simpleCommands); i++){
if(smallString.compare(simpleCommands[i]) == 0){return SIMPLECOMMAND ;}
}
for ( i = 0; i < sizeof(ignoredSimpleCommands)/sizeof(*ignoredSimpleCommands); i++){
if(smallString.compare(ignoredSimpleCommands[i]) == 0){return IGNOREDSIMPLECOMMAND;}
}
for ( i = 0; i < sizeof(commandWords)/sizeof(*commandWords); i++){
if(smallString.compare( commandWords[i]) == 0){return COMMANDWORD;}
}
for ( i = 0; i < sizeof(ignoredCommandWords)/sizeof(*ignoredCommandWords); i++){
if(smallString.compare( ignoredCommandWords[i]) == 0){return IGNOREDCOMMANDWORD;}
}
for ( i = 0; i < sizeof(commandLines)/sizeof(*commandLines); i++){
if(smallString.compare( commandLines[i]) == 0){return COMMANDLINE;}
}
for ( i = 0; i < sizeof(ignoreCommandLines)/sizeof(*ignoreCommandLines); i++){
if(smallString.compare( ignoreCommandLines[i]) == 0){return IGNOREDCOMMANDLINE;}
}
for ( i = 0; i < sizeof(commandParagraph)/sizeof(*commandParagraph); i++){
if(smallString.compare( commandParagraph[i]) == 0){return COMMANDPARAGRAPH;}
}
/* IgnoreCommandParagraph */
for ( i = 0; i < sizeof(ignoreCommandParagraphs)/sizeof(*ignoreCommandParagraphs); i++){
if(smallString.compare( ignoreCommandParagraphs[i]) == 0){return IGNORECOMMANDPARAGRAPH;}
}
for ( i = 0; i < sizeof(commandEndCommands)/sizeof(*commandEndCommands); i++){
if(smallString.compare( commandEndCommands[i]) == 0){return COMMANDENDCOMMAND ;}
}
for ( i = 0; i < sizeof(commandWordParagraphs)/sizeof(*commandWordParagraphs); i++){
if(smallString.compare( commandWordParagraphs[i]) == 0){return COMMANDWORDPARAGRAPH;}
}
for ( i = 0; i < sizeof(commandWordLines)/sizeof(*commandWordLines); i++){
if(smallString.compare( commandWordLines[i]) == 0){return COMMANDWORDLINE ;}
}
for ( i = 0; i < sizeof(commandWordOWordOWords)/sizeof(*commandWordOWordOWords); i++){
if(smallString.compare( commandWordOWordOWords[i]) == 0){return COMMANDWORDOWORDWORD;}
}
for ( i = 0; i < sizeof(commandOWords)/sizeof(*commandOWords); i++){
if(smallString.compare( commandOWords[i]) == 0){return COMMANDOWORD;}
}
for ( i = 0; i < sizeof(commandErrorThrowings)/sizeof(*commandErrorThrowings); i++){
if(smallString.compare( commandErrorThrowings[i]) == 0){return COMMANDERRORTHROW;}
}
for ( i = 0; i < sizeof(commandUniques)/sizeof(*commandUniques); i++){
if(smallString.compare( commandUniques[i]) == 0){return COMMANDUNIQUE;}
}
return 0;
}
/* Returns the next word ON THE CURRENT LINE ONLY
* if a new line is encountered, returns a blank string.
* Updates the index it is given if success.
*/
string getNextWord(TokenList &tokList){
Token nextToken = tokList.peek();
if (nextToken.tokenType == PLAINSTRING ){
nextToken = tokList.next();
return nextToken.tokenString;
}
return "";
}
/* Returns the location of the end of the line as
* an iterator.
*/
list<Token>::iterator getOneLine(TokenList &tokList){
list<Token>::iterator endOfParagraph = tokList.iteratorCopy();
while(endOfParagraph != tokList.end()){
if ((* endOfParagraph).tokenType == END_LINE){
return endOfParagraph;
}
endOfParagraph++;
}
return tokList.end();
}
/* Returns a properly formatted string
* up til ANY command or end of paragraph is encountered.
*/
string getStringTilCommand(TokenList &tokList){
string description;
if (tokList.peek().tokenType == 0) return "";
while(tokList.peek().tokenType == PLAINSTRING || tokList.peek().tokenType == END_LINE ){
Token currentToken = tokList.next();
if(currentToken.tokenType == PLAINSTRING) {
description = description + currentToken.tokenString + " ";
}
else if (tokList.peek().tokenType == END_LINE) break;
}
return description;
}
/* Returns a properly formatted string
* up til the command specified is encountered
*/
//TODO check that this behaves properly for formulas
string getStringTilEndCommand(string theCommand, TokenList &tokList){
string description;
if (tokList.peek().tokenType == 0) return "";
while(tokList.peek().tokenString.compare(theCommand) != 0 ){
Token currentToken = tokList.next();
description = description + currentToken.tokenString + " ";
}
return description;
}
/* Returns the end of a Paragraph as an iterator-
* Paragraph is defined in Doxygen to be a paragraph of text
* seperate by either a structural command or a blank line
*/
list<Token>::iterator getEndOfParagraph(TokenList &tokList){
list<Token>::iterator endOfParagraph = tokList.iteratorCopy();
while(endOfParagraph != tokList.end()){
if ((* endOfParagraph).tokenType == COMMAND){
if(isSectionIndicator((* endOfParagraph).tokenString)) return endOfParagraph;
else endOfParagraph++;
}
else if((* endOfParagraph).tokenType == PLAINSTRING) {
endOfParagraph++;
}
else if ((* endOfParagraph).tokenType == END_LINE){
endOfParagraph++;
if ((* endOfParagraph).tokenType == END_LINE){
endOfParagraph++;
return endOfParagraph;
}
}
}
return tokList.end();
}
/* Returns the end of a section, defined as the first blank line OR first encounter of the same
* command. Example of this behaviour is \arg
*/
list<Token>::iterator getEndOfSection(string theCommand, TokenList &tokList){
list<Token>::iterator endOfParagraph = tokList.iteratorCopy();
while(endOfParagraph != tokList.end()){
if ((* endOfParagraph).tokenType == COMMAND){
if(theCommand.compare((*endOfParagraph).tokenString) == 0) return endOfParagraph;
else endOfParagraph++;
}
else if((* endOfParagraph).tokenType == PLAINSTRING) {
endOfParagraph++;
}
else if ((* endOfParagraph).tokenType == END_LINE){
endOfParagraph++;
if ((* endOfParagraph).tokenType == END_LINE){
endOfParagraph++;
return endOfParagraph;
}
}
}
}
/* This method is for returning the end of a specific form of doxygen command
* that begins with a \command and ends in \endcommand
* such as \code and \endcode. The proper usage is
* progressTilEndCommand("endcode", tokenList);
*/
list<Token>::iterator getEndCommand(string theCommand, TokenList &tokList){
list<Token>::iterator endOfCommand = tokList.iteratorCopy();
while (endOfCommand!= tokList.end()){
if ((*endOfCommand).tokenType == COMMAND){
if (theCommand.compare((* endOfCommand).tokenString) == 0){
return endOfCommand;
}
endOfCommand++;
}
}
//End command not found
return tokList.end();
}
/* A specialty method for commands such as \arg that end at the end of a paragraph OR when another \arg is encountered
*/
list<Token>::iterator getTilAnyCommand(string theCommand, TokenList &tokList){
list<Token>::iterator anIterator;
return anIterator;
}
/* Method for Adding a Simple Command
* Format: @command
* Plain commands, such as newline etc, they contain no other data
* \n \\ \@ \& \$ \# \< \> \%
*/
int addSimpleCommand(string theCommand, list <DoxygenEntity> &doxyList){
if (noisy) cout << "Parsing " << theCommand << endl;
doxyList.push_back(DoxygenEntity(theCommand));
return 1;
}
/* NOT INCLUDED Simple Commands
* Format: @command
* Plain commands, such as newline etc, they contain no other data
*/
int ignoreSimpleCommand(string theCommand, list <DoxygenEntity> &doxyList){
if (noisy) cout << "Not Adding " << theCommand << endl;
return 1;
}
/* CommandWord
* Format: @command <word>
* Commands with a single WORD after then such as @b
* "a", "b", "c", "e", "em", "p", "def", "enum", "example", "package",
* "relates", "namespace", "relatesalso","anchor", "dontinclude", "include", "includelineno"
*/
int addCommandWord(string theCommand, TokenList &tokList, list <DoxygenEntity> &doxyList){
if (noisy) cout << "Parsing " << theCommand << endl;
string name = getNextWord(tokList);
if (!name.empty()){
doxyList.push_back(DoxygenEntity(theCommand, name));
return 1;
}
else cout << "No word followed " << theCommand << " command. Not added" << endl;
return 0;
}
/* NOT INCLUDED CommandWord
* Format: @command <word>
* Commands with a single WORD after then such as @b
* "copydoc", "copybrief", "copydetails", "verbinclude", "htmlinclude"
*/
int ignoreCommandWord(string theCommand, TokenList &tokList, list <DoxygenEntity> &doxyList){
if (noisy) cout << "Not Adding " << theCommand << endl;
string name = getNextWord(tokList);
if (!name.empty()){
return 1;
}
else cout << "WARNING: No word followed " << theCommand << " command." << endl;
return 0;
}
/* CommandLine
* Format: @command (line)
* Commands with a single LINE after then such as @var
* "addindex", "fn", "name", "line", "var", "skipline", "typedef", "skip", "until", "property"
*/
int addCommandLine(string theCommand, TokenList &tokList, list <DoxygenEntity> &doxyList){
if (noisy) cout << "Parsing " << theCommand << endl;
list<Token>::iterator endOfLine = getOneLine(tokList);
list <DoxygenEntity> aNewList;
aNewList = parse(endOfLine, tokList);
doxyList.push_back( DoxygenEntity(theCommand, aNewList));
return 1;
}
/* NOT INCLUDED CommandLine
* Format: @command (line)
* Commands with a single LINE after then such as @var
*
*/
int ignoreCommandLine(string theCommand, TokenList &tokList, list <DoxygenEntity> &doxyList){
if (noisy) cout << "Not Adding " << theCommand << endl;
list<Token>::iterator endOfLine = getOneLine(tokList);
tokList.setIterator(endOfLine);
return 1;
}
/* CommandParagraph
* Format: @command {paragraph}
* Commands with a single paragraph after then such as @return
* "return", "remarks", "since", "test", "sa", "see", "pre", "post", "details", "invariant",
* "deprecated", "date", "note", "warning", "version", "todo", "bug", "attention", "brief", "arg", "author"
*/
int addCommandParagraph(string theCommand, TokenList &tokList, list <DoxygenEntity> &doxyList){
if (noisy) cout << "Parsing " << theCommand << endl;
list<Token>::iterator endOfParagraph = getEndOfParagraph(tokList);
//if(!restOfParagraph.empty()){
list <DoxygenEntity> aNewList;
aNewList = parse(endOfParagraph, tokList);
doxyList.push_back( DoxygenEntity(theCommand, aNewList));
return 1;
// }
//else cout << "No line followed " << theCommand << " command. Not added" << endl;
}
/* CommandParagraph
* Format: @command {paragraph}
* Commands with a single LINE after then such as @var
*
*/
int ignoreCommandParagraph(string theCommand, TokenList &tokList, list <DoxygenEntity> &doxyList){
if (noisy) cout << "Not Adding " << theCommand << endl;
list<Token>::iterator endOfParagraph = getEndOfParagraph(tokList);
tokList.setIterator(endOfParagraph);
//else cout << "WARNING: No line followed " << theCommand << " command." << endl;
return 1;
}
/* Command EndCommand
* Format: @command and ends at @endcommand
* Commands that take in a block of text such as @code
* "code", "dot", "msc", "f$", "f[", "f{environment}{", "htmlonly", "latexonly", "manonly",
* "verbatim", "xmlonly", "cond", "if", "ifnot", "link"
* Returns 1 if success, 0 if the endcommand is never encountered.
*/
int addCommandEndCommand(string theCommand, TokenList &tokList, list <DoxygenEntity> &doxyList){
if (noisy) cout << "Not Adding " << theCommand << endl;
string description = getStringTilEndCommand( "end" + theCommand, tokList);
doxyList.push_back(DoxygenEntity(theCommand, description));
return 1;
}
/* CommandWordParagraph
* Format: @command <word> {paragraph}
* Commands such as param
* "param", "tparam", "throw", "retval", "exception"
*/
int addCommandWordParagraph(string theCommand, TokenList &tokList, list <DoxygenEntity> &doxyList){
if (noisy) cout << "Parsing " << theCommand << endl;
string name = getNextWord(tokList);
if (name.empty()){
cout << "No word followed " << theCommand << " command. Not added" << endl;
return 0;
}
list<Token>::iterator endOfParagraph = getEndOfParagraph(tokList);
//if(!restOfParagraph.empty()){
list <DoxygenEntity> aNewList;
aNewList = parse(endOfParagraph, tokList);
aNewList.push_front(DoxygenEntity("plainstring", name));
doxyList.push_back(DoxygenEntity(theCommand, aNewList));
return 0;
}
/* CommandWordLine
* Format: @command <word> (line)
* Commands such as param
* "page", "subsection", "subsubsection", "section", "paragraph", "defgroup"
*/
int addCommandWordLine(string theCommand, TokenList &tokList, list <DoxygenEntity> &doxyList){
if (noisy) cout << "Parsing " << theCommand << endl;
string name = getNextWord(tokList);
if (name.empty()){
cout << "No word followed " << theCommand << " command. Not added" << endl;
return 0;
}
list<Token>::iterator endOfLine = getOneLine(tokList);
list <DoxygenEntity> aNewList;
aNewList = parse(endOfLine, tokList);
aNewList.push_front(DoxygenEntity("plainstring", name));
doxyList.push_back(DoxygenEntity(theCommand, aNewList));
return 1;
//else cout << "No line followed " << theCommand << " command. Not added" << endl;
}
/* Command Word Optional Word Optional Word
* Format: @command <word> [<header-file>] [<header-name>]
* Commands such as class
* "category", "class", "protocol", "interface", "struct", "union"
*/
int addCommandWordOWordOWord(string theCommand, TokenList &tokList, list <DoxygenEntity> &doxyList){
if (noisy) cout << "Parsing " << theCommand << endl;
string name = getNextWord(tokList);
if (name.empty()){
cout << "No word followed " << theCommand << " command. Not added" << endl;
return 0;
}
string headerfile = getNextWord(tokList);
string headername = getNextWord(tokList);
list <DoxygenEntity> aNewList;
aNewList.push_back(DoxygenEntity("plainstring", name));
if (!headerfile.empty()) aNewList.push_back(DoxygenEntity("plainstring", headerfile));
if (!headername.empty()) aNewList.push_back(DoxygenEntity("plainstring", headername));
doxyList.push_back(DoxygenEntity(theCommand, aNewList));
return 1;
}
/* Command Optional Word
* Format: @command [<word>]
* Commands such as dir
* "dir", "file", "cond"
*/
int addCommandOWord(string theCommand, TokenList &tokList, list <DoxygenEntity> &doxyList){
if (noisy) cout << "Parsing " << theCommand << endl;
string name = getNextWord(tokList);
doxyList.push_back(DoxygenEntity(theCommand, name));
return 1;
}
/* Commands that should not be encountered (such as PHP only)
*/
int addCommandErrorThrow(string theCommand, TokenList &tokList, list <DoxygenEntity> &doxyList){
cout << "Encountered :" << theCommand << endl;
cout << "This command should not have been encountered. Behaviour past this may be unpredictable " << endl;
}
int addCommandUnique(string theCommand, TokenList &tokList, list <DoxygenEntity> &doxyList){
list <DoxygenEntity> aNewList;
if (theCommand.compare("arg") == 0 || theCommand.compare("li") == 0){
list<Token>::iterator endOfSection = getEndOfSection(theCommand, tokList);
list <DoxygenEntity> aNewList;
aNewList = parse(endOfSection, tokList);
doxyList.push_back( DoxygenEntity(theCommand, aNewList));
}
// \xrefitem <key> "(heading)" "(list title)" {text}
else if (theCommand.compare("xrefitem") == 0){
//TODO Implement xrefitem
if (noisy) cout << "Not Adding " << theCommand << endl;
list<Token>::iterator endOfParagraph = getEndOfParagraph(tokList);
tokList.setIterator(endOfParagraph);
return 1;
}
// \ingroup (<groupname> [<groupname> <groupname>])
else if (theCommand.compare("ingroup") == 0){
string name = getNextWord(tokList);
aNewList.push_back(DoxygenEntity("plainstring", name));
name = getNextWord(tokList);
if(!name.empty()) aNewList.push_back(DoxygenEntity("plainstring", name));
name = getNextWord(tokList);
if(!name.empty()) aNewList.push_back(DoxygenEntity("plainstring", name));
doxyList.push_back(DoxygenEntity(theCommand, aNewList));
return 1;
}
// \par [(paragraph title)] { paragraph }
else if (theCommand.compare("par") == 0){
list<Token>::iterator endOfLine = getOneLine(tokList);
aNewList = parse(endOfLine, tokList);
list <DoxygenEntity> aNewList2;
aNewList2 = parse(endOfLine, tokList);
aNewList.splice(aNewList.end(), aNewList2);
doxyList.push_back(DoxygenEntity(theCommand, aNewList));
return 1;
}
// \headerfile <header-file> [<header-name>]
else if (theCommand.compare("headerfile") == 0){
list <DoxygenEntity> aNewList;
string name = getNextWord(tokList);
aNewList.push_back(DoxygenEntity("plainstring", name));
name = getNextWord(tokList);
if(!name.empty()) aNewList.push_back(DoxygenEntity("plainstring", name));
doxyList.push_back(DoxygenEntity(theCommand, aNewList));
return 1;
}
// \overload [(function declaration)]
else if (theCommand.compare("overload") == 0){
list<Token>::iterator endOfLine = getOneLine(tokList);
if (endOfLine != tokList.current()){
list <DoxygenEntity> aNewList;
aNewList = parse(endOfLine, tokList);
doxyList.push_back(DoxygenEntity(theCommand, aNewList));
}
else doxyList.push_back(DoxygenEntity(theCommand));
}
// \weakgroup <name> [(title)]
else if (theCommand.compare("weakgroup") == 0){
if (noisy) cout << "Parsing " << theCommand << endl;
string name = getNextWord(tokList);
if (name.empty()){
cout << "No word followed " << theCommand << " command. Not added" << endl;
return 0;
}
list <DoxygenEntity> aNewList;
list<Token>::iterator endOfLine = getOneLine(tokList);
if (endOfLine != tokList.current()) {
aNewList = parse(endOfLine, tokList);
}
aNewList.push_front(DoxygenEntity("plainstring", name));
doxyList.push_back(DoxygenEntity(theCommand, aNewList));
}
// \ref <name> ["(text)"]
else if (theCommand.compare("ref") == 0){
//TODO Implement ref
if (noisy) cout << "Not Adding " << theCommand << endl;
list<Token>::iterator endOfParagraph = getEndOfParagraph(tokList);
tokList.setIterator(endOfParagraph);
}
// \subpage <name> ["(text)"]
else if (theCommand.compare("subpage") == 0){
//TODO implement subpage
if (noisy) cout << "Not Adding " << theCommand << endl;
list<Token>::iterator endOfParagraph = getEndOfParagraph(tokList);
tokList.setIterator(endOfParagraph);
}
// \dotfile <file> ["caption"]
else if (theCommand.compare("dotfile") == 0){
//TODO implement dotfile
if (noisy) cout << "Not Adding " << theCommand << endl;
list<Token>::iterator endOfParagraph = getEndOfParagraph(tokList);
tokList.setIterator(endOfParagraph);
}
// \image <format> <file> ["caption"] [<sizeindication>=<size>]
else if (theCommand.compare("image") == 0){
//todo implement image
}
// \addtogroup <name> [(title)]
else if (theCommand.compare("addtogroup") == 0){
if (noisy) cout << "Parsing " << theCommand << endl;
string name = getNextWord(tokList);
if (name.empty()){
cout << "No word followed " << theCommand << " command. Not added" << endl;
return 0;
}
list <DoxygenEntity> aNewList;
list<Token>::iterator endOfLine = getOneLine(tokList);
if (endOfLine != tokList.current()) {
aNewList = parse(endOfLine, tokList);
}
aNewList.push_front(DoxygenEntity("plainstring", name));
doxyList.push_back(DoxygenEntity(theCommand, aNewList));
}
}
/* The actual "meat" of the doxygen parser. This is not yet fully implemented
* with my current design- however the skeletal outline is contained in
* the file Skeleton
*/
int addCommand(string commandString, TokenList &tokList,list <DoxygenEntity> &doxyList){
string theCommand = StringToLower(commandString);
if (theCommand.compare("plainstring") == 0){
string nextPhrase = getStringTilCommand( tokList);
if (noisy) cout << "Parsing plain string :" << nextPhrase << endl;
doxyList.push_back(DoxygenEntity("plainstring", nextPhrase ));
return 1;
}
int commandNumber = commandBelongs(theCommand);
if (commandNumber == SIMPLECOMMAND){
return addSimpleCommand(theCommand, doxyList);
}
if (commandNumber == IGNOREDSIMPLECOMMAND){
return ignoreSimpleCommand(theCommand, doxyList);
}
if (commandNumber == COMMANDWORD){
return addCommandWord(theCommand, tokList, doxyList);
}
if (commandNumber == IGNOREDCOMMANDWORD){
return ignoreCommandWord(theCommand, tokList, doxyList);
}
if (commandNumber == COMMANDLINE ){
return addCommandLine(theCommand, tokList, doxyList);
}
if (commandNumber == IGNOREDCOMMANDLINE ){
return ignoreCommandLine(theCommand, tokList, doxyList);
}
if (commandNumber == COMMANDPARAGRAPH){
return addCommandParagraph(theCommand, tokList, doxyList);
}
if (commandNumber == IGNORECOMMANDPARAGRAPH){
return ignoreCommandParagraph(theCommand, tokList, doxyList);
}
if (commandNumber == COMMANDENDCOMMAND){
return addCommandEndCommand(theCommand, tokList, doxyList);
}
if (commandNumber == COMMANDWORDPARAGRAPH){
return addCommandWordParagraph(theCommand, tokList, doxyList);
}
if (commandNumber == COMMANDWORDLINE){
return addCommandWordLine(theCommand, tokList, doxyList);
}
if (commandNumber == COMMANDWORDOWORDWORD){
return addCommandWordOWordOWord(theCommand, tokList, doxyList);
}
if (commandNumber == COMMANDOWORD){
return addCommandOWord(theCommand, tokList, doxyList);
}
if (commandNumber == COMMANDERRORTHROW){
return addCommandErrorThrow(theCommand, tokList, doxyList);
}
if (commandNumber == COMMANDUNIQUE){
return addCommandUnique(theCommand, tokList, doxyList);
}
return 0;
}
list<DoxygenEntity> parse(list<Token>::iterator endParsingIndex, TokenList &tokList){
list <DoxygenEntity> aNewList;
int currCommand;
while (tokList.current() != endParsingIndex){
Token currToken = tokList.peek();
if(noisy) cout << "Parsing for phrase starting in:" << currToken.toString() << endl;
if(currToken.tokenType == END_LINE ){
tokList.next();
}
else if(currToken.tokenType == COMMAND){
currCommand = findCommand(currToken.tokenString);
tokList.next();
if (currCommand < 0 ){ if(noisy) cout << "BAD COMMAND: " << currToken.tokenString << endl;}
//cout << "Command: " << currWord << " " << currCommand << endl;
else addCommand(currToken.tokenString, tokList, aNewList);
}
else if (currToken.tokenType == PLAINSTRING){
addCommand(string("plainstring"), tokList, aNewList);
}
}
return aNewList;
}
list<DoxygenEntity> DoxygenParser::createTree(string doxygenBlob){
TokenList tokList = TokenList(doxygenBlob);
if(noisy) {
cout << "---TOKEN LIST---" << endl;
tokList.printList();
}
list <DoxygenEntity> rootList;
rootList = parse( tokList.end(), tokList);
if(noisy) {
cout << "PARSED LIST" << endl;
printTree(rootList);
}
return rootList;
}

View file

@ -0,0 +1,19 @@
#ifndef DOXYGENPARSER_H_
#define DOXYGENPARSER_H_
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>
#include <list>
#include "DoxygenEntity.h"
#include "TokenList.h"
#include "JavaDocConverter.h"
class DoxygenParser
{
public:
DoxygenParser();
virtual ~DoxygenParser();
list <DoxygenEntity> createTree(string doxygen);
};
#endif /*DOXYGENPARSER_H_*/

View file

@ -0,0 +1,41 @@
#include "DoxygenParser.h"
#include "DoxygenTranslator.h"
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>
#include <list>
#include "DoxygenEntity.h"
#include "TokenList.h"
#include "JavaDocConverter.h"
DoxygenParser doxyParse;
JavaDocConverter jDC;
DoxygenTranslator::DoxygenTranslator(){
doxyParse = DoxygenParser();
JavaDocConverter jDC = JavaDocConverter();
}
DoxygenTranslator::~DoxygenTranslator(){
}
char *DoxygenTranslator::convert(char* doxygenBlob, char* option){
list <DoxygenEntity> rootList = doxyParse.createTree(string(doxygenBlob));
rootList = doxyParse.createTree(string(doxygenBlob));
string returnedString;
if(strcmp(option, "JAVADOC") == 0){
returnedString = jDC.convertToJavaDoc(rootList);
}
else cout << "Option not current supported.\n";
char *nonConstString;
nonConstString = (char *)malloc(returnedString.length() + 1);
strcpy(nonConstString, returnedString.c_str());
return nonConstString;
}

View file

@ -0,0 +1,10 @@
#ifndef DOXYGENTRANSLATOR_H_
#define DOXYGENTRANSLATOR_H_
class DoxygenTranslator
{
public:
DoxygenTranslator();
virtual ~DoxygenTranslator();
char* convert(char* doxygenBlob, char* option);
};
#endif /*DOXYGENTRANSLATOR_H_*/

View file

@ -0,0 +1,924 @@
/* The main class for translating blobs of Doxygen for SWIG
* by Cheryl Foil, mentor Olly Betts, for Google's Summer of Code Program
* Currently the spacing/format on this is a bit goofy in places, due to shuffling code
* between 2 editors! Apologies for anyone combing through it :)
*/
//TODO DOH instead of STL?
//TODO Most commands are not fully implemented
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>
#include <list>
#include "DoxygenEntity.h"
#include "TokenList.h"
#define SIMPLECOMMAND 1
#define IGNOREDSIMPLECOMMAND 2
#define COMMANDWORD 3
#define IGNOREDCOMMANDWORD 4
#define COMMANDLINE 5
#define IGNOREDCOMMANDLINE 6
#define COMMANDPARAGRAPH 7
#define IGNORECOMMANDPARAGRAPH 8
#define COMMANDENDCOMMAND 9
#define COMMANDWORDPARAGRAPH 10
#define COMMANDWORDLINE 11
#define COMMANDWORDOWORDWORD 12
#define COMMANDOWORD 13
#define COMMANDERRORTHROW 14
#define COMMANDUNIQUE 15
using namespace std;
//////////////////////////////////////////
/*Set these to pick what internal functions
to test. */
//int testCommandParsingFunctions = 1;// not implemented
int testCodeCrawlingFunctions = 0;
int demonstrateParsing = 0;
int runExamples = 0;
int noisy = 0; // set this to 1 for extra chatter from the parsing stage.
int addCommand(string commandName, int &startInd, list <DoxygenEntity> &doxyList, string doxygenString);
//////////////////////////////////////////
/* Globals*/
// An array of all the commands and my generic description tag, plaindescription
string commandArray[] = {"a", "addindex", "addtogroup", "anchor", "arg", "attention",
"author", "b", "brief", "bug", "c", "callgraph", "callergraph", "category",
"class", "code", "cond", "copybrief", "copydetails", "copydoc", "date", "def",
"defgroup", "deprecated", "details", "dir", "dontinclude", "dot", "dotfile", "e",
"else", "elseif", "em", "endcode", "endcond", "enddot", "endhtmlonly", "endif",
"endlatexonly", "endlink", "endmanonly", "endmsc", "endverbatim", "endxmlonly",
"enum", "example", "exception", "f$", "f[", "f]", "f{", "f}", "file", "fn", "headerfile",
"hideinitializer", "htmlinclude", "htmlonly", "if", "ifnot", "image", "include",
"includelineno", "ingroup", "internal", "invariant", "interface", "latexonly", "li",
"line", "link", "mainpage", "manonly", "msc", "n", "name", "namespace", "nosubgrouping",
"note", "overload", "p", "package", "page", "par", "paragraph", "param", "post", "pre",
"private", "privatesection", "property", "protected", "protectedsection", "protocol",
"public", "publicsection", "ref", "relates", "relatesalso", "remarks", "return", "retval",
"sa", "section", "see", "showinitializer", "since", "skip", "skipline", "struct", "subpage",
"subsection", "subsubsection", "test", "throw", "todo", "tparam", "typedef", "union", "until",
"var", "verbatim", "verbinclude", "version", "warning", "weakgroup", "xmlonly", "xrefitem",
"$", "@", "//","&", "~", "<", ">", "#", "%"};
string sectionIndicators[] = { "attention", "author", "brief", "bug", "cond", "date", "deprecated", "details",
"else", "elseif", "endcond", "endif", "exception", "if", "ifnot", "invariant", "note", "par", "param",
"tparam", "post" , "pre", "remarks", "return", "retval", "sa", "see", "since", "test", "throw", "todo",
"version", "warning", "xrefitem" };
/* All of the doxygen commands divided up by how they are parsed */
string simpleCommands[] = {"n", "$", "@", "//", "&", "~", "<", ">", "#", "%"};
string ignoredSimpleCommands[] = {"nothing at the moment"};
string commandWords[] = {"a", "b", "c", "e", "em", "p", "def", "enum", "example", "package",
"relates", "namespace", "relatesalso","anchor", "dontinclude", "include", "includelineno"};
string ignoredCommandWords[] = {"copydoc", "copybrief", "copydetails", "verbinclude", "htmlinclude"};
string commandLines[] = {"addindex", "fn", "name", "line", "var", "skipline", "typedef", "skip", "until", "property"};
string ignoreCommandLines[] = {"nothing at the moment"};
string commandParagraph[] = {"return", "remarks", "since", "test", "sa", "see", "pre", "post", "details", "invariant",
"deprecated", "date", "note", "warning", "version", "todo", "bug", "attention", "brief", "arg", "author"};
string ignoreCommandParagraphs[] = {"nothing at the moment"};
string commandEndCommands[] = {"code", "dot", "msc", "f$", "f[", "f{environment}{", "htmlonly", "latexonly", "manonly",
"verbatim", "xmlonly", "cond", "if", "ifnot", "link"};
string commandWordParagraphs[] = {"param", "tparam", "throw", "retval", "exception"};
string commandWordLines[] = {"page", "subsection", "subsubsection", "section", "paragraph", "defgroup"};
string commandWordOWordOWords [] = {"category", "class", "protocol", "interface", "struct", "union"};
string commandOWords[] = {"dir", "file", "cond"};
string commandErrorThrowings[] = {"annotatedclasslist", "classhierarchy", "define", "functionindex", "header",
"headerfilelist", "inherit", "l", "postheader", "private", "privatesection", "protected",
"protectedsection", "public", "publicsection", "endcode", "enddot", "endmsc", "endhtmlonly",
"endlatexonly", "endmanonly", "endlink", "endverbatim", "endxmlonly", "f]", "f}", "endcond",
"endif"};
string commandUniques[] = {"xrefitem", "ingroup", "par", "headerfile", "overload", "weakgroup", "ref",
"subpage", "dotfile", "image", "addtogroup", "li"};
//int startIndex = 0;
int isNewLine = 0;
int briefDescExists = 0;
/* Entity list is the root list.
* it is arranged this way to help documentation modules,
* such as the javaDoc one, "sort" entities where they need to.
*/
list <DoxygenEntity> rootList;
/* General (untested) assist methods */
string StringToLower(string stringToConvert)
{//change each element of the string to lower case
for(unsigned int i=0;i<stringToConvert.length();i++)
{
stringToConvert[i] = tolower(stringToConvert[i]);
}
return stringToConvert;//return the converted string
}
int findCommand(string smallString){
smallString = StringToLower(smallString);
int a;
for (int i = 0; i < sizeof(commandArray)/sizeof(*commandArray); i++){
if( (a = smallString.compare(commandArray[i])) == 0){
return 101 + i;
}
}
return -1;
}
int commandBelongs(string theCommand){
string smallString = StringToLower(theCommand );
//cout << " Looking for command " << theCommand << endl;
int i = 0;
for ( i = 0; i < sizeof(simpleCommands)/sizeof(*simpleCommands); i++){
if(smallString.compare(simpleCommands[i]) == 0){return SIMPLECOMMAND ;}
}
for ( i = 0; i < sizeof(ignoredSimpleCommands)/sizeof(*ignoredSimpleCommands); i++){
if(smallString.compare(ignoredSimpleCommands[i]) == 0){return IGNOREDSIMPLECOMMAND;}
}
for ( i = 0; i < sizeof(commandWords)/sizeof(*commandWords); i++){
if(smallString.compare( commandWords[i]) == 0){return COMMANDWORD;}
}
for ( i = 0; i < sizeof(ignoredCommandWords)/sizeof(*ignoredCommandWords); i++){
if(smallString.compare( ignoredCommandWords[i]) == 0){return IGNOREDCOMMANDWORD;}
}
for ( i = 0; i < sizeof(commandLines)/sizeof(*commandLines); i++){
if(smallString.compare( commandLines[i]) == 0){return COMMANDLINE;}
}
for ( i = 0; i < sizeof(ignoreCommandLines)/sizeof(*ignoreCommandLines); i++){
if(smallString.compare( ignoreCommandLines[i]) == 0){return IGNOREDCOMMANDLINE;}
}
for ( i = 0; i < sizeof(commandParagraph)/sizeof(*commandParagraph); i++){
if(smallString.compare( commandParagraph[i]) == 0){return COMMANDPARAGRAPH;}
}
/* IgnoreCommandParagraph */
for ( i = 0; i < sizeof(ignoreCommandParagraphs)/sizeof(*ignoreCommandParagraphs); i++){
if(smallString.compare( ignoreCommandParagraphs[i]) == 0){return IGNORECOMMANDPARAGRAPH;}
}
for ( i = 0; i < sizeof(commandEndCommands)/sizeof(*commandEndCommands); i++){
if(smallString.compare( commandEndCommands[i]) == 0){return COMMANDENDCOMMAND ;}
}
for ( i = 0; i < sizeof(commandWordParagraphs)/sizeof(*commandWordParagraphs); i++){
if(smallString.compare( commandWordParagraphs[i]) == 0){return COMMANDWORDPARAGRAPH;}
}
for ( i = 0; i < sizeof(commandWordLines)/sizeof(*commandWordLines); i++){
if(smallString.compare( commandWordLines[i]) == 0){return COMMANDWORDLINE ;}
}
for ( i = 0; i < sizeof(commandWordOWordOWords)/sizeof(*commandWordOWordOWords); i++){
if(smallString.compare( commandWordOWordOWords[i]) == 0){return COMMANDWORDOWORDWORD;}
}
for ( i = 0; i < sizeof(commandOWords)/sizeof(*commandOWords); i++){
if(smallString.compare( commandOWords[i]) == 0){return COMMANDOWORD;}
}
for ( i = 0; i < sizeof(commandErrorThrowings)/sizeof(*commandErrorThrowings); i++){
if(smallString.compare( commandErrorThrowings[i]) == 0){return COMMANDERRORTHROW;}
}
for ( i = 0; i < sizeof(commandUniques)/sizeof(*commandUniques); i++){
if(smallString.compare( commandUniques[i]) == 0){return COMMANDUNIQUE;}
}
return 0;
}
/* isSectionIndicator returns a boolean if the command is a section indicator
* This is a helper method for finding the end of a paragraph
* by Doxygen's terms
*/
int isSectionIndicator(string smallString){
smallString = StringToLower(smallString);
for (int i = 0; i < sizeof( sectionIndicators)/sizeof(* sectionIndicators); i++){
if( smallString.compare( sectionIndicators[i]) == 0){
return 1;
}
}
return 0;
}
/* HELPER METHODS
* To test these, change the flags at the top of this class
*/
/* Tiny method to compartmentalise the removal of all optional comment fluff such as ///
* or **** that often occurs before commment blobs.
*/
int clearFluff(int &startInd, string doxygenString){
int startIndex = startInd;
int amountRemoved = 0;
while(doxygenString[startIndex] == '/'|| doxygenString[startIndex] == '!' || doxygenString[startIndex] == '*'
|| doxygenString[startIndex] == '\n' || doxygenString[startIndex] == ' '|| doxygenString[startIndex] == '\t'){
startIndex++;
amountRemoved++;
}
startInd = startIndex;
return startIndex;
}
/* Returns the next word ON THE CURRENT LINE ONLY
* if a new line is encountered, returns a blank string.
* Updates the index it is given after completion.
*/
string getNextWord(int &startInd, string doxygenString){
int startIndex = startInd;
string nextWord;
while (startIndex < doxygenString.length() && (doxygenString[startIndex] == '/'|| doxygenString[startIndex] == ' '
|| doxygenString[startIndex] == '*' || doxygenString[startIndex]== '\n' || doxygenString[startIndex] == '\t'
|| doxygenString[startIndex] == '!')){
if(doxygenString[startIndex]== '\n'){ startInd = startIndex; return nextWord;}
startIndex++;
//cout << "Start Index" << startIndex << endl;
}
//cout << doxygenString[startIndex] << endl;
int endIndex = startIndex;
while (endIndex < doxygenString.length() && (doxygenString[endIndex]!= '\n' && doxygenString[endIndex]!= ' ')){
endIndex++;
//cout << "End Index " << endIndex << endl;
}
nextWord = doxygenString.substr(startIndex, endIndex - startIndex);
startInd = endIndex;
//cout << "Next Word :" << nextWord << ":" << endl;
return nextWord;
}
/* Returns the string remaining on a line
* and moved the index to the NEXT line
* returns "" if nothing on the current line.
*/
string getOneLine(int &startInd, string doxygenString){
int startIndex = startInd;
while (doxygenString[startIndex] == '/'|| doxygenString[startIndex] == ' '
|| doxygenString[startIndex] == '*' || doxygenString[startIndex]== '\n'
|| doxygenString[startIndex] == '!' || doxygenString[startIndex] == '\t'){
if(doxygenString[startIndex]== '\n') return "";
startIndex++;
}
int endIndex = startIndex;
while ((endIndex != doxygenString.length())&& (doxygenString[endIndex] != '\n')){
endIndex++;
//cout << doxygenString[endIndex] << "End Index: " << endIndex << endl;
}
string returnedLine = doxygenString.substr(startIndex, endIndex - startIndex);
if (doxygenString[endIndex] == '\n' && (endIndex < doxygenString.length())) endIndex++;
startInd = endIndex;
return returnedLine;
}
/* Returns a properly formatted (all doxygen *, //! etc removed)
* up til ANY command or end of paragraph is encountered. Has all the same issues as
* getStringTilEndOfParagraph formatting wise.
*/
string getStringTilCommand(int &startInd, string doxygenString){
if (startInd >= doxygenString.length()) return "";
int startIndex = startInd;
int endIndex = startInd;
string description;
/* Find the End of the description */
int keepLooping = 1;
int spareIndex = 0;
int counter;
int finalIndex;
while(keepLooping){
if(endIndex >= doxygenString.length()){
finalIndex = endIndex;
keepLooping = 0;
}
else if (doxygenString[endIndex] == '\n'){
//cout << "1 ";
counter = endIndex;
if ( keepLooping && endIndex < doxygenString.length()-1) {
counter++;
//cout << "Counter :" << counter << endl;
while(keepLooping && endIndex < doxygenString.length() && (doxygenString[counter] == ' ' ||
doxygenString[counter] == '*'|| doxygenString[counter] == '\n'|| doxygenString[counter] == '/'
|| doxygenString[counter] == '!' || doxygenString[startIndex] == '\t') ){
if(doxygenString[counter] == '\n') {
//cout << "Blank line found" << endl;
keepLooping = 0;
finalIndex = counter;}
else{ counter++;}
}
}
//endIndex = counter;
}
else if (doxygenString[endIndex] == '\\' || doxygenString[endIndex] == '@'){
finalIndex = endIndex;
keepLooping = 0;
}
else if(endIndex < doxygenString.length() -2
&& string("**/").compare(doxygenString.substr(endIndex , endIndex + 2)) == 0){
finalIndex = endIndex;
//cout << "3 ";
keepLooping = 0;
}
if(keepLooping){
//cout << "4 ";
endIndex++;
}
}
//cout << "Done with EndIndex" << endl;
while(doxygenString[startIndex] == '!' || doxygenString[startIndex] == ' '
|| doxygenString[startIndex] == '/' || doxygenString[startIndex] == '*' || doxygenString[startIndex] == '\t') startIndex++;
for (int i = startIndex; i < endIndex; i++){
if (doxygenString[i] == '\n') {
while ((doxygenString[i] == '\n' || doxygenString[startIndex] == '\t'|| doxygenString[i] == ' '
|| doxygenString[i] == '*' || doxygenString[i] == '/')&& endIndex < doxygenString.length() - 1){
i++;
}
description.append(" ");
}
description.push_back(doxygenString[i]);
//cout << doxygenString[i];
}
//if(noisy) cout << "Final Index is: " << finalIndex << endl;
startInd = finalIndex;
return description;
}
/* Returns a Paragraph- defined in Doxygen to be a paragraph of text
* seperate by either a structural command or a blank line
* This method is VERY messy currently
*/
//TODO fix getStringTilEndOfParagraph to be more forgiving, work on ' ' characters
string getStringTilEndOfParagraph(int &startInd, string doxygenString){
if (startInd >= doxygenString.length()) return "";
int startIndex = startInd;
int endIndex = startInd;
string description;
/* Find the End of the description */
int keepLooping = 1;
int spareIndex = 0;
int counter;
int finalIndex;
while(keepLooping){
if(endIndex >= doxygenString.length()){
finalIndex = endIndex;
keepLooping = 0;
}
else if (doxygenString[endIndex] == '\n'){
//cout << "1 ";
counter = endIndex;
if ( keepLooping && endIndex < doxygenString.length()-1) {
counter++;
//cout << "Counter :" << counter << endl;
while(keepLooping && endIndex < doxygenString.length() && (doxygenString[counter] == ' ' ||
doxygenString[counter] == '*'|| doxygenString[startIndex] == '\t' || doxygenString[counter] == '\n'|| doxygenString[counter] == '/'
|| doxygenString[counter] == '!') ){
if(doxygenString[counter] == '\n') {
//cout << "Blank line found" << endl;
keepLooping = 0;
finalIndex = counter;}
else{ counter++;}
}
}
//endIndex = counter;
}
//todo this fix for not immediately exciting while parsing a paragraph seems somewhat cheap
else if (endIndex != startInd && doxygenString[endIndex] == '\\' || doxygenString[endIndex] == '@'){
spareIndex = endIndex +1;
if (isSectionIndicator(getNextWord(spareIndex, doxygenString))) {
keepLooping = 0;
finalIndex = endIndex;}
}
else if(endIndex < doxygenString.length() - 1
&& string("*/").compare(doxygenString.substr(endIndex , endIndex + 1)) == 0){
keepLooping = 0;
finalIndex = endIndex;
}
if(keepLooping){
endIndex++;
}
}
//cout << "Done with EndIndex" << endl;
while(doxygenString[startIndex] == '!' || doxygenString[startIndex] == ' ' || doxygenString[startIndex] == '\t'
|| doxygenString[startIndex] == '/' || doxygenString[startIndex] == '*') startIndex++;
for (int i = startIndex; i < endIndex; i++){
if (doxygenString[i] == '\n') {
while ((doxygenString[i] == '\n' || doxygenString[startIndex] == '\t' || doxygenString[i] == ' ' ||doxygenString[startIndex] == '!'
|| doxygenString[i] == '*' || doxygenString[i] == '/')&& endIndex < doxygenString.length() - 1){
i++;
}
description.append(" ");
}
description.push_back(doxygenString[i]);
//cout << doxygenString[i];
}
startInd = finalIndex;
return description;
}
/* This method is for a specific form of doxygen command
* that begins with a \command and ends in \endcommand
* such as \code and \endcode. The proper usage is
* progressTilEndCommand("endcode", index)
* currently this method does NOT process what is in between the two commands
*/
//TODO Make progressTilCommand return a formatted string
int progressTilEndCommand(string theCommand, int &startInd, string doxygenString){
int endIndex = startInd;
while (endIndex < doxygenString.length()){
if (doxygenString[endIndex] == '\\' || doxygenString[endIndex] == '@'){
//cout << doxygenString.substr(endIndex + 1 , theCommand.length())<< endl;
if (theCommand.compare(doxygenString.substr(endIndex + 1 , theCommand.length())) == 0){
startInd = endIndex + theCommand.length() + 1;
return 1;
}
}
endIndex++;
}
//End command not found
return 0;
}
/* A specialty method for commands such as \arg that end at the end of a paragraph OR when another \arg is encountered
*/
string getStringTilAnyCommand(string theCommand, int &startInd, string doxygenString){
if (startInd >= doxygenString.length()) return "";
int startIndex = startInd;
int endIndex = startInd;
string description;
/* Find the End of the description */
int keepLooping = 1;
int spareIndex = 0;
int counter;
int finalIndex;
while(keepLooping){
if(endIndex >= theCommand.length()){
finalIndex = endIndex;
keepLooping = 0;
}
else if (doxygenString[endIndex] == '\n'){
//cout << "1 ";
counter = endIndex;
if ( keepLooping && endIndex < doxygenString.length()-1) {
counter++;
//cout << "Counter :" << counter << endl;
while(keepLooping && endIndex < doxygenString.length() && (doxygenString[counter] == ' ' ||
doxygenString[counter] == '*'|| doxygenString[counter] == '\n'|| doxygenString[counter] == '/'
|| doxygenString[counter] == '!' || doxygenString[startIndex] == '\t') ){
if(doxygenString[counter] == '\n') {
//cout << "Blank line found" << endl;
keepLooping = 0;
finalIndex = counter;}
else{ counter++;}
}
}
//endIndex = counter;
}
else if (doxygenString[endIndex] == '\\' || doxygenString[endIndex] == '@'){
//cout << "2 ";
spareIndex = endIndex;
if (endIndex + theCommand.length() < theCommand.length()
&& theCommand.compare(doxygenString.substr(endIndex, theCommand.length())) == 0) keepLooping = 0;
}
else if(endIndex < doxygenString.length() - 1
&& string("*/").compare(doxygenString.substr(endIndex , endIndex + 1)) == 0){
//cout << "3 ";
keepLooping = 0;
}
if(keepLooping){
//cout << "4 ";
endIndex++;
}
}
//cout << "Done with EndIndex" << endl;
while(doxygenString[startIndex] == '!' || doxygenString[startIndex] == ' '
|| doxygenString[startIndex] == '/' || doxygenString[startIndex] == '*' || doxygenString[startIndex] == '\t') startIndex++;
for (int i = startIndex; i < endIndex; i++){
if (doxygenString[i] == '\n') {
while ((doxygenString[i] == '\n' || doxygenString[i] == ' ' || doxygenString[startIndex] == '\t'
|| doxygenString[i] == '*' || doxygenString[i] == '/')&& endIndex < doxygenString.length() - 1){
i++;
}
description.append(" ");
}
description.push_back(doxygenString[i]);
//cout << doxygenString[i];
}
startInd = finalIndex;
return description;
}
/* prints the parse tree
*
*/
void printTree(){
list<DoxygenEntity>::iterator p = rootList.begin();
while (p != rootList.end()){
(*p).printEntity(0);
p++;
}
}
list<DoxygenEntity> parse(int startInd, string doxygenString){
string currWord;
int startIndex = startInd;
int savedIndex;
list <DoxygenEntity> aNewList;
int endIndex = doxygenString.length();
int currCommand;
while (startIndex < endIndex){
savedIndex = startIndex;
currWord = getNextWord(startIndex, doxygenString);
if(noisy) cout << "Parsing for phrase starting in:" << currWord << endl;
if(currWord == ""){
if (startIndex < endIndex) startIndex++;
}
else if(currWord[0] == '\\' || currWord[0] == '@'){
currWord = currWord.substr(1, currWord.length() - 1);
currCommand = findCommand(currWord);
if (currCommand < 0 ){ if(noisy) cout << "BAD COMMAND: " << currWord << endl;}
//cout << "Command: " << currWord << " " << currCommand << endl;
else addCommand(currWord, startIndex, aNewList, doxygenString);
}
else{
startIndex = savedIndex;
addCommand(string("plainstring"), startIndex, aNewList, doxygenString);
}
}
return aNewList;
}
/* Method for Adding a Simple Command
* Format: @command
* Plain commands, such as newline etc, they contain no other data
* \n \\ \@ \& \$ \# \< \> \%
*/
int addSimpleCommand(string theCommand, int &startInd, list <DoxygenEntity> &doxyList, string doxygenString){
if (noisy) cout << "Parsing " << theCommand << endl;
doxyList.push_back(DoxygenEntity(theCommand));
return 1;
}
/* NOT INCLUDED Simple Commands
* Format: @command
* Plain commands, such as newline etc, they contain no other data
*/
int ignoreSimpleCommand(string theCommand, int &startInd, list <DoxygenEntity> &doxyList, string doxygenString){
if (noisy) cout << "Not Adding " << theCommand << endl;
return 1;
}
/* CommandWord
* Format: @command <word>
* Commands with a single WORD after then such as @b
* "a", "b", "c", "e", "em", "p", "def", "enum", "example", "package",
* "relates", "namespace", "relatesalso","anchor", "dontinclude", "include", "includelineno"
*/
int addCommandWord(string theCommand, int &startInd, list <DoxygenEntity> &doxyList, string doxygenString){
if (noisy) cout << "Parsing " << theCommand << endl;
string name = getNextWord(startInd, doxygenString);
if (!name.empty()){
doxyList.push_back(DoxygenEntity(theCommand, name));
return 1;
}
else cout << "No word followed " << theCommand << " command. Not added" << endl;
return 0;
}
/* NOT INCLUDED CommandWord
* Format: @command <word>
* Commands with a single WORD after then such as @b
* "copydoc", "copybrief", "copydetails", "verbinclude", "htmlinclude"
*/
int ignoreCommandWord(string theCommand, int &startInd, list <DoxygenEntity> &doxyList, string doxygenString){
if (noisy) cout << "Not Adding " << theCommand << endl;
string name = getNextWord(startInd, doxygenString);
if (!name.empty()){
return 1;
}
else cout << "WARNING: No word followed " << theCommand << " command." << endl;
return 0;
}
/* CommandLine
* Format: @command (line)
* Commands with a single LINE after then such as @var
* "addindex", "fn", "name", "line", "var", "skipline", "typedef", "skip", "until", "property"
*/
int addCommandLine(string theCommand, int &startInd, list <DoxygenEntity> &doxyList, string doxygenString){
if (noisy) cout << "Parsing " << theCommand << endl;
string line = getOneLine(startInd, doxygenString);
if(!line.empty()){
int placement = 0;
list <DoxygenEntity> aNewList;
aNewList = parse(placement, line);
doxyList.push_back( DoxygenEntity(theCommand, aNewList));
return 1;
}
else cout << "No line followed " << theCommand << " command. Not added" << endl;
return 0;
}
/* NOT INCLUDED CommandLine
* Format: @command (line)
* Commands with a single LINE after then such as @var
*
*/
int ignoreCommandLine(string theCommand, int &startInd, list <DoxygenEntity> &doxyList, string doxygenString){
if (noisy) cout << "Not Adding " << theCommand << endl;
string line = getOneLine(startInd, doxygenString);
if(!line.empty()){
return 1;
}
else cout << "WARNING: No line followed " << theCommand << " command." << endl;
return 0;
}
/* CommandParagraph
* Format: @command {paragraph}
* Commands with a single paragraph after then such as @return
* "return", "remarks", "since", "test", "sa", "see", "pre", "post", "details", "invariant",
* "deprecated", "date", "note", "warning", "version", "todo", "bug", "attention", "brief", "arg", "author"
*/
int addCommandParagraph(string theCommand, int &startInd, list <DoxygenEntity> &doxyList, string doxygenString){
if (noisy) cout << "Parsing " << theCommand << endl;
string restOfParagraph = getStringTilEndOfParagraph(startInd, doxygenString);
if(!restOfParagraph.empty()){
int placement = 0;
list <DoxygenEntity> aNewList;
aNewList = parse(placement, restOfParagraph);
doxyList.push_back( DoxygenEntity(theCommand, aNewList));
return 1;
}
else cout << "No line followed " << theCommand << " command. Not added" << endl;
return 0;
}
/* CommandParagraph
* Format: @command {paragraph}
* Commands with a single LINE after then such as @var
*
*/
int ignoreCommandParagraph(string theCommand, int &startInd, list <DoxygenEntity> &doxyList, string doxygenString){
if (noisy) cout << "Not Adding " << theCommand << endl;
string restOfParagraph = getStringTilEndOfParagraph(startInd, doxygenString);
if(!restOfParagraph.empty()){
return 1;
}
else cout << "WARNING: No line followed " << theCommand << " command." << endl;
return 0;
}
/* Command EndCommand
* Format: @command and ends at @endcommand
* Commands that take in a block of text such as @code
* "code", "dot", "msc", "f$", "f[", "f{environment}{", "htmlonly", "latexonly", "manonly",
* "verbatim", "xmlonly", "cond", "if", "ifnot", "link"
* Returns 1 if success, 0 if the endcommand is never encountered.
*/
int ignoreCommandEndCommand(string theCommand, int &startInd, list <DoxygenEntity> &doxyList, string doxygenString){
if (noisy) cout << "Not Adding " << theCommand << endl;
return progressTilEndCommand( "end" + theCommand, startInd, doxygenString);
}
/* CommandWordParagraph
* Format: @command <word> {paragraph}
* Commands such as param
* "param", "tparam", "throw", "retval", "exception"
*/
int addCommandWordParagraph(string theCommand, int &startInd, list <DoxygenEntity> &doxyList, string doxygenString){
if (noisy) cout << "Parsing " << theCommand << endl;
string name = getNextWord(startInd, doxygenString);
if (name.empty()){
cout << "No word followed " << theCommand << " command. Not added" << endl;
return 0;
}
string restOfParagraph = getStringTilEndOfParagraph(startInd, doxygenString);
int placement = 0;
if(!restOfParagraph.empty()){
list <DoxygenEntity> aNewList;
aNewList = parse(placement, restOfParagraph);
aNewList.push_front(DoxygenEntity("plainstring", name));
doxyList.push_back(DoxygenEntity(theCommand, aNewList));
return 1;
}
else cout << "No paragraph followed " << theCommand << " command. Not added" << endl;
return 0;
}
/* CommandWordLine
* Format: @command <word> (line)
* Commands such as param
* "page", "subsection", "subsubsection", "section", "paragraph", "defgroup"
*/
int addCommandWordLine(string theCommand, int &startInd, list <DoxygenEntity> &doxyList, string doxygenString){
if (noisy) cout << "Parsing " << theCommand << endl;
string name = getNextWord(startInd, doxygenString);
if (name.empty()){
cout << "No word followed " << theCommand << " command. Not added" << endl;
return 0;
}
string restOfLine = getStringTilEndOfParagraph(startInd, doxygenString);
int placement = 0;
if(!restOfLine.empty()){
list <DoxygenEntity> aNewList;
aNewList = parse(placement, restOfLine);
aNewList.push_front(DoxygenEntity("plainstring", name));
doxyList.push_back(DoxygenEntity(theCommand, aNewList));
return 1;
}
else cout << "No line followed " << theCommand << " command. Not added" << endl;
return 0;
}
/* Command Word Optional Word Optional Word
* Format: @command <word> [<header-file>] [<header-name>]
* Commands such as class
* "category", "class", "protocol", "interface", "struct", "union"
*/
int addCommandWordOWordOWord(string theCommand, int &startInd, list <DoxygenEntity> &doxyList, string doxygenString){
if (noisy) cout << "Parsing " << theCommand << endl;
string name = getNextWord(startInd, doxygenString);
if (name.empty()){
cout << "No word followed " << theCommand << " command. Not added" << endl;
return 0;
}
string headerfile = getNextWord(startInd, doxygenString);
string headername = getNextWord(startInd, doxygenString);
list <DoxygenEntity> aNewList;
aNewList.push_back(DoxygenEntity("plainstring", name));
if (!headerfile.empty()) aNewList.push_back(DoxygenEntity("plainstring", headerfile));
if (!headername.empty()) aNewList.push_back(DoxygenEntity("plainstring", headername));
doxyList.push_back(DoxygenEntity(theCommand, aNewList));
return 1;
}
/* Command Optional Word
* Format: @command [<word>]
* Commands such as dir
* "dir", "file", "cond"
*/
int addCommandOWord(string theCommand, int &startInd, list <DoxygenEntity> &doxyList, string doxygenString){
if (noisy) cout << "Parsing " << theCommand << endl;
string name = getNextWord(startInd, doxygenString);
doxyList.push_back(DoxygenEntity(theCommand, name));
return 1;
}
/* The actual "meat" of the doxygen parser. This is not yet fully implemented
* with my current design- however the skeletal outline is contained in
* the file Skeleton
*/
int addCommand(string commandString, int &startInd, list <DoxygenEntity> &doxyList, string doxygenString){
string theCommand = StringToLower(commandString);
string voidArray[] = {""};
/* @command */
if (theCommand.compare("plainstring") == 0){
string nextPhrase = getStringTilCommand(startInd, doxygenString);
if (noisy) cout << "Parsing plain string :" << nextPhrase << endl;
doxyList.push_back(DoxygenEntity("plainstring", nextPhrase ));
return 1;
}
int commandNumber = commandBelongs(theCommand);
if (commandNumber == SIMPLECOMMAND){
return addSimpleCommand(theCommand, startInd,doxyList, doxygenString);
}
if (commandNumber == IGNOREDSIMPLECOMMAND){
return ignoreSimpleCommand(theCommand, startInd,doxyList, doxygenString);
}
if (commandNumber == COMMANDWORD){
return addCommandWord(theCommand, startInd,doxyList, doxygenString);
}
if (commandNumber == IGNOREDCOMMANDWORD){
return ignoreCommandWord(theCommand, startInd,doxyList, doxygenString);
}
if (commandNumber == COMMANDLINE ){
return addCommandLine(theCommand, startInd,doxyList, doxygenString);
}
if (commandNumber == IGNOREDCOMMANDLINE ){
return ignoreCommandLine(theCommand, startInd,doxyList, doxygenString);
}
if (commandNumber == COMMANDPARAGRAPH){
return addCommandParagraph(theCommand, startInd,doxyList, doxygenString);
}
if (commandNumber == IGNORECOMMANDPARAGRAPH){
return ignoreCommandParagraph(theCommand, startInd,doxyList, doxygenString);
}
if (commandNumber == COMMANDENDCOMMAND){
return ignoreCommandEndCommand(theCommand, startInd,doxyList, doxygenString);
}
if (commandNumber == COMMANDWORDPARAGRAPH){
return addCommandWordParagraph(theCommand, startInd,doxyList, doxygenString);
}
if (commandNumber == COMMANDWORDLINE){
return addCommandWordLine(theCommand, startInd,doxyList, doxygenString);
}
if (commandNumber == COMMANDWORDOWORDWORD){
return addCommandWordOWordOWord(theCommand, startInd,doxyList, doxygenString);
}
if (commandNumber == COMMANDOWORD){
return addCommandOWord(theCommand, startInd,doxyList, doxygenString);
}
if (commandNumber == COMMANDERRORTHROW){
return 0;
}
if (commandNumber == COMMANDUNIQUE){
return 0;
}
return 0;
}
int weirdTest(){
string doxygenString = "this is a test.";
string restOfParagraph;
int startIndex = 0;
restOfParagraph = getStringTilEndOfParagraph(startIndex , doxygenString);
cout << restOfParagraph<< " " << startIndex << endl;
startIndex = 0;
restOfParagraph = getStringTilCommand(startIndex, doxygenString);
cout << restOfParagraph<< " " << startIndex << endl;
}
int doRunExamples(){
string line;
string filename;
string exampleNames[] = {"Examples/Example1","Examples/Example2", "Examples/Example3", "Examples/Example4", "Examples/Example5"};
int placement;
string doxygenString;
ifstream doxCommentFile;
for (int i = 0; i < 5; i++){
doxCommentFile.open(exampleNames[i].c_str());
doxCommentFile >> doxygenString;
while(getline(doxCommentFile, line)){
doxygenString += line + "\n";}
doxCommentFile.close();
placement = 0;
cout << "---RAW CODE---" << endl << doxygenString << endl<<endl;
//clearFluff(placement, doxygenString);
//rootList = parse(placement, doxygenString);
TokenList tokList = TokenList(doxygenString);
tokList.printList();
cout << "---THE TREE---" << endl;
printTree();
}
return 1;
}
/* Returns a parse tree for a string */
int main(int argc, char *argv[]){
//weirdTest();
if(testCodeCrawlingFunctions) testCCF();
if(runExamples) doRunExamples();
if (demonstrateParsing){
string doxygenString = "//! A normal member taking two arguments and returning an integer value.\n/*!\n \\param a an integer argument. \\param s a constant character pointer\n \\return The test results\n \\sa Test(), ~Test(), testMeToo() and publicVar()\n */";
//string doxygenString = " /** This is a small sentence.\n *\n@param x this is a parameter. \n \n This is a line with a @b bold letter \n * \n @brief small @b description. \n\n * **/";
//string doxygenString = "This is a description.";
int placement = 0;
clearFluff(placement, doxygenString);
rootList = parse(placement, doxygenString);
cout << "---THE TREE---" << endl;
printTree();
}
string doxygenString2 = "//! A normal member taking two arguments and returning an integer value.\n/*!\n \\param a an integer argument. \\param s a constant character pointer\n\n\n\n \\return The test results\n \\sa Test(), ~Test(), testMeToo() and publicVar()\n */";
TokenList tokList = TokenList(doxygenString2);
tokList.printList();
return 1;
}

View file

@ -0,0 +1,11 @@
#ifndef DOXYGENTRANSWTOKENIZER_H_
#define DOXYGENTRANSWTOKENIZER_H_
class DoxygenTransWTokenizer
{
public:
DoxygenTransWTokenizer();
virtual ~DoxygenTransWTokenizer();
};
#endif /*DOXYGENTRANSWTOKENIZER_H_*/

View file

@ -0,0 +1,144 @@
#ifndef TRANSLATOR_H_
#define TRANSLATOR_H_
#define BRIEFDESCRIPTION 99
#define LONGDESCRIPTION 100
#define A_COMMAND 101 /* \a */
#define ADDINDEX 102 /* \addindex */
#define ADDTOGROUP 103 /* \addtogroup */
#define ANCHOR 104 /* \anchor */
#define ARG_COMMAND 105 /* \arg */
#define ATTENTION 106 /* \attention */
#define AUTHOR 107 /* \author */
#define B_COMMAND 108 /* \b */
#define BRIEF 109 /* \brief */
#define BUG 110 /* \bug */
#define C_COMMAND 111 /* \c */
#define CALLGRAPH 112 /* \callgraph */
#define CALLERGRAPH 113 /* \callergraph */
#define CATEGORY 114 /* \category */
#define CLASS_COMMAND 115 /* \class */
#define CODE 116 /* \code */
#define COND 117 /* \cond */
#define COPYBRIEF 118 /* \copybrief */
#define COPYDETAILS 119 /* \copydetails */
#define COPYDOC 120 /* \copydoc */
#define DATE 121 /* \date */
#define DEF 122 /* \def */
#define DEFGROUP 123 /* \defgroup */
#define DEPRECATED 124 /* \deprecated */
#define DETAILS 125 /* \details */
#define DIR_COMMAND 126 /* \dir */
#define DONTINCLUDE 127 /* \dontinclude */
#define DOT 128 /* \dot */
#define DOTFILE 129 /* \dotfile */
#define E_COMMAND 130 /* \e */
#define ELSE_COMMAND 131 /* \else */
#define ELSEIF_COMMAND 132 /* \elseif */
#define EM 133 /* \em */
#define ENDCODE 134 /* \endcode */
#define ENDCOND 135 /* \endcond */
#define ENDDOT 136 /* \enddot */
#define ENDHTMLONLY 137 /* \endhtmlonly */
#define ENDIF 138 /* \endif */
#define ENDLATEXONLY 139 /* \endlatexonly */
#define ENDLINK 140 /* \endlink */
#define ENDMANONLY 141 /* \endmanonly */
#define ENDMSC 142 /* \endmsc */
#define ENDVERBATIM 143 /* \endverbatim */
#define ENDXMLONLY 144 /* \endxmlonly */
#define ENUM 145 /* \enum */
#define EXAMPLE 146 /* \example */
#define EXCEPTION 147 /* \exception */
#define FDOLLAR 148 /* \f$ */
#define FLEFTSQUAREBRACKET 149 /* \f[ */
#define FRIGHTSQUAREBRACKET 150 /* \f] */
#define FLEFTBRACKET 151 /* \f{ */
#define FRIGHTBRACKET 152 /* \f} */
#define FILE_COMMAND 153 /* \file */
#define FN_COMMAND 154 /* \fn */
#define HEADERFILE 155/* \headerfile */
#define HIDEINITIALIZER 156 /* \hideinitializer */
#define HTMLINCLUDE 157 /* \htmlinclude */
#define HTMLONLY 158 /* \htmlonly */
#define IF_COMMAND 159 /* \if */
#define IFNOT_COMMAND 160 /* \ifnot */
#define IMAGE 161 /* \image */
#define INCLUDE_COMMAND 162 /* \include */
#define INCLUDELINENO 163 /* \includelineno */
#define INGROUP 164 /* \ingroup */
#define INTERNAL 165 /* \internal */
#define INVARIANT 166 /* \invariant */
#define INTERFACE_COMMAND 167 /* \interface */
#define LATEXONLY 168 /* \latexonly */
#define LI 169 /* \li */
#define LINE 170 /* \line */
#define LINK 171 /* \link */
#define MAINPAGE 172 /* \mainpage */
#define MANONLY 173 /* \manonly */
#define MSC 174 /* \msc */
#define N 175 /* \n */
#define NAME 176 /* \name */
#define NAMESPACE 177 /* \namespace */
#define NOSUBGROUPING 178 /* \nosubgrouping */
#define NOTE 179 /* \note */
#define OVERLOAD 180 /* \overload */
#define P 181 /* \p */
#define PACKAGE 182 /* \package */
#define PAGE 183 /* \page */
#define PAR 184 /* \par */
#define PARAGRAPH 185 /* \paragraph */
#define PARAM 186 /* \param */
#define POST 187 /* \post */
#define PRE 188 /* \pre */
#define PRIVATE 189 /* \private (PHP only) */
#define PRIVATESECTION 190 /* \privatesection (PHP only) */
#define PROPERTY 191 /* \property */
#define PROTECTED 192 /* \protected (PHP only) */
#define PROTECTEDSECTION 193 /* \protectedsection (PHP only) */
#define PROTOCOL 194 /* \protocol */
#define PUBLIC 195 /* \public (PHP only) */
#define PUBLICSECTION 196 /* \publicsection (PHP only) */
#define REF 197 /* \ref */
#define RELATES 198 /* \relates */
#define RELATESALSO 199 /* \relatesalso */
#define REMARKS 200 /* \remarks */
#define RETURN_COMMAND 201 /* \return */
#define RETVAL 202 /* \retval */
#define SA 203 /* \sa */
#define SECTION 204 /* \section */
#define SEE 205 /* \see */
#define SHOWINITIALIZER 206 /* \showinitializer */
#define SINCE 207 /* \since */
#define SKIP 208 /* \skip */
#define SKIPLINE 209 /* \skipline */
#define STRUCT 210 /* \struct */
#define SUBPAGE 211 /* \subpage */
#define SUBSECTION 212 /* \subsection */
#define SUBSUBSECTION 213 /* \subsubsection */
#define TEST 214 /* \test */
#define THROW_COMMAND 215 /* \throw */
#define TODO_COMMAND 216 /* \todo */
#define TPARAM_COMMAND 217 /* \tparam */
#define TYPEDEF_COMMAND 218 /* \typedef */
#define UNION_COMMAND 219 /* \union */
#define UNTIL_COMMAND 220 /* \until */
#define VAR_COMMAND 221 /* \var */
#define VERBATIM 222 /* \verbatim */
#define VERBININCLUDE 223 /* \verbinclude */
#define VERSION 224 /* \version */
#define WARNING 225 /* \warning */
#define WEAKGROUP 226 /* \weakgroup */
#define XMLONLY 227/* \xmlonly */
#define XREFITEM 228 /* \xrefitem */
#define DOLLAR_COMMAND 229 /* \$ */
#define AT_COMMAND 230 /* \@ */
#define SLASH_COMMAND 231 /* \\ */
#define AND_COMMAND 232 /* \& */
#define TILDE_COMMAND 233 /* \~ */
#define LEFTANGLEBRACKET 234 /* \< */
#define RIGHTANGLEBRACKET 235 /* \> */
#define POUND_COMMAND 236 /* \# */
#define PERCENT_COMMAND 237 /* \% */
#endif /*TRANSLATOR_H_*/

View file

@ -0,0 +1,210 @@
#include "JavaDocConverter.h"
#include <cstdlib>
#include <iostream>
#include <string>
#include <list>
#define APPROX_LINE_LENGTH 64//characters per line allowed
#define TAB_SIZE 8//characters per line allowed
int printSortedTree2 = 0;
//TODO {@link} {@linkplain} {@docRoot}, and other useful doxy commands that are not a javadoc tag
JavaDocConverter::JavaDocConverter()
{
}
JavaDocConverter::~JavaDocConverter()
{
}
/* Sorts entities by javaDoc standard order for commands
* NOTE: will not behave entirely properly until "First level" comments
* such as brief descriptions are TAGGED as such
*/
bool compare_DoxygenEntities(DoxygenEntity first, DoxygenEntity second){
if(first.typeOfEntity.compare("plainstring") == 0) return true;
if(second.typeOfEntity.compare("plainstring") == 0) return false;
if(first.typeOfEntity.compare("param") == 0){
if(second.typeOfEntity.compare("param")== 0) return true;
if(second.typeOfEntity.compare("return")== 0) return true;
if(second.typeOfEntity.compare("exception")== 0) return true;
if(second.typeOfEntity.compare("author")== 0) return true;
if(second.typeOfEntity.compare("version")== 0)return true;
if(second.typeOfEntity.compare("see")== 0)return true;
if(second.typeOfEntity.compare("since")== 0)return true;
if(second.typeOfEntity.compare("deprecated")== 0)return true;
return false;
}
if(first.typeOfEntity.compare("return")== 0){
if(second.typeOfEntity.compare("return")== 0) return true;
if(second.typeOfEntity.compare("exception")== 0) return true;
if(second.typeOfEntity.compare("author")== 0) return true;
if(second.typeOfEntity.compare("version")== 0)return true;
if(second.typeOfEntity.compare("see")== 0)return true;
if(second.typeOfEntity.compare("since")== 0)return true;
if(second.typeOfEntity.compare("deprecated")== 0)return true;
return false;
}
if(first.typeOfEntity.compare("exception")== 0){
if(second.typeOfEntity.compare("exception")== 0) return true;
if(second.typeOfEntity.compare("author")== 0) return true;
if(second.typeOfEntity.compare("version")== 0)return true;
if(second.typeOfEntity.compare("see")== 0)return true;
if(second.typeOfEntity.compare("since")== 0)return true;
if(second.typeOfEntity.compare("deprecated")== 0)return true;
return false;
}
if(first.typeOfEntity.compare("author")== 0){
if(first.typeOfEntity.compare("author")== 0) return true;
if(first.typeOfEntity.compare("version")== 0)return true;
if(first.typeOfEntity.compare("see")== 0)return true;
if(first.typeOfEntity.compare("since")== 0)return true;
if(first.typeOfEntity.compare("deprecated")== 0)return true;
return false;
}
if(first.typeOfEntity.compare("version")== 0){
if(second.typeOfEntity.compare("version")== 0)return true;
if(second.typeOfEntity.compare("see")== 0)return true;
if(second.typeOfEntity.compare("since")== 0)return true;
if(second.typeOfEntity.compare("deprecated")== 0)return true;
return false;
}
if(first.typeOfEntity.compare("see")== 0 || first.typeOfEntity.compare("sa")== 0){
if(second.typeOfEntity.compare("see")== 0)return true;
if(second.typeOfEntity.compare("sa")== 0)return true;
if(second.typeOfEntity.compare("since")== 0)return true;
if(second.typeOfEntity.compare("deprecated")== 0)return true;
return false;
}
if(first.typeOfEntity.compare("since")== 0){
if(second.typeOfEntity.compare("since")== 0) return true;
if(second.typeOfEntity.compare("deprecated")== 0)return true;
return false;
}
if(first.typeOfEntity.compare("deprecated")== 0){
if(second.typeOfEntity.compare("deprecated")== 0)return true;
return false;
}
return true;
}
void JavaDocConverter::printSortedTree(list <DoxygenEntity> &entityList){
list<DoxygenEntity>::iterator p = entityList.begin();
while (p != entityList.end()){
(*p).printEntity(0);
p++;
}
}
string formatCommand(string unformattedLine, int indent){
string formattedLines = "\n * ";
int lastPosition = 0;
int i = 0;
int isFirstLine = 1;
while (i != -1 && i < unformattedLine.length()){
lastPosition = i;
if (isFirstLine){
i+=APPROX_LINE_LENGTH;
}
else i+=APPROX_LINE_LENGTH - indent*TAB_SIZE;
i = unformattedLine.find(" ", i);
if (i > 0 && i + 1 < unformattedLine.length()){
if (!isFirstLine) for (int j = 0; j < indent; j++) {
formattedLines.append("\t");
}
else {
isFirstLine = 0;
}
formattedLines.append(unformattedLine.substr(lastPosition, i - lastPosition + 1));
formattedLines.append("\n *");
}
}
if (lastPosition < unformattedLine.length()){
if (!isFirstLine) {for (int j = 0; j < indent; j++) {formattedLines.append("\t");}}
formattedLines.append(unformattedLine.substr(lastPosition, unformattedLine.length() - lastPosition));
}
return formattedLines;
}
/* Contains the conversions for tags
* could probably be much more efficient...
*/
string javaDocFormat(DoxygenEntity &doxygenEntity){
if (doxygenEntity.typeOfEntity.compare("plainstring") == 0){
return doxygenEntity.data;
}
else if (doxygenEntity.typeOfEntity.compare("brief") == 0){
return doxygenEntity.data;
}
if (doxygenEntity.typeOfEntity.compare("detailed") == 0){
return doxygenEntity.data;
}
else if (doxygenEntity.typeOfEntity.compare("b") == 0){
return "<b>" + doxygenEntity.data + "</b>";
}
else if (doxygenEntity.typeOfEntity.compare("c") == 0){
return "<tt>" + doxygenEntity.data + "</tt>";
}
return "";
}
string translateSubtree( DoxygenEntity &doxygenEntity){
string returnedString;
if (doxygenEntity.isLeaf){ return javaDocFormat(doxygenEntity) + " ";}
else {
returnedString += javaDocFormat(doxygenEntity);
list<DoxygenEntity>::iterator p = doxygenEntity.entityList.begin();
while (p != doxygenEntity.entityList.end()){
returnedString+= translateSubtree(*p);
p++;
}
}
return returnedString;
}
string translateEntity(DoxygenEntity &doxyEntity){
if(doxyEntity.typeOfEntity.compare("plainstring")== 0 || doxyEntity.typeOfEntity.compare("deprecated")== 0 || doxyEntity.typeOfEntity.compare("brief")== 0)
return formatCommand(doxyEntity.data, 0) + "\n * ";
else if(doxyEntity.typeOfEntity.compare("see") == 0){
return formatCommand(string("@" + doxyEntity.typeOfEntity + "\t\t" + translateSubtree(doxyEntity)), 2);
}
else if(doxyEntity.typeOfEntity.compare("return")== 0
|| doxyEntity.typeOfEntity.compare("author")== 0
|| doxyEntity.typeOfEntity.compare("param")== 0
|| doxyEntity.typeOfEntity.compare("since")== 0
|| doxyEntity.typeOfEntity.compare("version")== 0
|| doxyEntity.typeOfEntity.compare("exception") == 0
|| doxyEntity.typeOfEntity.compare("deprecated") == 0){
return formatCommand(string("@" + doxyEntity.typeOfEntity + "\t" + translateSubtree(doxyEntity)), 2);
}
else if(doxyEntity.typeOfEntity.compare("sa")== 0){
return formatCommand(string("@see\t\t" + translateSubtree(doxyEntity)), 2);
}
return "";
}
string JavaDocConverter:: convertToJavaDoc(list <DoxygenEntity> entityList){
entityList.sort(compare_DoxygenEntities);
if(printSortedTree2){
cout << "---RESORTED LIST---" << endl;
printSortedTree(entityList);
}
string javaDocString = "/**";
list<DoxygenEntity>::iterator entityIterator = entityList.begin();
while (entityIterator != entityList.end()){
javaDocString += translateEntity(*entityIterator);
entityIterator++;
}
javaDocString += "\n */\n";
cout << "\n---RESULT IN JAVADOC---" << endl;
cout << javaDocString;
return javaDocString;
}

View file

@ -0,0 +1,18 @@
#include <list>
#include <string>
#include "DoxygenEntity.h"
#ifndef JAVADOCCONVERTER_H_
#define JAVADOCCONVERTER_H_
class JavaDocConverter
{
public:
JavaDocConverter();
string convertToJavaDoc(list <DoxygenEntity> entityList);
~JavaDocConverter();
void printSortedTree(list <DoxygenEntity> &entityList);
};
#endif /*JAVADOCCONVERTER_H_*/

View file

@ -0,0 +1,32 @@
#include "Token.h"
#include <cstdlib>
#include <iostream>
#include <string>
#include <list>
using namespace std;
Token::Token(int tType, string tString)
{
tokenType = tType;
tokenString = tString;
}
string Token::toString()
{
if (tokenType == END_LINE){
return "{END OF LINE}";
}
if (tokenType == PARAGRAPH_END){
return "{END OF PARAGRAPH}";
}
if (tokenType == PLAINSTRING){
return tokenString;
}
if (tokenType == COMMAND){
return "{COMMAND : " + tokenString+ "}";
}
return "";
}
Token:: ~Token(){}

View file

@ -0,0 +1,21 @@
#ifndef TOKEN_H_
#define TOKEN_H_
#include <string>
#define END_LINE 101
#define PARAGRAPH_END 102
#define PLAINSTRING 103
#define COMMAND 104
using namespace std;
class Token
{
public:
Token(int tType, string tString);
~Token();
int tokenType; /* currently can be END_LINE, PLAINSTRING, or COMMAND */
string tokenString; /* the data , such as param for @param*/
string toString();
};
#endif /*TOKEN_H_*/

View file

@ -0,0 +1,116 @@
#include "TokenList.h"
#include <cstdlib>
#include <iostream>
#include <string>
#include <list>
#include "Token.h"
#define TOKENSPERLINE 8; //change this to change the printing behaviour of the token list
#define END_LINE 101
#define PARAGRAPH_END 102 //not used at the moment
#define PLAINSTRING 103
#define COMMAND 104
using namespace std;
list <Token> tokenList;
list<Token>::iterator tokenListIterator;
int noisy2 = 0;
/* The tokenizer*/
TokenList::TokenList(string doxygenString){
int currentIndex = 0;
//Regex whitespace("[ \t]+");
//Regex newLine("[\n]");
//Regex command("[@|\\]{1}[^ \t \n]+"); //the cheap solution
//Regex doxygenFluff("[/*!]+");
int nextIndex = 0;
int isFluff = 0;
string currentWord;
while (currentIndex < doxygenString.length()){
if(doxygenString[currentIndex] == '\n'){
tokenList.push_back(Token(END_LINE, currentWord));
currentIndex++;
}
while(currentIndex < doxygenString.length() && (doxygenString[currentIndex] == ' '
|| doxygenString[currentIndex]== '\t')) currentIndex ++;
if (currentIndex == doxygenString.length()) {} //do nothing since end of string was reached
else {nextIndex = currentIndex;
while (nextIndex < doxygenString.length() && (doxygenString[nextIndex] != ' '
&& doxygenString[nextIndex]!= '\t' && doxygenString[nextIndex]!= '\n')) nextIndex++;
currentWord = doxygenString.substr(currentIndex, nextIndex-currentIndex);
if(noisy2) cout << "Current Word: " << currentWord << endl;
if (currentWord[0] == '@' || currentWord[0] == '\\'){
currentWord = currentWord.substr(1, currentWord.length()-1);
tokenList.push_back(Token(COMMAND, currentWord));
}
else if (currentWord[0] == '\n'){
//if ((tokenList.back()).tokenType == END_LINE){}
tokenList.push_back(Token(END_LINE, currentWord));
}
else if (currentWord[0] == '*' || currentWord[0] == '/' ||currentWord[0] == '!'){
if (currentWord.length() == 1) {isFluff = 1;}
else { isFluff = 1;
for(int i = 1; i < currentWord.length(); i++){
if (currentWord[0] != '*' && currentWord[0] != '/' && currentWord[0] != '!') isFluff = 0;
}
}
if(!isFluff) tokenList.push_back(Token(PLAINSTRING, currentWord));
}
else tokenList.push_back(Token(PLAINSTRING, currentWord));
currentIndex = nextIndex;
}
}
tokenListIterator = tokenList.begin();
}
Token TokenList::peek(){
if(tokenListIterator!= tokenList.end()){
Token returnedToken = (*tokenListIterator);
return returnedToken;
}
else
return Token(0, "");
}
Token TokenList::next(){
if(tokenListIterator != tokenList.end()){
Token returnedToken = (*tokenListIterator);
tokenListIterator++;
return (returnedToken);
}
else
return Token(0, "");
}
list<Token>::iterator TokenList::end(){
return tokenList.end();
}
list<Token>::iterator TokenList::current(){
return tokenListIterator;
}
void TokenList::printList(){
list<Token>::iterator p = tokenList.begin();
int i = 1;
int b = 0;
while (p != tokenList.end()){
cout << (*p).toString() << " ";
b = i%TOKENSPERLINE;
if (b == 0) cout << endl;
p++; i++;
}
}
list<Token>::iterator TokenList::iteratorCopy(){
list<Token>::iterator p = tokenListIterator;
return p;
}
void TokenList::setIterator(list<Token>::iterator newPosition){
tokenListIterator = newPosition;
}
TokenList:: ~TokenList(){
tokenList.clear();
}

View file

@ -0,0 +1,27 @@
#ifndef TOKENLIST_H_
#define TOKENLIST_H_
#include <cstdlib>
#include <iostream>
#include <string>
#include <list>
#include "Token.h"
using namespace std;
/* a small class used to represent the sequence of tokens
* that can be derived from a formatted doxygen string
*/
class TokenList{
public:
TokenList(string doxygenString); /* constructor takes a blob of Doxygen comment */
~TokenList();
Token peek(); /* returns next token without advancing */
Token next(); /* returns next token and advances */
list<Token>::iterator end(); /* returns an end iterator */
list<Token>::iterator current(); /* returns the current iterator */
void printList(); /* prints out the sequence of tokens */
list<Token>::iterator iteratorCopy(); /* returns a copy of the current iterator */
void setIterator(list<Token>::iterator newPosition); /*moves up the iterator*/
};
#endif /*TOKENLIST_H_*/

View file

@ -0,0 +1,68 @@
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>
#include <list>
using namespace std;
/* This classes primary function is to test the basic text processing abilities of
* the Doxygen parsing class
* It is currently a little messy */
int testCommandParsingFunctions = 1;
int testCodeCrawlingFunctions = 1;
/* Testing clearFluff(), a method to scan past all excess / * ! from beginning of
* a comment blob. Compartmentalised simply because this is a comment habit that
* differs wildly */
int testClearFluff(){
string cases[] = {"/** WORD", "/*! WORD", "/******* WORD", "///// WORD", "//! WORD", "//! WORD", "///WORD",
"/**\nWORD", "/**\n*WORD", "/** \n WORD"};
return 1;
};
int testCCF(){
cout << "Testing getNextWord" << endl;
// Case 1: \command <name>
string case1 = "\b word";
string case2 = "\b word ";
string case3 = "\b word\n";
string case4 = "\b word \n";
string case5 = "\b word word";
//Case 2: \command {paragraph}
//Case 3: \command (text til end of line)
return 1;
}
int testCPF(){
// Case 1: \command <name>
string case1 = "\b word";
//Case 2: \command {paragraph}
//Case 3: \command (text til end of line)
return 1;
}
int main(int argc, char *argv[]){
if(testCodeCrawlingFunctions) testCCF();
if(testCommandParsingFunctions) testCPF();
return 1;
}

View file

@ -0,0 +1,11 @@
#ifndef TRANSLATORTEST_H_
#define TRANSLATORTEST_H_
class TranslatorTest
{
public:
TranslatorTest();
virtual ~TranslatorTest();
};
#endif /*TRANSLATORTEST_H_*/

View file

@ -88,7 +88,19 @@ eswig_SOURCES = CParse/cscanner.c \
Swig/typemap.c \
Swig/typesys.c \
Swig/warn.c \
Swig/wrapfunc.c
Swig/wrapfunc.c \
DoxygenTranslator/src/DoxygenEntity.h\
DoxygenTranslator/src/DoxygenEntity.cpp\
DoxygenTranslator/src/DoxygenParser.h\
DoxygenTranslator/src/DoxygenParser.cpp\
DoxygenTranslator/src/DoxygenTranslator.h\
DoxygenTranslator/src/DoxygenTranslator.cpp\
DoxygenTranslator/src/JavaDocConverter.h\
DoxygenTranslator/src/JavaDocConverter.cpp\
DoxygenTranslator/src/Token.h\
DoxygenTranslator/src/Token.cpp\
DoxygenTranslator/src/TokenList.h\
DoxygenTranslator/src/TokenList.cpp
bin_PROGRAMS = eswig
eswig_LDADD = @SWIGLIBS@

View file

@ -13,6 +13,7 @@ char cvsroot_java_cxx[] = "$Id$";
#include <limits.h> // for INT_MAX
#include "cparse.h"
#include <ctype.h>
#include "../DoxygenTranslator/src/DoxygenTranslator.h"
/* Hash type used for upcalls from C/C++ */
typedef DOH UpcallData;
@ -43,7 +44,7 @@ class JAVA:public Language {
bool global_variable_flag; // Flag for when wrapping a global variable
bool old_variable_names; // Flag for old style variable names in the intermediary class
bool member_func_flag; // flag set when wrapping a member function
String *imclass_name; // intermediary class name
String *module_class_name; // module class name
String *imclass_class_code; // intermediary class code
@ -70,7 +71,8 @@ class JAVA:public Language {
String *imclass_cppcasts_code; //C++ casts up inheritance hierarchies intermediary class code
String *imclass_directors; // Intermediate class director code
String *destructor_call; //C++ destructor call if any
String *structuralComments;
// Director method stuff:
List *dmethods_seq;
Hash *dmethods_table;
@ -87,6 +89,11 @@ class JAVA:public Language {
Setline(p, Getline(n));
return p;
}
/* DOXYGEN TO JAVADOC globals */
bool doxygen_javadoc_flag; //flag for converting found doxygen to javadoc
//TODO make this bool a command line option
DoxygenTranslator doxyTranslator;
public:
@ -141,6 +148,7 @@ public:
imclass_cppcasts_code(NULL),
imclass_directors(NULL),
destructor_call(NULL),
structuralComments(NULL),
dmethods_seq(NULL),
dmethods_table(NULL),
n_dmethods(0),
@ -149,6 +157,7 @@ public:
should be easy to implement though */
director_multiple_inheritance = 0;
director_language = 1;
doxyTranslator = DoxygenTranslator();
}
/* -----------------------------------------------------------------------------
@ -202,6 +211,7 @@ public:
virtual void main(int argc, char *argv[]) {
doxygen_javadoc_flag = true;
SWIG_library_directory("java");
// Look for certain command line options
@ -355,6 +365,7 @@ public:
imclass_imports = NewString("");
imclass_cppcasts_code = NewString("");
imclass_directors = NewString("");
structuralComments = NewString("");
upcasts_code = NewString("");
dmethods_seq = NewList();
dmethods_table = NewHash();
@ -432,6 +443,8 @@ public:
// Start writing out the intermediary class file
emitBanner(f_im);
if (Len(package) > 0)
Printf(f_im, "package %s;\n", package);
@ -482,13 +495,22 @@ public:
// Start writing out the module class file
emitBanner(f_module);
//Add any structural comments to the top
if(doxygen_javadoc_flag && structuralComments){
Printf(f_module, "%s", structuralComments);
}
if (Len(package) > 0)
Printf(f_module, "package %s;\n", package);
if (module_imports)
Printf(f_module, "%s\n", module_imports);
if (doxygen_javadoc_flag){
if (Getattr(n,"DoxygenComment")){
Printf(f_module, "/* This was generated from top() */");
Printf(f_module, doxyTranslator.convert(Char((String *)Getattr(n,"DoxygenComment")),"JAVADOC"));
}
}
if (Len(module_class_modifiers) > 0)
Printf(f_module, "%s ", module_class_modifiers);
Printf(f_module, "%s ", module_class_name);
@ -921,7 +943,7 @@ public:
Delete(c_param_type);
Delete(arg);
}
Printv(f->code, nondir_args, NIL);
Delete(nondir_args);
@ -1135,6 +1157,7 @@ public:
return ret;
}
/* ----------------------------------------------------------------------
* enumDeclaration()
*
@ -1205,7 +1228,15 @@ public:
// Add extra indentation
Replaceall(enum_code, "\n", "\n ");
Replaceall(enum_code, " \n", "\n");
//translate and write javadoc comment if flagged
if (doxygen_javadoc_flag){
if (Getattr(n,"DoxygenComment")){
Printv(proxy_class_constants_code, "/* This was generated from enumvalueDeclaration */", NIL );
Printv(proxy_class_constants_code, doxyTranslator.convert(Char((const String *)Getattr(n,"DoxygenComment")),"JAVADOC"), NIL);
}
}
Printv(proxy_class_constants_code, " ", enum_code, "\n\n", NIL);
} else {
// Global enums are defined in their own file
@ -1267,7 +1298,14 @@ public:
tmpValue = NewString(name);
// Note that this is used in enumValue() amongst other places
Setattr(n, "value", tmpValue);
//translate and write javadoc comment if flagged
if (doxygen_javadoc_flag){
if (Getattr(n,"DoxygenComment")){
Printf(enum_code, "/* This was generated from enumvalueDeclaration() */" );
Printf(enum_code, doxyTranslator.convert(Char((String *)Getattr(n,"DoxygenComment")),"JAVADOC"));
}
}
{
EnumFeature enum_feature = decodeEnumFeature(parentNode(n));
@ -1326,6 +1364,21 @@ public:
return SWIG_OK;
}
/* -----------------------------------------------------------------------
* doxygenComment()
* Simply translates the doxygen comment and places it into the appropriate
* file
* ------------------------------------------------------------------------ */
virtual int doxygenComment(Node *n){
if (doxygen_javadoc_flag){
if (Getattr(n,"DoxygenComment")){
Printv(structuralComments, "/* This was generated from doxygenComment() */\n", NIL);
Printv(structuralComments, doxyTranslator.convert(Char((String *)Getattr(n,"DoxygenComment")),"JAVADOC"), NIL);
}
}
return SWIG_OK;
}
/* -----------------------------------------------------------------------
* constantWrapper()
* Used for wrapping constants - #define or %constant.
@ -1344,7 +1397,14 @@ public:
String *tm;
String *return_type = NewString("");
String *constants_code = NewString("");
//translate and write javadoc comment if flagged
if (doxygen_javadoc_flag){
if (Getattr(n,"DoxygenComment")){
Printf(constants_code, "/* This was generated from enumvalueDeclaration */\n");
Printf(constants_code, doxyTranslator.convert(Char((String *)Getattr(n,"DoxygenComment")),"JAVADOC"));
}
}
if (!addSymbol(symname, n))
return SWIG_ERROR;
@ -1605,7 +1665,15 @@ public:
// Pure Java interfaces
const String *pure_interfaces = typemapLookup("javainterfaces", typemap_lookup_type, WARN_NONE);
//translate and write javadoc comment if flagged
if (doxygen_javadoc_flag){
if (Getattr(n,"DoxygenComment")){
Printv(proxy_class_def, "/* This was generated from emitProxyClassDefAndCPPCasts() */\n", NIL );
Printv(proxy_class_def, doxyTranslator.convert(Char((String *)Getattr(n,"DoxygenComment")),"JAVADOC"), NIL);
}
}
// Start writing the proxy class
Printv(proxy_class_def, typemapLookup("javaimports", typemap_lookup_type, WARN_NONE), // Import statements
"\n", typemapLookup("javaclassmodifiers", typemap_lookup_type, WARN_JAVA_TYPEMAP_CLASSMOD_UNDEF), // Class modifiers
@ -1754,9 +1822,10 @@ public:
// Start writing out the proxy class file
emitBanner(f_proxy);
if (Len(package) > 0)
if (Len(package) > 0){
Printf(f_proxy, "LETS TEST THIS NAO THX \n\n\n");
Printf(f_proxy, "package %s;\n", package);
}
Clear(proxy_class_def);
Clear(proxy_class_code);
@ -1936,7 +2005,16 @@ public:
// For wrapping member variables (Javabean setter)
setter_flag = (Cmp(Getattr(n, "sym:name"), Swig_name_set(Swig_name_member(proxy_class_name, variable_name))) == 0);
}
//translate and write javadoc comment if flagged
if (doxygen_javadoc_flag){
if (Getattr(n,"DoxygenComment")){
Printf(function_code, "/* This was generated from proxyclassfunctionhandler */");
Printf(function_code, doxyTranslator.convert(Char((String *)Getattr(n,"DoxygenComment")),"JAVADOC"));
}
}
/* Start generating the proxy function */
const String *methodmods = Getattr(n, "feature:java:methodmodifiers");
methodmods = methodmods ? methodmods : (is_public(n) ? public_string : protected_string);
@ -2158,7 +2236,15 @@ public:
tm = Getattr(n, "tmap:jtype"); // typemaps were attached earlier to the node
Printf(im_return_type, "%s", tm);
//translate and write javadoc comment if flagged
if (doxygen_javadoc_flag){
if (Getattr(n,"DoxygenComment")){
Printf(function_code, "/* This was generated from constructionhandler */\n" );
Printf(function_code, doxyTranslator.convert(Char((String *)Getattr(n,"DoxygenComment")),"JAVADOC"));
}
}
Printf(function_code, " %s %s(", methodmods, proxy_class_name);
Printf(helper_code, " static private %s SwigConstruct%s(", im_return_type, proxy_class_name);
@ -2419,6 +2505,14 @@ public:
bool setter_flag = false;
String *pre_code = NewString("");
String *post_code = NewString("");
//translate and write javadoc comment if flagged
if (doxygen_javadoc_flag){
if (Getattr(n,"DoxygenComment")){
Printf(function_code, "/* This was generated from moduleClassFunctionHandler() */\n" );
Printf(function_code, doxyTranslator.convert(Char((String *)Getattr(n,"DoxygenComment")),"JAVADOC"));
}
}
if (l) {
if (SwigType_type(Getattr(l, "type")) == T_VOID) {
@ -2814,6 +2908,7 @@ public:
const String *pure_baseclass = typemapLookup("javabase", type, WARN_NONE);
const String *pure_interfaces = typemapLookup("javainterfaces", type, WARN_NONE);
// Emit the class
Printv(swigtype, typemapLookup("javaimports", type, WARN_NONE), // Import statements
"\n", typemapLookup("javaclassmodifiers", type, WARN_JAVA_TYPEMAP_CLASSMOD_UNDEF), // Class modifiers

View file

@ -132,6 +132,12 @@ int Dispatcher::emit_one(Node *n) {
ret = namespaceDeclaration(n);
} else if (strcmp(tag, "template") == 0) {
ret = templateDeclaration(n);
}
/* ===============================================================
* Doxygen Comment
* =============================================================== */
else if (strcmp(tag, "doxycomm") == 0) {
ret = doxygenComment(n);
}
/* ===============================================================
@ -296,7 +302,9 @@ int Dispatcher::usingDeclaration(Node *n) {
int Dispatcher::namespaceDeclaration(Node *n) {
return defaultHandler(n);
}
int Dispatcher::doxygenComment(Node *n){
return defaultHandler(n);
}
/* Allocators */
Language::Language():
@ -2817,6 +2825,17 @@ int Language::usingDeclaration(Node *n) {
/* Stubs. Language modules need to implement these */
/* ----------------------------------------------------------------------
* Language::doxygenComment()
* ---------------------------------------------------------------------- */
int Language::doxygenComment(Node *n){
String *comment = Getattr(n, "comment");
return SWIG_OK;
}
/* ----------------------------------------------------------------------
* Language::constantWrapper()
* ---------------------------------------------------------------------- */

View file

@ -82,6 +82,9 @@ public:
virtual int typemapcopyDirective(Node *n);
virtual int typesDirective(Node *n);
/* Doxygen Comment */
virtual int doxygenComment(Node *n);
/* C/C++ parsing */
virtual int cDeclaration(Node *n);
@ -159,6 +162,9 @@ public:
virtual int namespaceDeclaration(Node *n);
virtual int usingDeclaration(Node *n);
/* C/C++ parsing */
virtual int doxygenComment(Node *n);
/* Function handlers */
virtual int functionHandler(Node *n);

View file

@ -4,7 +4,7 @@
# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
# Inc.
timestamp='2006-07-02'
timestamp='2007-07-22'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@ -161,6 +161,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;;
sh5el) machine=sh5le-unknown ;;
*) machine=${UNAME_MACHINE_ARCH}-unknown ;;
esac
# The Operating System including object format, if it has switched
@ -329,7 +330,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
i86pc:SunOS:5.*:*)
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
sun4*:SunOS:6*:*)
@ -780,7 +781,7 @@ EOF
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
exit ;;
i*:MINGW*:*)
*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
i*:windows32*:*)
@ -790,12 +791,15 @@ EOF
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
exit ;;
x86:Interix*:[3456]*)
echo i586-pc-interix${UNAME_RELEASE}
exit ;;
EM64T:Interix*:[3456]*)
echo x86_64-unknown-interix${UNAME_RELEASE}
exit ;;
*:Interix*:[3456]*)
case ${UNAME_MACHINE} in
x86)
echo i586-pc-interix${UNAME_RELEASE}
exit ;;
EM64T | authenticamd)
echo x86_64-unknown-interix${UNAME_RELEASE}
exit ;;
esac ;;
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
echo i${UNAME_MACHINE}-pc-mks
exit ;;
@ -950,6 +954,9 @@ EOF
x86_64:Linux:*:*)
echo x86_64-unknown-linux-gnu
exit ;;
xtensa:Linux:*:*)
echo xtensa-unknown-linux-gnu
exit ;;
i*86:Linux:*:*)
# The BFD linker knows what the default object file format is, so
# first see if it will tell us. cd to the root directory to prevent
@ -1208,6 +1215,15 @@ EOF
SX-6:SUPER-UX:*:*)
echo sx6-nec-superux${UNAME_RELEASE}
exit ;;
SX-7:SUPER-UX:*:*)
echo sx7-nec-superux${UNAME_RELEASE}
exit ;;
SX-8:SUPER-UX:*:*)
echo sx8-nec-superux${UNAME_RELEASE}
exit ;;
SX-8R:SUPER-UX:*:*)
echo sx8r-nec-superux${UNAME_RELEASE}
exit ;;
Power*:Rhapsody:*:*)
echo powerpc-apple-rhapsody${UNAME_RELEASE}
exit ;;

View file

@ -4,7 +4,7 @@
# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
# Inc.
timestamp='2006-09-20'
timestamp='2007-06-28'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@ -245,12 +245,12 @@ case $basic_machine in
| bfin \
| c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
| fr30 | frv \
| fido | fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
| maxq | mb | microblaze | mcore \
| maxq | mb | microblaze | mcore | mep \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
@ -324,7 +324,7 @@ case $basic_machine in
| clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| i*86-* | i860-* | i960-* | ia64-* \
@ -475,8 +475,8 @@ case $basic_machine in
basic_machine=craynv-cray
os=-unicosmp
;;
cr16c)
basic_machine=cr16c-unknown
cr16)
basic_machine=cr16-unknown
os=-elf
;;
crds | unos)
@ -683,6 +683,10 @@ case $basic_machine in
basic_machine=i386-pc
os=-mingw32
;;
mingw32ce)
basic_machine=arm-unknown
os=-mingw32ce
;;
miniframe)
basic_machine=m68000-convergent
;;
@ -925,6 +929,9 @@ case $basic_machine in
basic_machine=sh-hitachi
os=-hms
;;
sh5el)
basic_machine=sh5le-unknown
;;
sh64)
basic_machine=sh64-unknown
;;
@ -1219,7 +1226,7 @@ case $os in
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
| -skyos* | -haiku* | -rdos* | -toppers*)
| -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@ -1414,6 +1421,9 @@ case $basic_machine in
m68*-cisco)
os=-aout
;;
mep-*)
os=-elf
;;
mips*-cisco)
os=-elf
;;