diff options
Diffstat (limited to 'addon')
49 files changed, 469 insertions, 1053 deletions
diff --git a/addon/doxmlparser/CMakeLists.txt b/addon/doxmlparser/CMakeLists.txt new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/addon/doxmlparser/CMakeLists.txt diff --git a/addon/doxmlparser/src/Makefile.in b/addon/doxmlparser/src/Makefile.in deleted file mode 100644 index 47d20c2..0000000 --- a/addon/doxmlparser/src/Makefile.in +++ /dev/null @@ -1,15 +0,0 @@ -all clean depend: Makefile.doxmlparser - $(MAKE) -f Makefile.doxmlparser $@ - -distclean: clean - $(RM) -rf Makefile.doxmlparser doxmlparser.pro Makefile obj - -realclean: distclean - -tmake: - $(ENV) $(PERL) $(TMAKE) doxmlparser.pro >Makefile.doxmlparser - -Makefile.doxmlparser: doxmlparser.pro - $(ENV) $(PERL) $(TMAKE) doxmlparser.pro >Makefile.doxmlparser - -install: diff --git a/addon/doxmlparser/src/basehandler.h b/addon/doxmlparser/src/basehandler.h index 31fbf24..5715dda 100644 --- a/addon/doxmlparser/src/basehandler.h +++ b/addon/doxmlparser/src/basehandler.h @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxmlparser/src/baseiterator.h b/addon/doxmlparser/src/baseiterator.h index 2ee9c2f..3325f54 100644 --- a/addon/doxmlparser/src/baseiterator.h +++ b/addon/doxmlparser/src/baseiterator.h @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxmlparser/src/compoundhandler.cpp b/addon/doxmlparser/src/compoundhandler.cpp index 87b0440..3e729e9 100644 --- a/addon/doxmlparser/src/compoundhandler.cpp +++ b/addon/doxmlparser/src/compoundhandler.cpp @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxmlparser/src/compoundhandler.h b/addon/doxmlparser/src/compoundhandler.h index c7e5ac0..f669133 100644 --- a/addon/doxmlparser/src/compoundhandler.h +++ b/addon/doxmlparser/src/compoundhandler.h @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxmlparser/src/dochandler.cpp b/addon/doxmlparser/src/dochandler.cpp index df71e6a..4e25813 100644 --- a/addon/doxmlparser/src/dochandler.cpp +++ b/addon/doxmlparser/src/dochandler.cpp @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxmlparser/src/dochandler.h b/addon/doxmlparser/src/dochandler.h index 6bc2bd9..4340dbd 100644 --- a/addon/doxmlparser/src/dochandler.h +++ b/addon/doxmlparser/src/dochandler.h @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxmlparser/src/doxmlintf.h b/addon/doxmlparser/src/doxmlintf.h index ba863d4..22cecdb 100644 --- a/addon/doxmlparser/src/doxmlintf.h +++ b/addon/doxmlparser/src/doxmlintf.h @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxmlparser/src/doxmlparser.pro.in b/addon/doxmlparser/src/doxmlparser.pro.in deleted file mode 100644 index 2bbf326..0000000 --- a/addon/doxmlparser/src/doxmlparser.pro.in +++ /dev/null @@ -1,27 +0,0 @@ -TEMPLATE = lib.t -CONFIG = console staticlib warn_on $extraopts -HEADERS = basehandler.h mainhandler.h \ - compoundhandler.h sectionhandler.h \ - memberhandler.h paramhandler.h \ - dochandler.h linkedtexthandler.h \ - debug.h graphhandler.h stringimpl.h \ - loamhandler.h -SOURCES = mainhandler.cpp \ - compoundhandler.cpp sectionhandler.cpp \ - memberhandler.cpp paramhandler.cpp \ - dochandler.cpp linkedtexthandler.cpp \ - basehandler.cpp debug.cpp graphhandler.cpp \ - loamhandler.cpp -unix:LIBS += -L../../../lib -lqtools -win32:INCLUDEPATH += . -win32-mingw:LIBS += -L../../../lib -lqtools -win32-msvc:LIBS += qtools.lib shell32.lib -win32-msvc:TMAKE_LFLAGS += /LIBPATH:....\\..\lib -win32-borland:LIBS += qtools.lib doxycfg.lib shell32.lib -win32-borland:TMAKE_LFLAGS += -L..\..\..\lib -win32:TMAKE_CXXFLAGS += -DQT_NODLL -DESTDIR = ../../../lib -OBJECTS_DIR = ../../../objects/doxmlparser -TARGET = doxmlparser -INCLUDEPATH += ../../../qtools ../include - diff --git a/addon/doxmlparser/src/graphhandler.h b/addon/doxmlparser/src/graphhandler.h index 090c62a..783b9f2 100644 --- a/addon/doxmlparser/src/graphhandler.h +++ b/addon/doxmlparser/src/graphhandler.h @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxmlparser/src/linkedtexthandler.cpp b/addon/doxmlparser/src/linkedtexthandler.cpp index fe45133..1164688 100644 --- a/addon/doxmlparser/src/linkedtexthandler.cpp +++ b/addon/doxmlparser/src/linkedtexthandler.cpp @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxmlparser/src/linkedtexthandler.h b/addon/doxmlparser/src/linkedtexthandler.h index cebdeb0..816726e 100644 --- a/addon/doxmlparser/src/linkedtexthandler.h +++ b/addon/doxmlparser/src/linkedtexthandler.h @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxmlparser/src/loamhandler.h b/addon/doxmlparser/src/loamhandler.h index a113aa9..48a9952 100644 --- a/addon/doxmlparser/src/loamhandler.h +++ b/addon/doxmlparser/src/loamhandler.h @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxmlparser/src/mainhandler.cpp b/addon/doxmlparser/src/mainhandler.cpp index 48c77fa..93525f0 100644 --- a/addon/doxmlparser/src/mainhandler.cpp +++ b/addon/doxmlparser/src/mainhandler.cpp @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxmlparser/src/mainhandler.h b/addon/doxmlparser/src/mainhandler.h index 270f417..21e9b0a 100644 --- a/addon/doxmlparser/src/mainhandler.h +++ b/addon/doxmlparser/src/mainhandler.h @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxmlparser/src/memberhandler.cpp b/addon/doxmlparser/src/memberhandler.cpp index ea55333..7a3f228 100644 --- a/addon/doxmlparser/src/memberhandler.cpp +++ b/addon/doxmlparser/src/memberhandler.cpp @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxmlparser/src/memberhandler.h b/addon/doxmlparser/src/memberhandler.h index a84cc79..7438172 100644 --- a/addon/doxmlparser/src/memberhandler.h +++ b/addon/doxmlparser/src/memberhandler.h @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxmlparser/src/paramhandler.cpp b/addon/doxmlparser/src/paramhandler.cpp index e6d3db1..831d5e4 100644 --- a/addon/doxmlparser/src/paramhandler.cpp +++ b/addon/doxmlparser/src/paramhandler.cpp @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxmlparser/src/paramhandler.h b/addon/doxmlparser/src/paramhandler.h index 7ecf711..3f0f09b 100644 --- a/addon/doxmlparser/src/paramhandler.h +++ b/addon/doxmlparser/src/paramhandler.h @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxmlparser/src/sectionhandler.cpp b/addon/doxmlparser/src/sectionhandler.cpp index bb43925..1137901 100644 --- a/addon/doxmlparser/src/sectionhandler.cpp +++ b/addon/doxmlparser/src/sectionhandler.cpp @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxmlparser/src/sectionhandler.h b/addon/doxmlparser/src/sectionhandler.h index 2730307..a212e62 100644 --- a/addon/doxmlparser/src/sectionhandler.h +++ b/addon/doxmlparser/src/sectionhandler.h @@ -3,7 +3,7 @@ * $Id$ * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxyapp/CMakeLists.txt b/addon/doxyapp/CMakeLists.txt new file mode 100644 index 0000000..a039762 --- /dev/null +++ b/addon/doxyapp/CMakeLists.txt @@ -0,0 +1,28 @@ +if (build_app) + +find_package(Iconv) + +include_directories( + ${CMAKE_SOURCE_DIR}/src + ${CMAKE_SOURCE_DIR}/qtools + ${ICONV_INCLUDE_DIR} +) + +add_executable(doxyapp +doxyapp.cpp +) +target_link_libraries(doxyapp +_doxygen +qtools +md5 +doxycfg +vhdlparser +${ICONV_LIBRARIES} +${CMAKE_THREAD_LIBS_INIT} +${SQLITE3_LIBRARIES} +${EXTRA_LIBS} +) + +install(TARGETS doxyapp DESTINATION bin) + +endif() diff --git a/addon/doxyapp/Makefile.in b/addon/doxyapp/Makefile.in deleted file mode 100644 index d0629d9..0000000 --- a/addon/doxyapp/Makefile.in +++ /dev/null @@ -1,19 +0,0 @@ - -all clean depend distclean: Makefile.doxyapp - $(MAKE) -f Makefile.doxyapp $@ - -distclean: clean - $(RM) -rf Makefile doxyapp.pro Makefile.doxyapp - -realclean: distclean - -tmake: - $(ENV) $(PERL) "$(TMAKE)" doxyapp.pro >Makefile.doxyapp - -strip: - strip doxyapp - -Makefile.doxyapp: doxyapp.pro - $(ENV) $(PERL) "$(TMAKE)" doxyapp.pro >Makefile.doxyapp - -install: diff --git a/addon/doxyapp/doxyapp.cpp b/addon/doxyapp/doxyapp.cpp index e73d12a..6564981 100644 --- a/addon/doxyapp/doxyapp.cpp +++ b/addon/doxyapp/doxyapp.cpp @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -26,7 +26,8 @@ */ #include <stdlib.h> -#include <unistd.h> +#include <qfile.h> +#include <qdir.h> #include "doxygen.h" #include "outputgen.h" #include "parserintf.h" @@ -308,10 +309,10 @@ int main(int argc,char **argv) } // remove temporary files - if (!Doxygen::objDBFileName.isEmpty()) unlink(Doxygen::objDBFileName); - if (!Doxygen::entryDBFileName.isEmpty()) unlink(Doxygen::entryDBFileName); + if (!Doxygen::objDBFileName.isEmpty()) QFile::remove(Doxygen::objDBFileName); + if (!Doxygen::entryDBFileName.isEmpty()) QFile::remove(Doxygen::entryDBFileName); // clean up after us - rmdir("/tmp/doxygen"); + QDir().rmdir("/tmp/doxygen"); while (1) { diff --git a/addon/doxyapp/doxyapp.pro.in b/addon/doxyapp/doxyapp.pro.in deleted file mode 100644 index 7a8c5ee..0000000 --- a/addon/doxyapp/doxyapp.pro.in +++ /dev/null @@ -1,12 +0,0 @@ -TEMPLATE = app.t -CONFIG = console warn_on debug -HEADERS = -SOURCES = doxyapp.cpp -LIBS += -L../../lib -ldoxygen -lqtools -lmd5 -ldoxycfg -lpthread -liconv -DESTDIR = -OBJECTS_DIR = ../../objects/doxyapp -TARGET = ../../bin/doxyapp -INCLUDEPATH += ../../qtools ../../src -DEPENDPATH += ../../src -TARGETDEPS = ../../lib/libdoxygen.a - diff --git a/addon/doxypysql/search.py b/addon/doxypysql/search.py index d0c88c0..c185138 100755 --- a/addon/doxypysql/search.py +++ b/addon/doxypysql/search.py @@ -14,6 +14,7 @@ import sys import os import getopt import json +import re class MemberType: Define="0" @@ -28,6 +29,7 @@ class MemberType: DCOP="9" Property="10" Event="11" + File="12" class RequestType: References="9901" @@ -38,252 +40,253 @@ class RequestType: BaseClasses="9906" SubClasses="9907" -g_conn=None +g_use_regexp=False ############################################################################### -def escapeLike(val): - return 'LIKE "%' + val.replace("\\", "\\\\").replace("_", "\\_") \ - .replace("%", "\\%") + '%" ESCAPE "\\"' +# case-insensitive sqlite regexp function +def re_fn(expr, item): + reg = re.compile(expr, re.I) + return reg.search(item) is not None -def matchName(name): - if type(name) is str: - return "name "+escapeLike(name) - else: - return 'id=%d' %name - -def fileName(id_file): - if g_conn.execute("SELECT COUNT(*) FROM files WHERE id=?",[id_file]).fetchone()[0] > 1: - print "non-uniq fileid" - - for r in g_conn.execute("SELECT * FROM files WHERE id=?",[id_file]).fetchall(): - return r['name'] +def openDb(dbname): + if dbname == None: + dbname = "doxygen_sqlite3.db" - return "" + if not os.path.isfile(dbname): + raise BaseException("No such file %s" % dbname ) -def fileId(name): - if g_conn.execute("SELECT COUNT(*) FROM files WHERE name=?",[name]).fetchone()[0] > 1: - print "non-uniq file name" + conn = sqlite3.connect(dbname) + conn.execute('PRAGMA temp_store = MEMORY;') + conn.row_factory = sqlite3.Row + conn.create_function("REGEXP", 2, re_fn) + return conn +############################################################################### +class Finder: + def __init__(self,cn,name,row_type=str): + self.cn=cn + self.name=name + self.row_type=row_type + + def match(self,row): + if self.row_type is int: + return " id=?" + else: + if g_use_regexp == True: + return " REGEXP (?,%s)" %row + else: + return " %s=?" %row - for r in g_conn.execute("SELECT * FROM files WHERE name=?",[name]).fetchall(): - return r['id'] + def fileName(self,id_file): + if self.cn.execute("SELECT COUNT(*) FROM files WHERE rowid=?",[id_file]).fetchone()[0] > 1: + print >>sys.stderr,"WARNING: non-uniq fileid [%s]. Considering only the first match." % id_file - return -1 + for r in self.cn.execute("SELECT * FROM files WHERE rowid=?",[id_file]).fetchall(): + return r['name'] -############################################################################### + return "" -def findReferences(name): - o=[] + def fileId(self,name): + if self.cn.execute("SELECT COUNT(*) FROM files WHERE"+self.match("name"),[name]).fetchone()[0] > 1: + print >>sys.stderr,"WARNING: non-uniq file name [%s]. Considering only the first match." % name - cur = g_conn.cursor() - cur.execute("SELECT refid FROM memberdef WHERE name=?",[name]) - refids = cur.fetchall() + for r in self.cn.execute("SELECT rowid FROM files WHERE"+self.match("name"),[name]).fetchall(): + return r[0] - if len(refids) == 0: + return -1 +############################################################################### + def references(self): + o=[] + cur = self.cn.cursor() + cur.execute("SELECT refid FROM memberdef WHERE"+self.match("name"),[self.name]) + refids = cur.fetchall() + + if len(refids) == 0: + return o + + refid = refids[0]['refid'] + cur = self.cn.cursor() + #TODO:SELECT rowid from refids where refid=refid + for info in cur.execute("SELECT * FROM xrefs WHERE refid_dst LIKE '%"+refid+"%'"): + item={} + cur = self.cn.cursor() + for i2 in cur.execute("SELECT * FROM memberdef WHERE refid=?",[info['src']]): + item['name']=i2['name'] + item['src']=info['src'] + item['file']=self.fileName(info['id_file']) + item['line']=info['line'] + + o.append(item) return o - - refid = refids[0]['refid'] - cur = g_conn.cursor() - for info in cur.execute("SELECT * FROM xrefs WHERE dst LIKE '%"+refid+"%'"): - item={} - cur = g_conn.cursor() - for i2 in cur.execute("SELECT * FROM memberdef WHERE refid=?",[info['src']]): - item['name']=i2['name'] - item['src']=info['src'] - item['file']=fileName(info['id_file']) - item['line']=info['line'] - - o.append(item) - return o - - -def findFunction(name): - o=[] - for r in g_conn.execute('SELECT * FROM memberdef WHERE '+matchName(name)+' AND kind=?',[MemberType.Function]).fetchall(): - item={} - item['name'] = r['name'] - item['definition'] = r['definition'] - item['argsstring'] = r['argsstring'] - item['file'] = fileName(r['id_file']) - item['line'] = r['line'] - item['detaileddescription'] = r['detaileddescription'] - o.append(item) - return o - - -def findMacro(name): - o=[] - for r in g_conn.execute('SELECT * FROM memberdef WHERE '+matchName(name)+' AND kind=?',[MemberType.Define]).fetchall(): - item={} - item['name'] = r['name'] - if r['argsstring']: +############################################################################### + def function(self): + o=[] + c=self.cn.execute('SELECT * FROM memberdef WHERE'+self.match("name")+' AND kind=?',[self.name,MemberType.Function]) + for r in c.fetchall(): + item={} + item['name'] = r['name'] + item['definition'] = r['definition'] item['argsstring'] = r['argsstring'] - item['definition'] = r['initializer'] - item['file'] = fileName(r['id_file']) - item['line'] = r['line'] - o.append(item) - return o - - -def findTypedef(name): - o=[] - for r in g_conn.execute('SELECT * FROM memberdef WHERE '+matchName(name)+' AND kind=?',[MemberType.Typedef]).fetchall(): - item={} - item['name'] = r['name'] - item['definition'] = r['definition'] - item['file'] = fileName(r['id_file']) - item['line'] = r['line'] - o.append(item) - return o - - -def findVariable(name): - o=[] - for r in g_conn.execute('SELECT * FROM memberdef WHERE '+matchName(name)+' AND kind=?',[MemberType.Variable]).fetchall(): - item={} - item['name'] = r['name'] - item['definition'] = r['definition'] - item['file'] = fileName(r['id_file']) - item['line'] = r['line'] - o.append(item) - return o - -def findParams(name): - o=[] - for r in g_conn.execute('SELECT id FROM memberdef WHERE '+matchName(name)).fetchall(): - #a=("SELECT * FROM params where id=(SELECT id_param FROM memberdef_params where id_memberdef=?",[id_memberdef]) - item={} - item['id'] = r['id'] - o.append(item) - return o - - -def findStruct(name): - o=[] - for r in g_conn.execute('SELECT * FROM compounddef WHERE '+matchName(name)).fetchall(): - item={} - item['name'] = r['name'] - o.append(item) - return o - -def findIncluders(name): - o=[] - fid = fileId(name) - for r in g_conn.execute('SELECT * FROM includes WHERE id_dst=?',[fid]).fetchall(): - item={} - item['name'] = fileName(r['id_src']) - o.append(item) - return o - -def findIncludees(name): - o=[] - fid = fileId(name) - for r in g_conn.execute('SELECT * FROM includes WHERE id_src=?',[fid]).fetchall(): - item={} - item['name'] = r['dst'] - o.append(item) - return o - - -def findMembers(name): - o=[] - for r in g_conn.execute('SELECT * FROM memberdef WHERE scope LIKE "%'+name+'%";').fetchall(): - item={} - item['name'] = r['name'] - item['definition'] = r['definition'] - item['argsstring'] = r['argsstring'] - item['file'] = fileName(r['id_file']) - item['line'] = r['line'] - item['documentation'] = r['documentation'] - o.append(item) - return o - - -def findBaseClasses(name): - o=[] - for r in g_conn.execute('SELECT base FROM basecompoundref WHERE derived=?',[name]).fetchall(): - item={} - item['name'] = r['base'] - o.append(item) - return o - - -def findSubClasses(name): - o=[] - for r in g_conn.execute('SELECT derived FROM basecompoundref WHERE base=?',[name]).fetchall(): - item={} - item['name'] = r['derived'] - o.append(item) - return o - - + item['file'] = self.fileName(r['id_file']) + item['line'] = r['line'] + item['detaileddescription'] = r['detaileddescription'] + o.append(item) + return o ############################################################################### + def file(self): + o=[] + for r in self.cn.execute("SELECT rowid,* FROM files WHERE"+self.match("name"),[self.name]).fetchall(): + item={} + item['name'] = r['name'] + item['id'] = r['rowid'] + o.append(item) + return o -def usage(): - print """Usage: search.py [Options] -Options: - -h, --help - -d <D> Use database <D> for queries - -r <F> Search for references to <F> - -f <F> Search for definition of function <F> - -m <M> Search for definition of macro <M> - -t <T> Search for definition of type <T> - -v <V> Search for definition of variable <V> - -I <I> Get the includers of <I> - -i <I> Get the includees of <I> - -M <C> Get all members of class <C> - -B <C> Get the base classes of class <C> - -S <C> Get the sub classes of class <C> -""" - -def openDb(dbname): - global g_conn - - if dbname == None: - dbname = "doxygen_sqlite3.db" - - if not os.path.isfile(dbname): - raise BaseException("No such file %s" % dbname ) - - g_conn = sqlite3.connect(dbname) - g_conn.execute('PRAGMA temp_store = MEMORY;') - g_conn.row_factory = sqlite3.Row - ############################################################################### -def process(kind,o): + def macro(self): + o=[] + c=self.cn.execute('SELECT * FROM memberdef WHERE'+self.match("name")+' AND kind=?',[self.name,MemberType.Define]) + for r in c.fetchall(): + item={} + item['name'] = r['name'] + if r['argsstring']: + item['argsstring'] = r['argsstring'] + item['definition'] = r['initializer'] + item['file'] = self.fileName(r['id_file']) + item['line'] = r['line'] + o.append(item) + return o +############################################################################### + def typedef(self): + o=[] + c=self.cn.execute('SELECT * FROM memberdef WHERE'+self.match("name")+' AND kind=?',[self.name,MemberType.Typedef]) + for r in c.fetchall(): + item={} + item['name'] = r['name'] + item['definition'] = r['definition'] + item['file'] = self.fileName(r['id_file']) + item['line'] = r['line'] + o.append(item) + return o +############################################################################### + def variable(self): + o=[] + c=self.cn.execute('SELECT * FROM memberdef WHERE'+self.match("name")+' AND kind=?',[self.name,MemberType.Variable]) + for r in c.fetchall(): + item={} + item['name'] = r['name'] + item['definition'] = r['definition'] + item['file'] = self.fileName(r['id_file']) + item['line'] = r['line'] + o.append(item) + return o +############################################################################### + def params(self): + o=[] + c=self.cn.execute('SELECT id FROM memberdef WHERE'+self.match("name"),[self.name]) + for r in c.fetchall(): + #a=("SELECT * FROM params where id=(SELECT id_param FROM memberdef_params where id_memberdef=?",[id_memberdef]) + item={} + item['id'] = r['id'] + o.append(item) + return o +############################################################################### + def struct(self): + o=[] + c=self.cn.execute('SELECT * FROM compounddef WHERE'+self.match("name"),[self.name]) + for r in c.fetchall(): + item={} + item['name'] = r['name'] + o.append(item) + return o +############################################################################### + def includers(self): + o=[] + fid = self.fileId(self.name) + c=self.cn.execute('SELECT * FROM includes WHERE id_dst=?',[fid]) + for r in c.fetchall(): + item={} + item['name'] = self.fileName(r['id_src']) + o.append(item) + return o +############################################################################### + def includees(self): + o=[] + fid = self.fileId(self.name) + c=self.cn.execute('SELECT * FROM includes WHERE id_src=?',[fid]) + for r in c.fetchall(): + item={} + item['name'] = self.fileName(r['id_dst']) + o.append(item) + return o +############################################################################### + def members(self): + o=[] + c=self.cn.execute('SELECT * FROM memberdef WHERE'+self.match("scope"),[self.name]) + for r in c.fetchall(): + item={} + item['name'] = r['name'] + item['definition'] = r['definition'] + item['argsstring'] = r['argsstring'] + item['file'] = self.fileName(r['id_file']) + item['line'] = r['line'] + #item['documentation'] = r['documentation'] + o.append(item) + return o +############################################################################### + def baseClasses(self): + o=[] + c=self.cn.execute('SELECT base FROM basecompoundref WHERE'+self.match("derived"),[self.name]) + for r in c.fetchall(): + item={} + item['name'] = r['base'] + o.append(item) + return o +############################################################################### + def subClasses(self): + o=[] + c=self.cn.execute('SELECT derived FROM basecompoundref WHERE'+self.match("base"),[self.name]) + for r in c.fetchall(): + item={} + item['name'] = r['derived'] + o.append(item) + return o +############################################################################### +def process(f,kind): request_processors = { - MemberType.Function: findFunction, - MemberType.Define: findMacro, - MemberType.Variable: findVariable, - MemberType.Typedef: findTypedef, - RequestType.References: findReferences, - RequestType.Struct: findStruct, - RequestType.Includers: findIncluders, - RequestType.Includees: findIncludees, - RequestType.Members: findMembers, - RequestType.BaseClasses: findBaseClasses, - RequestType.SubClasses: findSubClasses + MemberType.Function: f.function, + MemberType.File: f.file, + MemberType.Define: f.macro, + MemberType.Variable: f.variable, + MemberType.Typedef: f.typedef, + RequestType.References: f.references, + RequestType.Struct: f.struct, + RequestType.Includers: f.includers, + RequestType.Includees: f.includees, + RequestType.Members: f.members, + RequestType.BaseClasses: f.baseClasses, + RequestType.SubClasses: f.subClasses } - return request_processors[kind](o) - - -def processHref(ref): + return request_processors[kind]() +############################################################################### +def processHref(cn,ref): j={} # is it in memberdef ? table="memberdef" - if ( g_conn.execute("SELECT count(*) from %s WHERE refid='%s'" % (table,ref) ).fetchone()[0] > 0 ): - for r in g_conn.execute("SELECT kind,id FROM %s WHERE refid='%s'" % (table,ref) ).fetchall(): - j=process(str(r['kind']),int(r['id'])) + if ( cn.execute("SELECT count(*) from %s WHERE refid=?"%table,[ref] ).fetchone()[0] > 0 ): + for r in cn.execute("SELECT kind,id FROM %s WHERE refid='%s'" % (table,ref) ).fetchall(): + f=Finder(cn,r['id'],int) + j=process(f,str(r['kind'])) # is it in compounddef ? table="compounddef" - if ( g_conn.execute("SELECT count(*) from %s WHERE refid='%s'" % (table,ref)).fetchone()[0] > 0 ): - for r in g_conn.execute("SELECT id FROM %s WHERE refid='%s'" % (table,ref) ).fetchall(): - j=process(RequestType.Struct,int(r['id'])) + if ( cn.execute("SELECT count(*) from %s WHERE refid=?"%table,[ref]).fetchone()[0] > 0 ): + for r in cn.execute("SELECT id FROM %s WHERE refid=?"%table,[ref] ).fetchall(): + f=Finder(cn,r['id'],int) + j=process(f,RequestType.Struct) return j - - +############################################################################### def serveCgi(): import cgi @@ -298,16 +301,33 @@ def serveCgi(): print '{"result": null, "error": "no refid given"}' sys.exit(0) - openDb('doxygen_sqlite3.db') + cn=openDb('doxygen_sqlite3.db') - j = processHref(ref) + j = processHref(cn,ref) print json.dumps({"result":j,"error":None}) - - +############################################################################### +def usage(): + print >>sys.stderr,"""Usage: search.py [Options] +Options: + -h, --help + -d <D> Use database <D> for queries. + -f <F> Search for definition of function <F>. + -m <M> Search for definition of macro <M>. + -r <F> Search for references to function <F>. + -t <T> Search for definition of type <T>. + -v <V> Search for definition of variable <V>. + -I <I> What files are including <I>. + -i <i> What files are included by <i>. + -B <C> Get the base classes of class <C>. + -M <C> Get all members of class <C>. + -S <C> Get the sub classes of class <C>. + -R Consider the search <term> to be a regex. +""" +############################################################################### def serveCli(argv): try: - opts, args = getopt.getopt(argv, "hr:I:i:d:f:m:t:v:H:M:B:S:",["help"]) + opts, args = getopt.getopt(argv, "hr:RI:i:d:f:m:t:v:H:M:B:S:F:",["help"]) except getopt.GetoptError: usage() sys.exit(1) @@ -315,6 +335,7 @@ def serveCli(argv): ref=None dbname=None j={} + global g_use_regexp for a, o in opts: if a in ('-h', '--help'): @@ -325,6 +346,9 @@ def serveCli(argv): continue elif a in ('-r'): kind=RequestType.References + elif a in ('-R'): + g_use_regexp=True + continue elif a in ('-I'): kind=RequestType.Includers elif a in ('-i'): @@ -337,6 +361,8 @@ def serveCli(argv): kind=RequestType.SubClasses elif a in ('-f'): kind=MemberType.Function + elif a in ('-F'): + kind=MemberType.File elif a in ('-m'): kind=MemberType.Define elif a in ('-t'): @@ -346,12 +372,13 @@ def serveCli(argv): elif a in ('-H'): ref = o - openDb(dbname) + cn=openDb(dbname) + f=Finder(cn,o) if ref != None: - j=processHref(ref) + j=processHref(cn,ref) else: - j=process(kind,o) - print json.dumps(j) + j=process(f,kind) + print json.dumps(j,indent=4) def main(argv): diff --git a/addon/doxysearch/CMakeLists.txt b/addon/doxysearch/CMakeLists.txt new file mode 100644 index 0000000..33e01c1 --- /dev/null +++ b/addon/doxysearch/CMakeLists.txt @@ -0,0 +1,36 @@ +if (build_search) + +find_package(Xapian REQUIRED) +find_package(ZLIB REQUIRED) + +if (WIN32) + set(WIN_EXTRA_LIBS "uuid.lib rpcrt4.lib ws2_32.lib") +endif() + +include_directories( + ${CMAKE_SOURCE_DIR}/qtools + ${XAPIAN_INCLUDE_DIR} + ${ZLIB_INCLUDE_DIRS} +) +add_executable(doxyindexer + doxyindexer.cpp +) +target_link_libraries(doxyindexer + ${XAPIAN_LIBRARIES} + ${ZLIB_LIBRARIES} + ${WIN_EXTRA_LIBS} + qtools +) + +add_executable(doxysearch.cgi + doxysearch.cpp +) +target_link_libraries(doxysearch.cgi + ${XAPIAN_LIBRARIES} + ${ZLIB_LIBRARIES} + ${WIN_EXTRA_LIBS} +) + +install(TARGETS doxyindexer doxysearch.cgi DESTINATION bin) + +endif() diff --git a/addon/doxysearch/Makefile.in b/addon/doxysearch/Makefile.in deleted file mode 100644 index 7daafee..0000000 --- a/addon/doxysearch/Makefile.in +++ /dev/null @@ -1,34 +0,0 @@ - -all clean depend: Makefile.doxysearch Makefile.doxyindexer - $(MAKE) -f Makefile.doxysearch $@ - $(MAKE) -f Makefile.doxyindexer $@ - -distclean: clean - $(RM) -rf Makefile doxysearch.pro Makefile.doxysearch - $(RM) -rf Makefile doxyindexer.pro Makefile.doxyindexer - -tmake: - $(ENV) $(PERL) "$(TMAKE)" doxysearch.pro >Makefile.doxysearch - $(ENV) $(PERL) "$(TMAKE)" doxyindexer.pro >Makefile.doxyindexer - -strip: - strip doxysearch - -Makefile.doxysearch: doxysearch.pro - $(ENV) $(PERL) "$(TMAKE)" doxysearch.pro >Makefile.doxysearch - -Makefile.doxyindexer: doxyindexer.pro - $(ENV) $(PERL) "$(TMAKE)" doxyindexer.pro >Makefile.doxyindexer - -install: - $(INSTTOOL) -d $(INSTALL)/bin - $(INSTTOOL) -m 755 ../../bin/doxysearch.cgi $(INSTALL)/bin - $(INSTTOOL) -m 755 ../../bin/doxyindexer $(INSTALL)/bin - $(INSTTOOL) -d $(INSTALL)/$(MAN1DIR) - cat ../../doc/doxyindexer.1 | sed -e "s/DATE/$(DATE)/g" -e "s/VERSION/$(VERSION)/g" > doxyindexer.1 - $(INSTTOOL) -m 644 doxyindexer.1 $(INSTALL)/$(MAN1DIR)/doxyindexer.1 - rm doxyindexer.1 - cat ../../doc/doxysearch.1 | sed -e "s/DATE/$(DATE)/g" -e "s/VERSION/$(VERSION)/g" > doxysearch.1 - $(INSTTOOL) -m 644 doxysearch.1 $(INSTALL)/$(MAN1DIR)/doxysearch.1 - rm doxysearch.1 - diff --git a/addon/doxysearch/doxyindexer.cpp b/addon/doxysearch/doxyindexer.cpp index e1006be..12d3e9a 100644 --- a/addon/doxysearch/doxyindexer.cpp +++ b/addon/doxysearch/doxyindexer.cpp @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxysearch/doxyindexer.pro.in b/addon/doxysearch/doxyindexer.pro.in deleted file mode 100644 index c84a2ac..0000000 --- a/addon/doxysearch/doxyindexer.pro.in +++ /dev/null @@ -1,12 +0,0 @@ -TEMPLATE = app.t -CONFIG = console warn_on static release -HEADERS = -SOURCES = doxyindexer.cpp -LIBS += -L../../lib -lxapian -lqtools -DESTDIR = -OBJECTS_DIR = ../../objects/doxyindexer -TARGET = ../../bin/doxyindexer -INCLUDEPATH += ../../qtools -DEPENDPATH += -TARGETDEPS = - diff --git a/addon/doxysearch/doxysearch.cpp b/addon/doxysearch/doxysearch.cpp index f6946ef..1c4effd 100644 --- a/addon/doxysearch/doxysearch.cpp +++ b/addon/doxysearch/doxysearch.cpp @@ -1,6 +1,6 @@ /****************************************************************************** * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxysearch/doxysearch.pro.in b/addon/doxysearch/doxysearch.pro.in deleted file mode 100644 index 702f5a4..0000000 --- a/addon/doxysearch/doxysearch.pro.in +++ /dev/null @@ -1,12 +0,0 @@ -TEMPLATE = app.t -CONFIG = console warn_on debug cgi -HEADERS = -SOURCES = doxysearch.cpp -LIBS += -lxapian -DESTDIR = -OBJECTS_DIR = ../../objects/doxysearch -TARGET = ../../bin/doxysearch.cgi -INCLUDEPATH += -DEPENDPATH += -TARGETDEPS = - diff --git a/addon/doxywizard/CMakeLists.txt b/addon/doxywizard/CMakeLists.txt new file mode 100644 index 0000000..055aac3 --- /dev/null +++ b/addon/doxywizard/CMakeLists.txt @@ -0,0 +1,80 @@ +if (build_wizard) + +include_directories( + . + ${CMAKE_SOURCE_DIR}/src + ${CMAKE_SOURCE_DIR}/qtools + ${GENERATED_SRC} +) + +set(GENERATED_SRC_WIZARD ${GENERATED_SRC}/doxywizard) +file(MAKE_DIRECTORY ${GENERATED_SRC_WIZARD}) + +add_definitions(-DQT_ARCH_X86_64 -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII -DUNICODE) +set(QT_USE_QTXML TRUE) +find_package(Qt4 REQUIRED) +include(${QT_USE_FILE}) + +# generate settings.h +file(GENERATE OUTPUT ${GENERATED_SRC_WIZARD}/settings.h +CONTENT "#ifndef SETTINGS_H +#define SETTINGS_H +#define USE_SQLITE3 ${sqlite3} +#define USE_LIBCLANG ${clang} +#define IS_SUPPORTED(x) \\ + ((USE_SQLITE3 && strcmp(\"USE_SQLITE3\",(x))==0) || \\ + (USE_LIBCLANG && strcmp(\"USE_LIBCLANG\",(x))==0) || \\ + 0) +#endif" ) +set_source_files_properties(${GENERATED_SRC_WIZARD}/settings.h PROPERTIES GENERATED 1) + +# generate version.cpp +file(GENERATE OUTPUT ${GENERATED_SRC_WIZARD}/version.cpp + CONTENT "char versionString[]=\"${VERSION}\";" +) +set_source_files_properties(${GENERATED_SRC_WIZARD}/version.cpp PROPERTIES GENERATED 1) + +# generate configdoc.cpp +add_custom_command( +COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -wiz ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC_WIZARD}/configdoc.cpp +OUTPUT ${GENERATED_SRC_WIZARD}/configdoc.cpp +) +set_source_files_properties(${GENERATED_SRC_WIZARD}/configdoc.cpp PROPERTIES GENERATED 1) + +FLEX_TARGET(config_doxyw config_doxyw.l ${GENERATED_SRC_WIZARD}/config_doxyw.cpp COMPILE_FLAGS "-Pconfig_doxywYY") + +QT4_WRAP_CPP(doxywizard_MOC +doxywizard.h +expert.h +helplabel.h +inputint.h +inputbool.h +inputstring.h +inputstrlist.h +wizard.h +) + +QT4_ADD_RESOURCES(doxywizard_RESOURCES_RCC doxywizard.qrc) + +add_executable(doxywizard +doxywizard.cpp +expert.cpp +wizard.cpp +inputbool.cpp +inputstring.cpp +inputint.cpp +inputstrlist.cpp +${GENERATED_SRC_WIZARD}/settings.h +${GENERATED_SRC_WIZARD}/version.cpp +${GENERATED_SRC_WIZARD}/config_doxyw.cpp +${GENERATED_SRC_WIZARD}/configdoc.cpp +${doxywizard_MOC} +${doxywizard_RESOURCES_RCC} +) +target_link_libraries(doxywizard +${QT_LIBRARIES} +) + +install(TARGETS doxywizard DESTINATION bin) + +endif() diff --git a/addon/doxywizard/Makefile.in b/addon/doxywizard/Makefile.in deleted file mode 100644 index 9b14174..0000000 --- a/addon/doxywizard/Makefile.in +++ /dev/null @@ -1,40 +0,0 @@ -# -# -# -# Copyright (C) 1997-2014 by Dimitri van Heesch. -# -# Permission to use, copy, modify, and distribute this software and its -# documentation under the terms of the GNU General Public License is hereby -# granted. No representations are made about the suitability of this software -# for any purpose. It is provided "as is" without express or implied warranty. -# See the GNU General Public License for more details. -# - -QMAKE=$(QTDIR)/bin/qmake $(MKSPECS) -INCBUFSIZE=$(PYTHON) ../../src/increasebuffer.py - -all: Makefile.doxywizard - $(MAKE) -f Makefile.doxywizard LEX=$(LEX) PYTHON=$(PYTHON) INCBUFSIZE="$(INCBUFSIZE)" - -Makefile.doxywizard: doxywizard.pro - $(QMAKE) doxywizard.pro -o Makefile.doxywizard - -qmake: - $(QMAKE) doxywizard.pro -o Makefile.doxywizard - -clean: Makefile.doxywizard - $(MAKE) -f Makefile.doxywizard clean - -distclean: Makefile.doxywizard - $(MAKE) -f Makefile.doxywizard distclean - $(RM) Makefile.doxywizard - -install: - $(INSTTOOL) -d $(INSTALL)/bin - $(INSTTOOL) -m 755 ../../bin/doxywizard $(INSTALL)/bin - $(INSTTOOL) -d $(INSTALL)/$(MAN1DIR) - cat ../../doc/doxywizard.1 | sed -e "s/DATE/$(DATE)/g" -e "s/VERSION/$(VERSION)/g" > doxywizard.1 - $(INSTTOOL) -m 644 doxywizard.1 $(INSTALL)/$(MAN1DIR)/doxywizard.1 - rm doxywizard.1 - -FORCE: diff --git a/addon/doxywizard/config.l b/addon/doxywizard/config.l deleted file mode 100644 index f11bc46..0000000 --- a/addon/doxywizard/config.l +++ /dev/null @@ -1,555 +0,0 @@ -/****************************************************************************** - * - * $Id: config_templ.l,v 1.8 2001/01/01 10:15:16 root Exp $ - * - * Copyright (C) 1997-2014 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -%{ - -/* - * includes - */ -#include "config.h" -#include "input.h" -#include <QtCore> - -#define MAX_INCLUDE_DEPTH 10 - - -/* ----------------------------------------------------------------- - * - * static variables - */ - -struct ConfigFileState -{ - int lineNr; - FILE *file; - YY_BUFFER_STATE oldState; - YY_BUFFER_STATE newState; - QString fileName; -}; - -static const QHash<QString,Input*> *g_options; -static FILE *g_file; -static QString g_yyFileName; -static QString g_includeName; -static QVariant g_includePathList; -static QStack<ConfigFileState*> g_includeStack; -static int g_includeDepth; -static QVariant *g_arg; -static Input *g_curOption=0; -static QString g_elemStr; -static QTextCodec *g_codec = QTextCodec::codecForName("UTF-8"); -static QString g_codecName = QString::fromAscii("UTF-8"); -static int g_lastState; -static QByteArray g_tmpString; - -/* ----------------------------------------------------------------- - */ -#undef YY_INPUT -#define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size); - -static int yyread(char *buf,int maxSize) -{ - // no file included - if (g_includeStack.isEmpty()) - { - return fread(buf,1,maxSize,g_file); - } - else - { - return fread(buf,1,maxSize,g_includeStack.top()->file); - } -} - -void config_err(const char *fmt, ...) -{ - va_list args; - va_start(args, fmt); - vfprintf(stderr, fmt, args); - va_end(args); -} -void config_warn(const char *fmt, ...) -{ - va_list args; - va_start(args, fmt); - vfprintf(stderr, fmt, args); - va_end(args); -} - -static void substEnvVarsInStrList(QStringList &sl); -static void substEnvVarsInString(QString &s); - -static void checkEncoding() -{ - Input *option = g_options->value(QString::fromAscii("DOXYFILE_ENCODING")); - if (option && option->value().toString()!=g_codecName) - { - QTextCodec *newCodec = QTextCodec::codecForName(option->value().toString().toAscii()); - if (newCodec) - { - g_codec = newCodec; - g_codecName = option->value().toString(); - } - } -} - -static FILE *tryPath(const QString &path,const QString &fileName) -{ - QString absName=!path.isEmpty() ? path+QString::fromAscii("/")+fileName : fileName; - QFileInfo fi(absName); - if (fi.exists() && fi.isFile()) - { - FILE *f = fopen(absName.toLocal8Bit(),"r"); - if (f==NULL) - config_err("Error: could not open file %s for reading\n",absName.toLatin1().data()); - else - return f; - } - return NULL; -} - -static FILE *findFile(const QString &fileName) -{ - if (QFileInfo(fileName).isAbsolute()) // absolute path - { - return tryPath(QString(), fileName); - } - - // relative path, try with include paths in the list - QStringList sl = g_includePathList.toStringList(); - substEnvVarsInStrList(sl); - foreach (QString s, sl) - { - FILE *f = tryPath(s,fileName); - if (f) return f; - } - // try cwd if g_includePathList fails - return tryPath(QString::fromAscii("."),fileName); -} - -static void readIncludeFile(const QString &incName) -{ - if (g_includeDepth==MAX_INCLUDE_DEPTH) - { - config_err("Error: maximum include depth (%d) reached, %s is not included. Aborting...\n", - MAX_INCLUDE_DEPTH,qPrintable(incName)); - exit(1); - } - - QString inc = incName; - substEnvVarsInString(inc); - inc = inc.trimmed(); - uint incLen = inc.length(); - if (inc.at(0)==QChar::fromAscii('"') && - inc.at(incLen-1)==QChar::fromAscii('"')) // strip quotes - { - inc=inc.mid(1,incLen-2); - } - - FILE *f = findFile(inc); - if (f) // see if the include file can be found - { - // For debugging -#if SHOW_INCLUDES - for (i=0;i<includeStack.count();i++) msg(" "); - msg("@INCLUDE = %s: parsing...\n",inc.toLatin1().data()); -#endif - - // store the state of the old file - ConfigFileState *fs=new ConfigFileState; - fs->oldState=YY_CURRENT_BUFFER; - fs->fileName=g_yyFileName; - fs->file=f; - // push the state on the stack - g_includeStack.push(fs); - // set the scanner to the include file - yy_switch_to_buffer(yy_create_buffer(f, YY_BUF_SIZE)); - fs->newState=YY_CURRENT_BUFFER; - g_yyFileName=inc; - g_includeDepth++; - } - else - { - config_err("Error: @INCLUDE = %s: not found!\n",inc.toLatin1().data()); - exit(1); - } -} - - -%} - -%option nounput -%option noyywrap -%option yylineno - -%x Start -%x SkipComment -%x SkipInvalid -%x GetString -%x GetStrList -%x GetQuotedString -%x GetEnvVar -%x Include - -%% - -<*>\0x0d -<Start,GetString,GetStrList,SkipInvalid>"#" { BEGIN(SkipComment); } -<Start>[a-z_A-Z][a-z_A-Z0-9]*[ \t]*"=" { QString cmd = g_codec->toUnicode(yytext); - cmd=cmd.left(cmd.length()-1).trimmed(); - g_curOption = g_options->value(cmd); - if (g_curOption==0) // oops not known - { - config_err("Warning: ignoring unsupported tag `%s' at line %d, file %s\n", - qPrintable(cmd),yylineno,qPrintable(g_yyFileName)); - BEGIN(SkipInvalid); - } - else // known tag - { - //option->setEncoding(encoding); - g_arg = &g_curOption->value(); - switch(g_curOption->kind()) - { - case Input::StrList: - g_elemStr = QString(); - *g_arg = QStringList(); - BEGIN(GetStrList); - break; - case Input::String: - BEGIN(GetString); - break; - case Input::Int: - BEGIN(GetString); - break; - case Input::Bool: - BEGIN(GetString); - break; - case Input::Obsolete: - config_err("Warning: Tag `%s' at line %d of file %s has become obsolete.\n" - "To avoid this warning please update your configuration " - "file using \"doxygen -u\"\n", qPrintable(cmd), - yylineno,qPrintable(g_yyFileName)); - BEGIN(SkipInvalid); - break; - } - } - } -<Start>[a-z_A-Z][a-z_A-Z0-9]*[ \t]*"+=" { QString cmd=g_codec->toUnicode(yytext); - cmd=cmd.left(cmd.length()-2).trimmed(); - g_curOption = g_options->value(cmd); - if (g_curOption==0) // oops not known - { - config_err("Warning: ignoring unsupported tag `%s' at line %d, file %s\n", - yytext,yylineno,qPrintable(g_yyFileName)); - BEGIN(SkipInvalid); - } - else // known tag - { - switch(g_curOption->kind()) - { - case Input::StrList: - g_arg = &g_curOption->value(); - g_elemStr=QString(); - BEGIN(GetStrList); - break; - case Input::String: - case Input::Int: - case Input::Bool: - config_err("Warning: operator += not supported for `%s'. Ignoring line at line %d, file %s\n", - yytext,yylineno,qPrintable(g_yyFileName)); - BEGIN(SkipInvalid); - break; - case Input::Obsolete: - config_err("Warning: Tag `%s' at line %d of file %s has become obsolete.\n" - "To avoid this warning please update your configuration " - "file using \"doxygen -u\"\n", - qPrintable(cmd),yylineno,qPrintable(g_yyFileName)); - BEGIN(SkipInvalid); - break; - } - } - } -<Start>"@INCLUDE_PATH"[ \t]*"=" { BEGIN(GetStrList); g_arg=&g_includePathList; *g_arg = QStringList(); g_elemStr=QString(); } - /* include a config file */ -<Start>"@INCLUDE"[ \t]*"=" { BEGIN(Include);} -<Include>([^ \"\t\r\n]+)|("\""[^\n\"]+"\"") { - readIncludeFile(g_codec->toUnicode(yytext)); - BEGIN(Start); - } -<<EOF>> { - //printf("End of include file\n"); - //printf("Include stack depth=%d\n",g_includeStack.count()); - if (g_includeStack.isEmpty()) - { - //printf("Terminating scanner!\n"); - yyterminate(); - } - else - { - ConfigFileState *fs = g_includeStack.pop(); - fclose(fs->file); - YY_BUFFER_STATE oldBuf = YY_CURRENT_BUFFER; - yy_switch_to_buffer( fs->oldState ); - yy_delete_buffer( oldBuf ); - g_yyFileName=fs->fileName; - delete fs; - g_includeDepth--; - } - } - -<Start>[a-z_A-Z0-9]+ { config_err("Warning: ignoring unknown tag `%s' at line %d, file %s\n",yytext,yylineno,qPrintable(g_yyFileName)); } -<GetString,SkipInvalid>\n { BEGIN(Start); } -<GetStrList>\n { - if (!g_elemStr.isEmpty()) - { - //printf("elemStr1=`%s'\n",elemStr.toLatin1().data()); - *g_arg = QVariant(g_arg->toStringList() << g_elemStr); - } - BEGIN(Start); - } -<GetStrList>[ \t]+ { - if (!g_elemStr.isEmpty()) - { - //printf("elemStr2=`%s'\n",elemStr.toLatin1().data()); - *g_arg = QVariant(g_arg->toStringList() << g_elemStr); - } - g_elemStr = QString(); - } -<GetString>[^ \"\t\r\n]+ { - *g_arg = QVariant(g_codec->toUnicode(yytext)); - checkEncoding(); - } -<GetString,GetStrList,SkipInvalid>"\"" { g_lastState=YY_START; - BEGIN(GetQuotedString); - g_tmpString=""; - } -<GetQuotedString>"\""|"\n" { - // we add a bogus space to signal that the string was quoted. This space will be stripped later on. - g_tmpString+=" "; - //printf("Quoted String = `%s'\n",tmpString.toLatin1().data()); - if (g_lastState==GetString) - { - *g_arg = g_codec->toUnicode(g_tmpString); - checkEncoding(); - } - else - { - g_elemStr+=g_codec->toUnicode(g_tmpString); - } - if (*yytext=='\n') - { - config_err("Warning: Missing end quote (\") on line %d, file %s\n",yylineno, - qPrintable(g_yyFileName)); - } - BEGIN(g_lastState); - } -<GetQuotedString>"\\\"" { - g_tmpString+='"'; - } -<GetQuotedString>. { g_tmpString+=*yytext; } -<GetStrList>[^ \#\"\t\r\n]+ { - g_elemStr+=g_codec->toUnicode(yytext); - } -<SkipComment>\n { BEGIN(Start); } -<SkipComment>\\[ \r\t]*\n { BEGIN(Start); } -<*>\\[ \r\t]*\n { } -<*>\n -<*>. - -%% - -/*@ ---------------------------------------------------------------------------- - */ - -static void substEnvVarsInString(QString &s) -{ - static QRegExp re(QString::fromAscii("\\$\\([a-z_A-Z0-9]+\\)")); - if (s.isEmpty()) return; - int p=0; - int i,l; - //printf("substEnvVarInString(%s) start\n",s.toLatin1().data()); - while ((i=re.indexIn(s,p))!=-1) - { - l = re.matchedLength(); - //printf("Found environment var s.mid(%d,%d)=`%s'\n",i+2,l-3,s.mid(i+2,l-3).toLatin1().data()); - QString env=g_codec->toUnicode(getenv(s.mid(i+2,l-3).toLatin1())); - substEnvVarsInString(env); // recursively expand variables if needed. - s = s.left(i)+env+s.right(s.length()-i-l); - p=i+env.length(); // next time start at the end of the expanded string - } - s=s.trimmed(); // to strip the bogus space that was added when an argument - // has quotes - //printf("substEnvVarInString(%s) end\n",s.toLatin1().data()); -} - -static void substEnvVarsInStrList(QStringList &sl) -{ - QStringList out; - - foreach (QString result, sl) - { - // an argument with quotes will have an extra space at the end, so wasQuoted will be TRUE. - bool wasQuoted = (result.indexOf(QChar::fromAscii(' '))!=-1) || - (result.indexOf(QChar::fromAscii('\t'))!=-1); - // here we strip the quote again - substEnvVarsInString(result); - - //printf("Result %s was quoted=%d\n",result.toLatin1().data(),wasQuoted); - - if (!wasQuoted) /* as a result of the expansion, a single string - may have expanded into a list, which we'll - add to sl. If the original string already - contained multiple elements no further - splitting is done to allow quoted items with spaces! */ - { - int l=result.length(); - int i,p=0; - // skip spaces - // search for a "word" - for (i=0;i<l;i++) - { - QChar c=0; - // skip until start of new word - while (i<l && ((c=result.at(i))==QChar::fromAscii(' ') || c==QChar::fromAscii('\t'))) i++; - p=i; // p marks the start index of the word - // skip until end of a word - while (i<l && ((c=result.at(i))!=QChar::fromAscii(' ') && - c!=QChar::fromAscii('\t') && - c!=QChar::fromAscii('"'))) i++; - if (i<l) // not at the end of the string - { - if (c==QChar::fromAscii('"')) // word within quotes - { - p=i+1; - for (i++;i<l;i++) - { - c=result.at(i); - if (c==QChar::fromAscii('"')) // end quote - { - out += result.mid(p,i-p); - p=i+1; - break; - } - else if (c==QChar::fromAscii('\\')) // skip escaped stuff - { - i++; - } - } - } - else if (c==QChar::fromAscii(' ') || c==QChar::fromAscii('\t')) // separator - { - out += result.mid(p,i-p); - p=i+1; - } - } - } - if (p!=l) // add the leftover as a string - { - out += result.right(l-p); - } - } - else // just goto the next element in the list - { - out += result; - } - } - sl = out; -} - -//-------------------------------------------------------------------------- - -bool parseConfig( - const QString &fileName, - const QHash<QString,Input *> &options - ) -{ - QHashIterator<QString, Input*> i(options); - g_file = fopen(fileName.toLocal8Bit(),"r"); - if (g_file==NULL) return false; - - // reset all values - i.toFront(); - while (i.hasNext()) - { - i.next(); - if (i.value()) - { - i.value()->reset(); - } - } - - // parse config file - g_options = &options; - g_yyFileName = fileName; - g_includeStack.clear(); - g_includeDepth = 0; - configrestart( configin ); - BEGIN( Start ); - configlex(); - - // update the values in the UI - i.toFront(); - while (i.hasNext()) - { - i.next(); - if (i.value()) - { - //printf("Updating: %s\n",qPrintable(i.key())); - i.value()->update(); - } - else - { - printf("Invalid option: %s\n",qPrintable(i.key())); - } - } - fclose(g_file); - return true; -} - -void writeStringValue(QTextStream &t,QTextCodec *codec,const QString &s) -{ - QChar c; - bool needsEscaping=FALSE; - // convert the string back to it original encoding - //QByteArray se = codec->fromUnicode(s); - t.setCodec(codec); - const QChar *p=s.data(); - if (!s.isEmpty() && !p->isNull()) - { - while (!(c=*p++).isNull() && !needsEscaping) - { - needsEscaping = (c==QChar::fromAscii(' ') || - c==QChar::fromAscii('\n') || - c==QChar::fromAscii('\t') || - c==QChar::fromAscii('"')); - } - if (needsEscaping) - { - t << "\""; - p=s.data(); - while (!p->isNull()) - { - if (*p ==QChar::fromAscii(' ') && - *(p+1)==QChar::fromAscii('\0')) break; // skip inserted space at the end - if (*p ==QChar::fromAscii('"')) t << "\\"; // escape quotes - t << *p++; - } - t << "\""; - } - else - { - t << s; - } - } -} - diff --git a/addon/doxywizard/config_doxyw.l b/addon/doxywizard/config_doxyw.l index 400330f..829f807 100644 --- a/addon/doxywizard/config_doxyw.l +++ b/addon/doxywizard/config_doxyw.l @@ -2,7 +2,7 @@ * * $Id: config_templ.l,v 1.8 2001/01/01 10:15:16 root Exp $ * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby @@ -12,6 +12,7 @@ * */ +%option never-interactive %{ /* @@ -21,6 +22,8 @@ #include "input.h" #include <QtCore> +#define YY_NO_UNISTD_H 1 + #define MAX_INCLUDE_DEPTH 10 @@ -71,18 +74,25 @@ static int yyread(char *buf,int maxSize) } } +static QString warning_str = QString::fromAscii("warning: "); +static QString error_str = QString::fromAscii("error: "); + void config_err(const char *fmt, ...) { + QString msg = error_str; + msg.append(QString::fromAscii(fmt)); va_list args; va_start(args, fmt); - vfprintf(stderr, fmt, args); - va_end(args); + vfprintf(stderr, qPrintable(msg), args); + va_end(args); } void config_warn(const char *fmt, ...) { + QString msg = warning_str; + msg.append(QString::fromAscii(fmt)); va_list args; va_start(args, fmt); - vfprintf(stderr, fmt, args); + vfprintf(stderr, qPrintable(msg), args); va_end(args); } @@ -111,7 +121,7 @@ static FILE *tryPath(const QString &path,const QString &fileName) { FILE *f = fopen(absName.toLocal8Bit(),"r"); if (f==NULL) - config_err("Error: could not open file %s for reading\n",absName.toLatin1().data()); + config_err("could not open file %s for reading\n",qPrintable(absName)); else return f; } @@ -141,7 +151,7 @@ static void readIncludeFile(const QString &incName) { if (g_includeDepth==MAX_INCLUDE_DEPTH) { - config_err("Error: maximum include depth (%d) reached, %s is not included. Aborting...\n", + config_err("maximum include depth (%d) reached, %s is not included. Aborting...\n", MAX_INCLUDE_DEPTH,qPrintable(incName)); exit(1); } @@ -162,7 +172,7 @@ static void readIncludeFile(const QString &incName) // For debugging #if SHOW_INCLUDES for (i=0;i<includeStack.count();i++) msg(" "); - msg("@INCLUDE = %s: parsing...\n",inc.toLatin1().data()); + msg("@INCLUDE = %s: parsing...\n",qPrintable(inc)); #endif // store the state of the old file @@ -180,7 +190,7 @@ static void readIncludeFile(const QString &incName) } else { - config_err("Error: @INCLUDE = %s: not found!\n",inc.toLatin1().data()); + config_err("@INCLUDE = %s: not found!\n",qPrintable(inc)); exit(1); } } @@ -210,7 +220,7 @@ static void readIncludeFile(const QString &incName) g_curOption = g_options->value(cmd); if (g_curOption==0) // oops not known { - config_err("Warning: ignoring unsupported tag `%s' at line %d, file %s\n", + config_warn("ignoring unsupported tag `%s' at line %d, file %s\n", qPrintable(cmd),yylineno,qPrintable(g_yyFileName)); BEGIN(SkipInvalid); } @@ -235,7 +245,7 @@ static void readIncludeFile(const QString &incName) BEGIN(GetString); break; case Input::Obsolete: - config_err("Warning: Tag `%s' at line %d of file %s has become obsolete.\n" + config_warn("Tag `%s' at line %d of file %s has become obsolete.\n" "To avoid this warning please update your configuration " "file using \"doxygen -u\"\n", qPrintable(cmd), yylineno,qPrintable(g_yyFileName)); @@ -249,7 +259,7 @@ static void readIncludeFile(const QString &incName) g_curOption = g_options->value(cmd); if (g_curOption==0) // oops not known { - config_err("Warning: ignoring unsupported tag `%s' at line %d, file %s\n", + config_warn("ignoring unsupported tag `%s' at line %d, file %s\n", yytext,yylineno,qPrintable(g_yyFileName)); BEGIN(SkipInvalid); } @@ -265,12 +275,12 @@ static void readIncludeFile(const QString &incName) case Input::String: case Input::Int: case Input::Bool: - config_err("Warning: operator += not supported for `%s'. Ignoring line at line %d, file %s\n", + config_warn("operator += not supported for `%s'. Ignoring line at line %d, file %s\n", yytext,yylineno,qPrintable(g_yyFileName)); BEGIN(SkipInvalid); break; case Input::Obsolete: - config_err("Warning: Tag `%s' at line %d of file %s has become obsolete.\n" + config_warn("Tag `%s' at line %d of file %s has become obsolete.\n" "To avoid this warning please update your configuration " "file using \"doxygen -u\"\n", qPrintable(cmd),yylineno,qPrintable(g_yyFileName)); @@ -307,12 +317,12 @@ static void readIncludeFile(const QString &incName) } } -<Start>[a-z_A-Z0-9]+ { config_err("Warning: ignoring unknown tag `%s' at line %d, file %s\n",yytext,yylineno,qPrintable(g_yyFileName)); } +<Start>[a-z_A-Z0-9]+ { config_warn("ignoring unknown tag `%s' at line %d, file %s\n",yytext,yylineno,qPrintable(g_yyFileName)); } <GetString,SkipInvalid>\n { BEGIN(Start); } <GetStrList>\n { if (!g_elemStr.isEmpty()) { - //printf("elemStr1=`%s'\n",elemStr.toLatin1().data()); + //printf("elemStr1=`%s'\n",qPrintable(elemStr)); *g_arg = QVariant(g_arg->toStringList() << g_elemStr); } BEGIN(Start); @@ -320,7 +330,7 @@ static void readIncludeFile(const QString &incName) <GetStrList>[ \t]+ { if (!g_elemStr.isEmpty()) { - //printf("elemStr2=`%s'\n",elemStr.toLatin1().data()); + //printf("elemStr2=`%s'\n",qPrintable(elemStr)); *g_arg = QVariant(g_arg->toStringList() << g_elemStr); } g_elemStr = QString(); @@ -336,7 +346,7 @@ static void readIncludeFile(const QString &incName) <GetQuotedString>"\""|"\n" { // we add a bogus space to signal that the string was quoted. This space will be stripped later on. g_tmpString+=" "; - //printf("Quoted String = `%s'\n",tmpString.toLatin1().data()); + //printf("Quoted String = `%s'\n",qPrintable(tmpString)); if (g_lastState==GetString) { *g_arg = g_codec->toUnicode(g_tmpString); @@ -348,7 +358,7 @@ static void readIncludeFile(const QString &incName) } if (*yytext=='\n') { - config_err("Warning: Missing end quote (\") on line %d, file %s\n",yylineno, + config_warn("Missing end quote (\") on line %d, file %s\n",yylineno, qPrintable(g_yyFileName)); } BEGIN(g_lastState); @@ -377,11 +387,11 @@ static void substEnvVarsInString(QString &s) if (s.isEmpty()) return; int p=0; int i,l; - //printf("substEnvVarInString(%s) start\n",s.toLatin1().data()); + //printf("substEnvVarInString(%s) start\n",qPrintable(s)); while ((i=re.indexIn(s,p))!=-1) { l = re.matchedLength(); - //printf("Found environment var s.mid(%d,%d)=`%s'\n",i+2,l-3,s.mid(i+2,l-3).toLatin1().data()); + //printf("Found environment var s.mid(%d,%d)=`%s'\n",i+2,l-3,qPrintable(s.mid(i+2,l-3))); QString env=g_codec->toUnicode(getenv(s.mid(i+2,l-3).toLatin1())); substEnvVarsInString(env); // recursively expand variables if needed. s = s.left(i)+env+s.right(s.length()-i-l); @@ -389,7 +399,7 @@ static void substEnvVarsInString(QString &s) } s=s.trimmed(); // to strip the bogus space that was added when an argument // has quotes - //printf("substEnvVarInString(%s) end\n",s.toLatin1().data()); + //printf("substEnvVarInString(%s) end\n",qPrintable(s)); } static void substEnvVarsInStrList(QStringList &sl) @@ -404,7 +414,7 @@ static void substEnvVarsInStrList(QStringList &sl) // here we strip the quote again substEnvVarsInString(result); - //printf("Result %s was quoted=%d\n",result.toLatin1().data(),wasQuoted); + //printf("Result %s was quoted=%d\n",qPrintable(result),wasQuoted); if (!wasQuoted) /* as a result of the expansion, a single string may have expanded into a list, which we'll diff --git a/addon/doxywizard/doxywizard.cpp b/addon/doxywizard/doxywizard.cpp index d0728ae..4c577cd 100644 --- a/addon/doxywizard/doxywizard.cpp +++ b/addon/doxywizard/doxywizard.cpp @@ -193,7 +193,7 @@ void MainWindow::about() t << QString::fromAscii("<qt><center>A tool to configure and run doxygen version ")+ QString::fromAscii(versionString)+ QString::fromAscii(" on your source files.</center><p><br>" - "<center>Written by<br> Dimitri van Heesch<br>© 2000-2014</center><p>" + "<center>Written by<br> Dimitri van Heesch<br>© 2000-2015</center><p>" "</qt>"); QMessageBox::about(this,tr("Doxygen GUI"),msg); } diff --git a/addon/doxywizard/doxywizard.pro.in b/addon/doxywizard/doxywizard.pro.in deleted file mode 100644 index 1ad36a9..0000000 --- a/addon/doxywizard/doxywizard.pro.in +++ /dev/null @@ -1,40 +0,0 @@ -###################################################################### -# Automatically generated by qmake (2.01a) zo okt 19 12:50:02 2008 -###################################################################### - -TEMPLATE = app -DESTDIR = ../../bin -TARGET = -DEPENDPATH += . -INCLUDEPATH += . ../../generated_src/doxywizard -QT += xml -CONFIG += $extraopts -OBJECTS_DIR = ../../objects/doxywizard -MOC_DIR = ../../moc/doxywizard -RCC_DIR = ../../rcc/doxywizard -DEFINES += QT_NO_CAST_FROM_ASCII QT_NO_CAST_TO_ASCII - -macx-g++ { - CONFIG += x86 x86_64 -} - -# Input -HEADERS += doxywizard.h version.h expert.h config.h helplabel.h \ - inputbool.h inputstring.h inputint.h inputstrlist.h wizard.h docintf.h -SOURCES += doxywizard.cpp expert.cpp wizard.cpp \ - inputbool.cpp inputstring.cpp inputint.cpp inputstrlist.cpp -RESOURCES += doxywizard.qrc -win32:RC_FILE += doxywizard.rc - -config.target = ../../generated_src/doxywizard/config_doxyw.cpp -config.commands = $(LEX) -Pconfig_doxywYY -t ../../addon/doxywizard/config_doxyw.l | $(PYTHON) ../../src/increasebuffer.py >../../generated_src/doxywizard/$*.cpp -config.depends = ../../addon/doxywizard/config_doxyw.l ../../src/increasebuffer.py -configdoc.target = ../../generated_src/doxywizard/configdoc.cpp -configdoc.commands = $(PYTHON) ../../src/configgen.py -wiz ../../src/config.xml > ../../generated_src/doxywizard/configdoc.cpp -configdoc.depends = ../../src/config.xml ../../src/configgen.py -version.target = ../../generated_src/doxywizard/version.cpp -version.commands = cd ../../src;$(PYTHON) version.py -version.depends = ../../configure -QMAKE_EXTRA_TARGETS += configdoc config version -GENERATED_SOURCES += $$configdoc.target $$config.target $$version.target - diff --git a/addon/doxywizard/inputbool.cpp b/addon/doxywizard/inputbool.cpp index be99b0a..ec2035a 100644 --- a/addon/doxywizard/inputbool.cpp +++ b/addon/doxywizard/inputbool.cpp @@ -2,7 +2,7 @@ * * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxywizard/inputbool.h b/addon/doxywizard/inputbool.h index 03bb76e..5a90477 100644 --- a/addon/doxywizard/inputbool.h +++ b/addon/doxywizard/inputbool.h @@ -2,7 +2,7 @@ * * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxywizard/inputint.cpp b/addon/doxywizard/inputint.cpp index e0c426c..8fa46e8 100644 --- a/addon/doxywizard/inputint.cpp +++ b/addon/doxywizard/inputint.cpp @@ -2,7 +2,7 @@ * * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxywizard/inputint.h b/addon/doxywizard/inputint.h index 6662865..457c942 100644 --- a/addon/doxywizard/inputint.h +++ b/addon/doxywizard/inputint.h @@ -2,7 +2,7 @@ * * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxywizard/inputstring.cpp b/addon/doxywizard/inputstring.cpp index 48ede55..75de0b5 100644 --- a/addon/doxywizard/inputstring.cpp +++ b/addon/doxywizard/inputstring.cpp @@ -2,7 +2,7 @@ * * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxywizard/inputstring.h b/addon/doxywizard/inputstring.h index 90ea87d..dba31f6 100644 --- a/addon/doxywizard/inputstring.h +++ b/addon/doxywizard/inputstring.h @@ -2,7 +2,7 @@ * * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxywizard/inputstrlist.cpp b/addon/doxywizard/inputstrlist.cpp index 0a0f01f..777af6a 100644 --- a/addon/doxywizard/inputstrlist.cpp +++ b/addon/doxywizard/inputstrlist.cpp @@ -2,7 +2,7 @@ * * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxywizard/inputstrlist.h b/addon/doxywizard/inputstrlist.h index 0d7efe7..53f3bcc 100644 --- a/addon/doxywizard/inputstrlist.h +++ b/addon/doxywizard/inputstrlist.h @@ -2,7 +2,7 @@ * * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxywizard/version.h b/addon/doxywizard/version.h index b31fe4f..16bf9df 100644 --- a/addon/doxywizard/version.h +++ b/addon/doxywizard/version.h @@ -2,7 +2,7 @@ * * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby diff --git a/addon/doxywizard/wizard.h b/addon/doxywizard/wizard.h index 4d5eb9d..11a42be 100644 --- a/addon/doxywizard/wizard.h +++ b/addon/doxywizard/wizard.h @@ -2,7 +2,7 @@ * * * - * Copyright (C) 1997-2014 by Dimitri van Heesch. + * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby |