From 58945c9f5b9e0113536554ea4d87dc0691321a1d Mon Sep 17 00:00:00 2001 From: Lerking <33354709+Lerking@users.noreply.github.com> Date: Wed, 12 Dec 2018 06:47:37 +0100 Subject: [PATCH 01/13] Update h2inc.py Added Element type definitions. Added hdr_keywords and inc_keywords. Added analyzer function. Modified read_line function. --- h2inc.py | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) diff --git a/h2inc.py b/h2inc.py index 352ff89..6634a65 100644 --- a/h2inc.py +++ b/h2inc.py @@ -1,5 +1,53 @@ import os +#Element type definitions. Used in the parse process. +ELEMENT_TYPE_DEFINE = 1 +ELEMENT_TYPE_INCLUDE = 2 +ELEMENT_TYPE_UNDEF = 3 +ELEMENT_TYPE_IFDEF = 4 +ELEMENT_TYPE_IFNDEF = 5 +ELEMENT_TYPE_IF = 6 +ELEMENT_TYPE_ELSE = 7 +ELEMENT_TYPE_ELIF = 8 +ELEMENT_TYPE_ENDIF = 9 +ELEMENT_TYPE_ERROR = 10 +ELEMENT_TYPE_PRAGMA = 11 +ELEMENT_TYPE_COMMENT_START = 20 +ELEMENT_TYPE_COMMENT_MULTILINE = 21 +ELEMENT_TYPE_COMMENT_END = 22 + +#Keyword : Element type dictionary, for read C-header line. +hdr_keywords = {'/*': ELEMENT_TYPE_COMMENT_START, + '*': ELEMENT_TYPE_COMMENT_MULTILINE, + '*/': ELEMENT_TYPE_COMMENT_END, + '#define': ELEMENT_TYPE_DEFINE, + '#include': ELEMENT_TYPE_INCLUDE, + '#undef': ELEMENT_TYPE_UNDEF, + '#ifdef': ELEMENT_TYPE_IFDEF, + '#ifndef': ELEMENT_TYPE_IFNDEF, + '#if': ELEMENT_TYPE_IF, + '#else': ELEMENT_TYPE_ELSE, + '#elif': ELEMENT_TYPE_ELIF, + '#endif': ELEMENT_TYPE_ENDIF, + '#error': ELEMENT_TYPE_ERROR, + '#pragma': ELEMENT_TYPE_PRAGMA} + +#Element type : keyword, for assembly include output file. +inc_keywords = {ELEMENT_TYPE_COMMENT_START: ';', + ELEMENT_TYPE_COMMENT_MULTILINE: ';', + ELEMENT_TYPE_COMMENT_END: '', + ELEMENT_TYPE_DEFINE: '%define', + ELEMENT_TYPE_INCLUDE: '%include', + ELEMENT_TYPE_UNDEF: '%undef', + ELEMENT_TYPE_IFDEF: '%ifdef', + ELEMENT_TYPE_IFNDEF: '%ifndef', + ELEMENT_TYPE_IF: '%if', + ELEMENT_TYPE_ELSE: '%else', + ELEMENT_TYPE_ELIF: '%elif', + ELEMENT_TYPE_ENDIF: '%endif', + ELEMENT_TYPE_ERROR: '%error', + ELEMENT_TYPE_PRAGMA: '%pragma'} + class H2INC: def __init__(self): self.filelist = [] @@ -8,6 +56,8 @@ class H2INC: self.destdir = "~/include" self.filecnt = 0 self.foldercnt = 0 + self.tupline = [] + self.tupfile = [] def srcfilecnt(self.sourcedir): ### Return the number of files, ending with '.h', in sourcedir - including subdirectories ### @@ -67,7 +117,9 @@ class H2INC: break #print(os.path.basename(data)) for lines in fh: - outfile = outfile+lines + #outfile = outfile+lines - Initial phase + analyzed_line = analyzer(lines) + tupfile.append(analysed_line) fh.close() outputfile = os.path.splitext(inputfile)[0]+'.inc' outputfile = str(outputfile).replace(sourcedir, destdir) @@ -84,3 +136,11 @@ class H2INC: newfile.write(data) newfile.close() + def analyzer(self, ln): + word = [w for w in ln.split()] + for w in word: + if w in hdr_keywords: + v=hdr_keywords[w] + self.tupline.append(v) + self.tupline.append(w) + return tupline -- 2.39.5 From 106849a802ece6bbbf60f60996abc75bb7976c0c Mon Sep 17 00:00:00 2001 From: Jan Lerking Date: Wed, 12 Dec 2018 20:28:26 +0100 Subject: [PATCH 02/13] Did some minor corrections. --- h2inc.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/h2inc.py b/h2inc.py index 6634a65..1c38cbd 100644 --- a/h2inc.py +++ b/h2inc.py @@ -59,7 +59,7 @@ class H2INC: self.tupline = [] self.tupfile = [] - def srcfilecnt(self.sourcedir): + def srcfilecnt(self, sourcedir): ### Return the number of files, ending with '.h', in sourcedir - including subdirectories ### for folderName, subfolders, files in os.walk(self.sourcedir): for file in files: @@ -71,12 +71,12 @@ class H2INC: else: return False - def srcfoldercnt(self.sourcedir): + def srcfoldercnt(self, sourcedir): ### Return the number of folders, if it contains '*.h' files, in sourcedir - including subdirectories ### for folderName, subfolders, files in os.walk(self.sourcedir): if subfolders: for subfolder in subfolders: - sourcedir_foldercnt(subfolder) + self.foldercnt(subfolder) tempf = [file for file in files if file.lower().endswith('.h')] if tempf: self.foldercnt = self.foldercnt+1 @@ -86,7 +86,7 @@ class H2INC: else: return False - def read_file(fn): + def read_file(self, fn): outfile = '' inputfile = fn encodings = ['utf-8', 'latin-1', 'windows-1250', 'windows-1252', 'ascii', @@ -107,7 +107,7 @@ class H2INC: 'utf-32-le', 'utf-16', 'utf-16-be', 'utf-16-le', 'utf-7', 'utf-8-sig'] for e in encodings: try: - fh = io.open(fn, 'r', encoding=e) + fh = open(fn, 'r', encoding=e) fh.readlines() fh.seek(0) except UnicodeDecodeError: @@ -122,10 +122,10 @@ class H2INC: tupfile.append(analysed_line) fh.close() outputfile = os.path.splitext(inputfile)[0]+'.inc' - outputfile = str(outputfile).replace(sourcedir, destdir) - write_file(outputfile,outfile) + outputfile = str(outputfile).replace(self.sourcedir, self.destdir) + self.write_file(outputfile,outfile) - def write_file(fn, data): + def write_file(self, fn, data): if not os.path.exists(os.path.dirname(fn)): try: os.makedirs(os.path.dirname(fn)) @@ -138,9 +138,9 @@ class H2INC: def analyzer(self, ln): word = [w for w in ln.split()] - for w in word: - if w in hdr_keywords: - v=hdr_keywords[w] - self.tupline.append(v) - self.tupline.append(w) + for w in word: + if w in hdr_keywords: + v=hdr_keywords[w] + self.tupline.append(v) + self.tupline.append(w) return tupline -- 2.39.5 From 571db72740a63b828b011aa6d568ff0a404aa60d Mon Sep 17 00:00:00 2001 From: Lerking Date: Thu, 13 Dec 2018 20:58:47 +0100 Subject: [PATCH 03/13] Added parser function for ELEMENT_TYPE_INCLUDE. --- h2inc.py | 71 ++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 54 insertions(+), 17 deletions(-) diff --git a/h2inc.py b/h2inc.py index 1c38cbd..c17a097 100644 --- a/h2inc.py +++ b/h2inc.py @@ -1,6 +1,7 @@ import os #Element type definitions. Used in the parse process. +ELEMENT_TYPE_UNKNOWN = -1 ELEMENT_TYPE_DEFINE = 1 ELEMENT_TYPE_INCLUDE = 2 ELEMENT_TYPE_UNDEF = 3 @@ -52,8 +53,8 @@ class H2INC: def __init__(self): self.filelist = [] self.folderlist = [] - self.sourcedir = "/usr/src" - self.destdir = "~/include" + self.sourcedir = "/usr/include" + self.destdir = "/data/include" self.filecnt = 0 self.foldercnt = 0 self.tupline = [] @@ -71,12 +72,12 @@ class H2INC: else: return False - def srcfoldercnt(self, sourcedir): + def srcfoldercnt(self, src): ### Return the number of folders, if it contains '*.h' files, in sourcedir - including subdirectories ### - for folderName, subfolders, files in os.walk(self.sourcedir): + for folderName, subfolders, files in os.walk(src): if subfolders: for subfolder in subfolders: - self.foldercnt(subfolder) + self.srcfoldercnt(subfolder) tempf = [file for file in files if file.lower().endswith('.h')] if tempf: self.foldercnt = self.foldercnt+1 @@ -89,6 +90,9 @@ class H2INC: def read_file(self, fn): outfile = '' inputfile = fn + passes = 0 + tempfile = [] + templine = [] encodings = ['utf-8', 'latin-1', 'windows-1250', 'windows-1252', 'ascii', 'big5', 'big5hkscs', 'cp037', 'cp273', 'cp424', 'cp437', 'cp500', 'cp720', 'cp737', 'cp775', 'cp850', 'cp852', 'cp855', 'cp856', @@ -113,17 +117,26 @@ class H2INC: except UnicodeDecodeError: print('got unicode error with %s , trying different encoding' % e) else: - #print('opening the file with encoding: %s ' % e) break - #print(os.path.basename(data)) + self.tupfile = [] for lines in fh: - #outfile = outfile+lines - Initial phase - analyzed_line = analyzer(lines) - tupfile.append(analysed_line) + #outfile = outfile+lines #Initial phase + self.tupline = [] + analyzed_line = self.analyzer(lines) + self.tupfile.append(analyzed_line) + #self.tupfile.append(lines) + passes += 1 fh.close() - outputfile = os.path.splitext(inputfile)[0]+'.inc' - outputfile = str(outputfile).replace(self.sourcedir, self.destdir) - self.write_file(outputfile,outfile) + for l in self.tupfile: + if len(l) == 0: + continue + if l[0] == ELEMENT_TYPE_INCLUDE: + templine.append('%include'+' '+str(self.parseinclude(l[1]))) + #outputfile = os.path.splitext(inputfile)[0]+'.inc' + #outputfile = str(outputfile).replace(self.sourcedir, self.destdir) + #print(outputfile) + #print(os.path.dirname(outputfile)) + #self.write_file(outputfile,outfile) def write_file(self, fn, data): if not os.path.exists(os.path.dirname(fn)): @@ -135,12 +148,36 @@ class H2INC: newfile = open(fn, "w") newfile.write(data) newfile.close() - + + def parseinclude(self, data): + tempstr = str(data) + if tempstr.startswith('<'): + tempstr = tempstr.replace('<', '"') + tempstr = tempstr.replace('.h>', '.inc"') + if tempstr.endswith('.h'): + tempstr = '"'+tempstr + tempstr = tempstr.replace('.h', '.inc"') + return tempstr + def analyzer(self, ln): word = [w for w in ln.split()] for w in word: if w in hdr_keywords: - v=hdr_keywords[w] + v = hdr_keywords[w] self.tupline.append(v) - self.tupline.append(w) - return tupline + else: + self.tupline.append(w) + return self.tupline + +if __name__ == "__main__": + app = H2INC() + if app.srcfilecnt(app.sourcedir) == True: + print(app.filecnt) + #print(app.filelist) + if app.srcfoldercnt(app.sourcedir) == True: + print(app.foldercnt) + #print(app.folderlist) + #for f in app.filelist: + #app.read_file(f) + app.read_file("gtk.h") #testfile for comments and header includes + print(app.tupfile) -- 2.39.5 From 98ae18debd830f3c641fcab8524bf289b671b978 Mon Sep 17 00:00:00 2001 From: Lerking Date: Thu, 13 Dec 2018 20:59:35 +0100 Subject: [PATCH 04/13] Added gtk.h file for testing ELEMENT_TYPE_INCLUDE. --- gtk.h | 283 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 283 insertions(+) create mode 100644 gtk.h diff --git a/gtk.h b/gtk.h new file mode 100644 index 0000000..3cbd13f --- /dev/null +++ b/gtk.h @@ -0,0 +1,283 @@ +/* GTK - The GIMP Toolkit + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +/* + * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GTK+ Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GTK+ at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __GTK_H__ +#define __GTK_H__ + +#define __GTK_H_INSIDE__ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef GTK_DISABLE_DEPRECATED +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif /* GTK_DISABLE_DEPRECATED */ + +#include + +#undef __GTK_H_INSIDE__ + +#endif /* __GTK_H__ */ -- 2.39.5 From b39bdec95a17ab17940a3b5febaf97745d87062b Mon Sep 17 00:00:00 2001 From: Lerking Date: Fri, 14 Dec 2018 20:54:53 +0100 Subject: [PATCH 05/13] Added PARSER class and moved all parser functions in here. --- parser.py | 135 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 parser.py diff --git a/parser.py b/parser.py new file mode 100644 index 0000000..15f692c --- /dev/null +++ b/parser.py @@ -0,0 +1,135 @@ +from itertools import count + +TOKENS = ['CSTART','CMID','CEND','RPAREN','LPAREN','ENDLINE','RETVAL','PREPROCESS', + 'ID','PLUS','MINUS','DIV','MULT','ASSIGN','EQUAL','LBRACE','RBRACE', + 'COMMA','SEMICOLON','LANGLE','RANGLE','POINTER'] + +RESERVED = {'auto' : 'AUTO','break' : 'BREAK','case' : 'CASE','char' : 'CHAR', + 'const' : 'CONST','continue' : 'CONTINUE','default' : 'DEFAULT','do' : 'DO', + 'int' : 'INT','long' : 'LONG','register' : 'REGISTER','return' : 'RETURN', + 'short' : 'SHORT','signed' : 'SIGNED','sizeof' : 'SIZEOF','static' : 'STATIC', + 'struct' : 'STRUCT','switch' : 'SWITCH','typedef' : 'TYPEDEF','union' : 'UNION', + 'unsigned' : 'UNSIGNED','void' : 'VOID','volatile' : 'VOLATILE','while' : 'WHILE', + 'double' : 'DOUBLE','else' : 'ELSE','enum' : 'ENUM','extern' : 'EXTERN', + 'float' : 'FLOAT','for' : 'FOR','goto' : 'GOTO','if' : 'IF'} + +PREPROCESSOR_DIRECTIVES = {'#include' : 'PREPROCESS','#define' : 'PREPROCESS','#undef' : 'PREPROCESS', + '#if' : 'PREPROCESS','#ifdef' : 'PREPROCESS','#ifndef' : 'PREPROCESS','#error' : 'PREPROCESS', + '__FILE__' : 'PREPROCESS','__LINE__' : 'PREPROCESS','__DATE__' : 'PREPROCESS', + '__TIME__' : 'PREPROCESS','__TIMESTAMP__' : 'PREPROCESS','pragma' : 'PREPROCESS', + '#' : 'PREPROCESS','##' : 'PREPROCESS'} + +REGULAR = {'/*' : 'CSTART','*/' : 'CEND','=' : 'ASSIGN','==' : 'EQUAL', + '{' : 'LBRACE','}' : 'RBRACE','\+' : 'PLUS','-' : 'MINUS', + '\*' : 'MULT','/' : 'DIV','\(' : 'LPAREN','\)' : 'RPAREN', + ',' : 'COMMA',';' : 'SEMICOLON','\<' : 'LANGLE','\>' : 'RANGLE'} + +NASM_PREPROCESS_DIRECTIVES = {'#include' : '$include','#define' : '$define','#undef' : '$undef', + '#if' : '$if','#ifdef' : '$ifdef','#ifndef' : '$ifndef', + '#error' : '$error','__FILE__' : '__FILE__','__LINE__' : '__LINE__', + '__DATE__' : '__DATE__','__TIME__' : '__TIME__','__TIMESTAMP__' : '__TIMESTAMP__', + 'pragma' : 'pragma','#' : '#','##' : '##'} + +TOKENS += RESERVED.values() + +#Element type definitions. Used in the parse process. +ELEMENT_TYPE_UNKNOWN = -1 +ELEMENT_TYPE_DEFINE = 1 +ELEMENT_TYPE_INCLUDE = 2 +ELEMENT_TYPE_UNDEF = 3 +ELEMENT_TYPE_IFDEF = 4 +ELEMENT_TYPE_IFNDEF = 5 +ELEMENT_TYPE_IF = 6 +ELEMENT_TYPE_ELSE = 7 +ELEMENT_TYPE_ELIF = 8 +ELEMENT_TYPE_ENDIF = 9 +ELEMENT_TYPE_ERROR = 10 +ELEMENT_TYPE_PRAGMA = 11 +ELEMENT_TYPE_COMMENT_START = 20 +ELEMENT_TYPE_COMMENT_MULTILINE = 21 +ELEMENT_TYPE_COMMENT_END = 22 + +#Keyword : Element type dictionary, for read C-header line. +hdr_keywords = {'/*': ELEMENT_TYPE_COMMENT_START, + '*': ELEMENT_TYPE_COMMENT_MULTILINE, + '*/': ELEMENT_TYPE_COMMENT_END, + '#define': ELEMENT_TYPE_DEFINE, + '#include': ELEMENT_TYPE_INCLUDE, + '#undef': ELEMENT_TYPE_UNDEF, + '#ifdef': ELEMENT_TYPE_IFDEF, + '#ifndef': ELEMENT_TYPE_IFNDEF, + '#if': ELEMENT_TYPE_IF, + '#else': ELEMENT_TYPE_ELSE, + '#elif': ELEMENT_TYPE_ELIF, + '#endif': ELEMENT_TYPE_ENDIF, + '#error': ELEMENT_TYPE_ERROR, + '#pragma': ELEMENT_TYPE_PRAGMA} + +#Element type : keyword, for assembly include output file. +inc_keywords = {ELEMENT_TYPE_COMMENT_START: ';', + ELEMENT_TYPE_COMMENT_MULTILINE: ';', + ELEMENT_TYPE_COMMENT_END: '', + ELEMENT_TYPE_DEFINE: '%define', + ELEMENT_TYPE_INCLUDE: '%include', + ELEMENT_TYPE_UNDEF: '%undef', + ELEMENT_TYPE_IFDEF: '%ifdef', + ELEMENT_TYPE_IFNDEF: '%ifndef', + ELEMENT_TYPE_IF: '%if', + ELEMENT_TYPE_ELSE: '%else', + ELEMENT_TYPE_ELIF: '%elif', + ELEMENT_TYPE_ENDIF: '%endif', + ELEMENT_TYPE_ERROR: '%error', + ELEMENT_TYPE_PRAGMA: '%pragma'} + +class PARSEOBJECT: + def __init__(self): + self.tupline = [] + self.tupfile = [] + self.passes = 0 + + def parseinclude(self, data): + tempstr = str(data) + if tempstr.startswith('<'): + tempstr = tempstr.replace('<', '"') + tempstr = tempstr.replace('.h>', '.inc"') + if tempstr.endswith('.h'): + tempstr = '"'+tempstr + tempstr = tempstr.replace('.h', '.inc"') + return tempstr + + def lexer_get_token(k): + prep = keywords.preprocessor_directives + reg = keywords.regular + token = "" + + if w in prep: + token = prep(w) + if w in reg: + token = reg(w) + + return token + + def analyzer(self, ln): + word = [w for w in ln.split()] + for w in word: + if w in hdr_keywords: + v = hdr_keywords[w] + self.tupline.append(v) + else: + self.tupline.append(w) + return self.tupline + + for l in self.tupfile: + if len(l) == 0: + continue + if l[0] == ELEMENT_TYPE_INCLUDE: + templine.append('%include'+' '+str(self.parseinclude(l[1]))) + +class PARSER(PARSEOBJECT): + _ids = count(0) + + def __init__(self): + self.id = next(self._ids) + self.tupline = [] + self.tupfile = [] + self.passes = 0 \ No newline at end of file -- 2.39.5 From 20756f932907ab66c3d0c9ba598a5eb90fd4aa97 Mon Sep 17 00:00:00 2001 From: Lerking Date: Fri, 14 Dec 2018 20:55:34 +0100 Subject: [PATCH 06/13] Moved all parser functions to class PARSER in parser.py --- h2inc.py | 80 +++----------------------------------------------------- 1 file changed, 4 insertions(+), 76 deletions(-) diff --git a/h2inc.py b/h2inc.py index c17a097..b6aa174 100644 --- a/h2inc.py +++ b/h2inc.py @@ -1,53 +1,5 @@ import os - -#Element type definitions. Used in the parse process. -ELEMENT_TYPE_UNKNOWN = -1 -ELEMENT_TYPE_DEFINE = 1 -ELEMENT_TYPE_INCLUDE = 2 -ELEMENT_TYPE_UNDEF = 3 -ELEMENT_TYPE_IFDEF = 4 -ELEMENT_TYPE_IFNDEF = 5 -ELEMENT_TYPE_IF = 6 -ELEMENT_TYPE_ELSE = 7 -ELEMENT_TYPE_ELIF = 8 -ELEMENT_TYPE_ENDIF = 9 -ELEMENT_TYPE_ERROR = 10 -ELEMENT_TYPE_PRAGMA = 11 -ELEMENT_TYPE_COMMENT_START = 20 -ELEMENT_TYPE_COMMENT_MULTILINE = 21 -ELEMENT_TYPE_COMMENT_END = 22 - -#Keyword : Element type dictionary, for read C-header line. -hdr_keywords = {'/*': ELEMENT_TYPE_COMMENT_START, - '*': ELEMENT_TYPE_COMMENT_MULTILINE, - '*/': ELEMENT_TYPE_COMMENT_END, - '#define': ELEMENT_TYPE_DEFINE, - '#include': ELEMENT_TYPE_INCLUDE, - '#undef': ELEMENT_TYPE_UNDEF, - '#ifdef': ELEMENT_TYPE_IFDEF, - '#ifndef': ELEMENT_TYPE_IFNDEF, - '#if': ELEMENT_TYPE_IF, - '#else': ELEMENT_TYPE_ELSE, - '#elif': ELEMENT_TYPE_ELIF, - '#endif': ELEMENT_TYPE_ENDIF, - '#error': ELEMENT_TYPE_ERROR, - '#pragma': ELEMENT_TYPE_PRAGMA} - -#Element type : keyword, for assembly include output file. -inc_keywords = {ELEMENT_TYPE_COMMENT_START: ';', - ELEMENT_TYPE_COMMENT_MULTILINE: ';', - ELEMENT_TYPE_COMMENT_END: '', - ELEMENT_TYPE_DEFINE: '%define', - ELEMENT_TYPE_INCLUDE: '%include', - ELEMENT_TYPE_UNDEF: '%undef', - ELEMENT_TYPE_IFDEF: '%ifdef', - ELEMENT_TYPE_IFNDEF: '%ifndef', - ELEMENT_TYPE_IF: '%if', - ELEMENT_TYPE_ELSE: '%else', - ELEMENT_TYPE_ELIF: '%elif', - ELEMENT_TYPE_ENDIF: '%endif', - ELEMENT_TYPE_ERROR: '%error', - ELEMENT_TYPE_PRAGMA: '%pragma'} +from parser import PARSER class H2INC: def __init__(self): @@ -57,8 +9,6 @@ class H2INC: self.destdir = "/data/include" self.filecnt = 0 self.foldercnt = 0 - self.tupline = [] - self.tupfile = [] def srcfilecnt(self, sourcedir): ### Return the number of files, ending with '.h', in sourcedir - including subdirectories ### @@ -88,6 +38,7 @@ class H2INC: return False def read_file(self, fn): + parse = PARSER() outfile = '' inputfile = fn passes = 0 @@ -122,16 +73,12 @@ class H2INC: for lines in fh: #outfile = outfile+lines #Initial phase self.tupline = [] - analyzed_line = self.analyzer(lines) + analyzed_line = parse.analyzer(lines) self.tupfile.append(analyzed_line) #self.tupfile.append(lines) passes += 1 fh.close() - for l in self.tupfile: - if len(l) == 0: - continue - if l[0] == ELEMENT_TYPE_INCLUDE: - templine.append('%include'+' '+str(self.parseinclude(l[1]))) + #outputfile = os.path.splitext(inputfile)[0]+'.inc' #outputfile = str(outputfile).replace(self.sourcedir, self.destdir) #print(outputfile) @@ -149,25 +96,6 @@ class H2INC: newfile.write(data) newfile.close() - def parseinclude(self, data): - tempstr = str(data) - if tempstr.startswith('<'): - tempstr = tempstr.replace('<', '"') - tempstr = tempstr.replace('.h>', '.inc"') - if tempstr.endswith('.h'): - tempstr = '"'+tempstr - tempstr = tempstr.replace('.h', '.inc"') - return tempstr - - def analyzer(self, ln): - word = [w for w in ln.split()] - for w in word: - if w in hdr_keywords: - v = hdr_keywords[w] - self.tupline.append(v) - else: - self.tupline.append(w) - return self.tupline if __name__ == "__main__": app = H2INC() -- 2.39.5 From b95a1cb5cb0b0b8bc2b39ec024c0ba4fa9810bac Mon Sep 17 00:00:00 2001 From: Lerking Date: Fri, 14 Dec 2018 21:09:12 +0100 Subject: [PATCH 07/13] Changed dict names to UPPER case. --- parser.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/parser.py b/parser.py index 15f692c..0d6c056 100644 --- a/parser.py +++ b/parser.py @@ -1,3 +1,4 @@ +"""Contains class PARSER""" from itertools import count TOKENS = ['CSTART','CMID','CEND','RPAREN','LPAREN','ENDLINE','RETVAL','PREPROCESS', @@ -50,7 +51,7 @@ ELEMENT_TYPE_COMMENT_MULTILINE = 21 ELEMENT_TYPE_COMMENT_END = 22 #Keyword : Element type dictionary, for read C-header line. -hdr_keywords = {'/*': ELEMENT_TYPE_COMMENT_START, +HDR_KEYWORDS = {'/*': ELEMENT_TYPE_COMMENT_START, '*': ELEMENT_TYPE_COMMENT_MULTILINE, '*/': ELEMENT_TYPE_COMMENT_END, '#define': ELEMENT_TYPE_DEFINE, @@ -66,7 +67,7 @@ hdr_keywords = {'/*': ELEMENT_TYPE_COMMENT_START, '#pragma': ELEMENT_TYPE_PRAGMA} #Element type : keyword, for assembly include output file. -inc_keywords = {ELEMENT_TYPE_COMMENT_START: ';', +INC_KEYWORDS = {ELEMENT_TYPE_COMMENT_START: ';', ELEMENT_TYPE_COMMENT_MULTILINE: ';', ELEMENT_TYPE_COMMENT_END: '', ELEMENT_TYPE_DEFINE: '%define', @@ -112,8 +113,8 @@ class PARSEOBJECT: def analyzer(self, ln): word = [w for w in ln.split()] for w in word: - if w in hdr_keywords: - v = hdr_keywords[w] + if w in HDR_KEYWORDS: + v = HDR_KEYWORDS[w] self.tupline.append(v) else: self.tupline.append(w) -- 2.39.5 From 8584cc73d1748006dc9a1d5929fc2e6aafbc1324 Mon Sep 17 00:00:00 2001 From: Lerking Date: Fri, 14 Dec 2018 21:09:38 +0100 Subject: [PATCH 08/13] Minor corrections --- h2inc.py | 1 + 1 file changed, 1 insertion(+) diff --git a/h2inc.py b/h2inc.py index b6aa174..dd69701 100644 --- a/h2inc.py +++ b/h2inc.py @@ -1,3 +1,4 @@ +"""Script for translating C-header files into nasm syntax include files""" import os from parser import PARSER -- 2.39.5 From f379ebd87e89a6ed82309cf870d9f72fbc95632b Mon Sep 17 00:00:00 2001 From: Lerking Date: Sat, 15 Dec 2018 01:16:36 +0100 Subject: [PATCH 09/13] Added more parsing functionallity. --- .gitignore | 1 + h2inc.py | 12 ++-- parser.py | 178 ++++++++++++++++++++++++++++------------------------- 3 files changed, 100 insertions(+), 91 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e5421ed --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +__pycache__/parser.cpython-36.pyc diff --git a/h2inc.py b/h2inc.py index dd69701..93abddd 100644 --- a/h2inc.py +++ b/h2inc.py @@ -72,13 +72,10 @@ class H2INC: break self.tupfile = [] for lines in fh: - #outfile = outfile+lines #Initial phase - self.tupline = [] - analyzed_line = parse.analyzer(lines) - self.tupfile.append(analyzed_line) - #self.tupfile.append(lines) - passes += 1 + self.tupfile.append(lines) fh.close() + resultfile = parse.parseheader(self.tupfile) + print(resultfile) #outputfile = os.path.splitext(inputfile)[0]+'.inc' #outputfile = str(outputfile).replace(self.sourcedir, self.destdir) @@ -108,5 +105,4 @@ if __name__ == "__main__": #print(app.folderlist) #for f in app.filelist: #app.read_file(f) - app.read_file("gtk.h") #testfile for comments and header includes - print(app.tupfile) + app.read_file("gtk.h") #testfile for comments and header includes \ No newline at end of file diff --git a/parser.py b/parser.py index 0d6c056..6b943ab 100644 --- a/parser.py +++ b/parser.py @@ -1,9 +1,15 @@ """Contains class PARSER""" from itertools import count -TOKENS = ['CSTART','CMID','CEND','RPAREN','LPAREN','ENDLINE','RETVAL','PREPROCESS', - 'ID','PLUS','MINUS','DIV','MULT','ASSIGN','EQUAL','LBRACE','RBRACE', - 'COMMA','SEMICOLON','LANGLE','RANGLE','POINTER'] +#Element type definitions. Used in the parse process. +ELEMENT_TYPE_PREPROCESS = 1 +ELEMENT_TYPE_REGULAR = 2 + +TOKENS = ['TOKEN_CSTART','TOKEN_CMID','TOKEN_CEND','TOKEN_RPAREN', + 'TOKEN_LPAREN','TOKEN_ENDLINE','TOKEN_RETVAL','TOKEN_PREPROCESS', + 'TOKEN_ID','TOKEN_PLUS','TOKEN_MINUS','TOKEN_DIV','TOKEN_MULT', + 'TOKEN_ASSIGN','TOKEN_EQUAL','TOKEN_LBRACE','TOKEN_RBRACE', + 'TOKEN_COMMA','TOKEN_SEMICOLON','TOKEN_LANGLE','TOKEN_RANGLE','TOKEN_POINTER'] RESERVED = {'auto' : 'AUTO','break' : 'BREAK','case' : 'CASE','char' : 'CHAR', 'const' : 'CONST','continue' : 'CONTINUE','default' : 'DEFAULT','do' : 'DO', @@ -14,80 +20,55 @@ RESERVED = {'auto' : 'AUTO','break' : 'BREAK','case' : 'CASE','char' : 'CHAR', 'double' : 'DOUBLE','else' : 'ELSE','enum' : 'ENUM','extern' : 'EXTERN', 'float' : 'FLOAT','for' : 'FOR','goto' : 'GOTO','if' : 'IF'} -PREPROCESSOR_DIRECTIVES = {'#include' : 'PREPROCESS','#define' : 'PREPROCESS','#undef' : 'PREPROCESS', - '#if' : 'PREPROCESS','#ifdef' : 'PREPROCESS','#ifndef' : 'PREPROCESS','#error' : 'PREPROCESS', - '__FILE__' : 'PREPROCESS','__LINE__' : 'PREPROCESS','__DATE__' : 'PREPROCESS', - '__TIME__' : 'PREPROCESS','__TIMESTAMP__' : 'PREPROCESS','pragma' : 'PREPROCESS', - '#' : 'PREPROCESS','##' : 'PREPROCESS'} +PREPROCESSOR_DIRECTIVES = {'#include' : 'TOKEN_PREPROCESS','#define' : 'TOKEN_PREPROCESS','#undef' : 'TOKEN_PREPROCESS', + '#if' : 'TOKEN_PREPROCESS','#ifdef' : 'TOKEN_PREPROCESS','#ifndef' : 'TOKEN_PREPROCESS','#error' : 'TOKEN_PREPROCESS', + '__FILE__' : 'TOKEN_PREPROCESS','__LINE__' : 'TOKEN_PREPROCESS','__DATE__' : 'TOKEN_PREPROCESS', + '__TIME__' : 'TOKEN_PREPROCESS','__TIMESTAMP__' : 'TOKEN_PREPROCESS','pragma' : 'TOKEN_PREPROCESS', + '#' : 'TOKEN_PREPROCESS','##' : 'TOKEN_PREPROCESS','#endif' : 'TOKEN_PREPROCESS'} -REGULAR = {'/*' : 'CSTART','*/' : 'CEND','=' : 'ASSIGN','==' : 'EQUAL', - '{' : 'LBRACE','}' : 'RBRACE','\+' : 'PLUS','-' : 'MINUS', - '\*' : 'MULT','/' : 'DIV','\(' : 'LPAREN','\)' : 'RPAREN', - ',' : 'COMMA',';' : 'SEMICOLON','\<' : 'LANGLE','\>' : 'RANGLE'} +REGULAR = {'/*' : 'TOKEN_CSTART','*/' : 'TOKEN_CEND', '*' : 'TOKEN_CMID', '=' : 'TOKEN_ASSIGN','==' : 'TOKEN_EQUAL', + '{' : 'TOKEN_LBRACE','}' : 'TOKEN_RBRACE','\+' : 'TOKEN_PLUS','-' : 'TOKEN_MINUS', + '\*' : 'TOKEN_MULT','/' : 'TOKEN_DIV','\(' : 'TOKEN_LPAREN','\)' : 'TOKEN_RPAREN', + ',' : 'TOKEN_COMMA',';' : 'TOKEN_SEMICOLON','\<' : 'TOKEN_LANGLE','\>' : 'TOKEN_RANGLE'} NASM_PREPROCESS_DIRECTIVES = {'#include' : '$include','#define' : '$define','#undef' : '$undef', - '#if' : '$if','#ifdef' : '$ifdef','#ifndef' : '$ifndef', + '#if' : '$if','#ifdef' : '$ifdef','#ifndef' : '%ifndef','#endif' : '%endif', '#error' : '$error','__FILE__' : '__FILE__','__LINE__' : '__LINE__', '__DATE__' : '__DATE__','__TIME__' : '__TIME__','__TIMESTAMP__' : '__TIMESTAMP__', 'pragma' : 'pragma','#' : '#','##' : '##'} - + +NASM_REGULAR = {'/*' : ';', '*' : ';', '*/' : '\n'} + TOKENS += RESERVED.values() -#Element type definitions. Used in the parse process. -ELEMENT_TYPE_UNKNOWN = -1 -ELEMENT_TYPE_DEFINE = 1 -ELEMENT_TYPE_INCLUDE = 2 -ELEMENT_TYPE_UNDEF = 3 -ELEMENT_TYPE_IFDEF = 4 -ELEMENT_TYPE_IFNDEF = 5 -ELEMENT_TYPE_IF = 6 -ELEMENT_TYPE_ELSE = 7 -ELEMENT_TYPE_ELIF = 8 -ELEMENT_TYPE_ENDIF = 9 -ELEMENT_TYPE_ERROR = 10 -ELEMENT_TYPE_PRAGMA = 11 -ELEMENT_TYPE_COMMENT_START = 20 -ELEMENT_TYPE_COMMENT_MULTILINE = 21 -ELEMENT_TYPE_COMMENT_END = 22 - -#Keyword : Element type dictionary, for read C-header line. -HDR_KEYWORDS = {'/*': ELEMENT_TYPE_COMMENT_START, - '*': ELEMENT_TYPE_COMMENT_MULTILINE, - '*/': ELEMENT_TYPE_COMMENT_END, - '#define': ELEMENT_TYPE_DEFINE, - '#include': ELEMENT_TYPE_INCLUDE, - '#undef': ELEMENT_TYPE_UNDEF, - '#ifdef': ELEMENT_TYPE_IFDEF, - '#ifndef': ELEMENT_TYPE_IFNDEF, - '#if': ELEMENT_TYPE_IF, - '#else': ELEMENT_TYPE_ELSE, - '#elif': ELEMENT_TYPE_ELIF, - '#endif': ELEMENT_TYPE_ENDIF, - '#error': ELEMENT_TYPE_ERROR, - '#pragma': ELEMENT_TYPE_PRAGMA} - -#Element type : keyword, for assembly include output file. -INC_KEYWORDS = {ELEMENT_TYPE_COMMENT_START: ';', - ELEMENT_TYPE_COMMENT_MULTILINE: ';', - ELEMENT_TYPE_COMMENT_END: '', - ELEMENT_TYPE_DEFINE: '%define', - ELEMENT_TYPE_INCLUDE: '%include', - ELEMENT_TYPE_UNDEF: '%undef', - ELEMENT_TYPE_IFDEF: '%ifdef', - ELEMENT_TYPE_IFNDEF: '%ifndef', - ELEMENT_TYPE_IF: '%if', - ELEMENT_TYPE_ELSE: '%else', - ELEMENT_TYPE_ELIF: '%elif', - ELEMENT_TYPE_ENDIF: '%endif', - ELEMENT_TYPE_ERROR: '%error', - ELEMENT_TYPE_PRAGMA: '%pragma'} +COMMENT_SINGLE_LINE = 0 +COMMENT_MULTI_LINE = 1 class PARSEOBJECT: + _passes = count(0) + def __init__(self): - self.tupline = [] - self.tupfile = [] + self.parseline = [] + self.parsefile = [] self.passes = 0 + def parse_reset(self): + self.parseline = [] + self.parsefile = [] + self._passes = count(0) + + def inc_passes(self): + self.passes = next(self._passes) + + def parseheader(self, fl): + self.parse_reset() + for l in fl: + analyzed_line = self.analyzer(l) + self.parsefile.append(analyzed_line) + self.inc_passes() + self.parsetokens(self.parsefile) + return self.parsefile + def parseinclude(self, data): tempstr = str(data) if tempstr.startswith('<'): @@ -98,39 +79,70 @@ class PARSEOBJECT: tempstr = tempstr.replace('.h', '.inc"') return tempstr - def lexer_get_token(k): - prep = keywords.preprocessor_directives - reg = keywords.regular + def tokenizer(self, w): token = "" - - if w in prep: - token = prep(w) - if w in reg: - token = reg(w) - - return token + if w in PREPROCESSOR_DIRECTIVES: + token = PREPROCESSOR_DIRECTIVES.get(w) + return token + if w in REGULAR: + token = REGULAR.get(w) + return token + return False def analyzer(self, ln): + analysed = [] word = [w for w in ln.split()] for w in word: - if w in HDR_KEYWORDS: - v = HDR_KEYWORDS[w] - self.tupline.append(v) + t = self.tokenizer(w) + if t == False: + analysed.append(w) + continue else: - self.tupline.append(w) - return self.tupline + analysed.append(t) + analysed.append(w) + return analysed - for l in self.tupfile: + def parsetokens(self, fl): + templine = [] + tempfile = [] + for l in fl: if len(l) == 0: continue - if l[0] == ELEMENT_TYPE_INCLUDE: - templine.append('%include'+' '+str(self.parseinclude(l[1]))) + if l[0] == "TOKEN_CSTART": + if l[-1] == "TOKEN_CEND": + tempfile.append(self.parse_comment(l,COMMENT_SINGLE_LINE)) + else: + tempfile.append(self.parse_comment(l,COMMENT_MULTI_LINE)) + if l[0] == "TOKEN_PREPROCESS": + tempfile.append(self.parse_preprocess(l)) + + def parse_comment(self, l, ct): + + + def parse_preprocess(self, l): + newline = [] + for e in l: + if e in TOKENS: + continue + for k, v in PREPROCESSOR_DIRECTIVES.items(): + if k == e: + newline.append(NASM_PREPROCESS_DIRECTIVES.get(k)) + break + break + if k == "#include": + newline.append(self.parseinclude(e) + else: + newline.append(e) + newline.append('\n') + return newline + class PARSER(PARSEOBJECT): _ids = count(0) + _passes = count(0) def __init__(self): self.id = next(self._ids) self.tupline = [] self.tupfile = [] - self.passes = 0 \ No newline at end of file + self.passes = next(self._passes) \ No newline at end of file -- 2.39.5 From e3c5b1022aab45ad0cba2058353da39ca2874c0e Mon Sep 17 00:00:00 2001 From: Lerking <33354709+Lerking@users.noreply.github.com> Date: Mon, 17 Dec 2018 17:33:08 +0100 Subject: [PATCH 10/13] Delete .gitignore --- .gitignore | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .gitignore diff --git a/.gitignore b/.gitignore deleted file mode 100644 index e5421ed..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -__pycache__/parser.cpython-36.pyc -- 2.39.5 From ca2a475f35cfb7fa12476e3694d7c9485c995e13 Mon Sep 17 00:00:00 2001 From: Lerking Date: Mon, 17 Dec 2018 19:09:57 +0100 Subject: [PATCH 11/13] Now able to process 'gtk.h' resulting in 'gtk.inc'. --- gtk.inc | 275 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ h2inc.py | 18 ++-- parser.py | 55 ++++++----- 3 files changed, 319 insertions(+), 29 deletions(-) create mode 100644 gtk.inc diff --git a/gtk.inc b/gtk.inc new file mode 100644 index 0000000..bf71833 --- /dev/null +++ b/gtk.inc @@ -0,0 +1,275 @@ +; GTK - The GIMP Toolkit +; Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library. If not, see . + +; +; Modified by the GTK+ Team and others 1997-2000. See the AUTHORS +; file for a list of people on the GTK+ Team. See the ChangeLog +; files for a list of changes. These files are distributed with +; GTK+ at ftp://ftp.gtk.org/pub/gtk/. + +%ifndef __GTK_H__ +$define __GTK_H__ +$define __GTK_H_INSIDE__ +$include "gdk/gdk.inc" +$include "gtk/gtkaboutdialog.inc" +$include "gtk/gtkaccelgroup.inc" +$include "gtk/gtkaccellabel.inc" +$include "gtk/gtkaccelmap.inc" +$include "gtk/gtkaccessible.inc" +$include "gtk/gtkactionable.inc" +$include "gtk/gtkactionbar.inc" +$include "gtk/gtkadjustment.inc" +$include "gtk/gtkappchooser.inc" +$include "gtk/gtkappchooserdialog.inc" +$include "gtk/gtkappchooserwidget.inc" +$include "gtk/gtkappchooserbutton.inc" +$include "gtk/gtkapplication.inc" +$include "gtk/gtkapplicationwindow.inc" +$include "gtk/gtkaspectframe.inc" +$include "gtk/gtkassistant.inc" +$include "gtk/gtkbbox.inc" +$include "gtk/gtkbin.inc" +$include "gtk/gtkbindings.inc" +$include "gtk/gtkborder.inc" +$include "gtk/gtkbox.inc" +$include "gtk/gtkbuildable.inc" +$include "gtk/gtkbuilder.inc" +$include "gtk/gtkbutton.inc" +$include "gtk/gtkcalendar.inc" +$include "gtk/gtkcellarea.inc" +$include "gtk/gtkcellareabox.inc" +$include "gtk/gtkcellareacontext.inc" +$include "gtk/gtkcelleditable.inc" +$include "gtk/gtkcelllayout.inc" +$include "gtk/gtkcellrenderer.inc" +$include "gtk/gtkcellrendereraccel.inc" +$include "gtk/gtkcellrenderercombo.inc" +$include "gtk/gtkcellrendererpixbuf.inc" +$include "gtk/gtkcellrendererprogress.inc" +$include "gtk/gtkcellrendererspin.inc" +$include "gtk/gtkcellrendererspinner.inc" +$include "gtk/gtkcellrenderertext.inc" +$include "gtk/gtkcellrenderertoggle.inc" +$include "gtk/gtkcellview.inc" +$include "gtk/gtkcheckbutton.inc" +$include "gtk/gtkcheckmenuitem.inc" +$include "gtk/gtkclipboard.inc" +$include "gtk/gtkcolorbutton.inc" +$include "gtk/gtkcolorchooser.inc" +$include "gtk/gtkcolorchooserdialog.inc" +$include "gtk/gtkcolorchooserwidget.inc" +$include "gtk/gtkcolorutils.inc" +$include "gtk/gtkcombobox.inc" +$include "gtk/gtkcomboboxtext.inc" +$include "gtk/gtkcontainer.inc" +$include "gtk/gtkcssprovider.inc" +$include "gtk/gtkcsssection.inc" +$include "gtk/gtkdebug.inc" +$include "gtk/gtkdialog.inc" +$include "gtk/gtkdnd.inc" +$include "gtk/gtkdrawingarea.inc" +$include "gtk/gtkeditable.inc" +$include "gtk/gtkentry.inc" +$include "gtk/gtkentrybuffer.inc" +$include "gtk/gtkentrycompletion.inc" +$include "gtk/gtkenums.inc" +$include "gtk/gtkeventbox.inc" +$include "gtk/gtkeventcontroller.inc" +$include "gtk/gtkexpander.inc" +$include "gtk/gtkfixed.inc" +$include "gtk/gtkfilechooser.inc" +$include "gtk/gtkfilechooserbutton.inc" +$include "gtk/gtkfilechooserdialog.inc" +$include "gtk/gtkfilechooserwidget.inc" +$include "gtk/gtkfilefilter.inc" +$include "gtk/gtkflowbox.inc" +$include "gtk/gtkfontbutton.inc" +$include "gtk/gtkfontchooser.inc" +$include "gtk/gtkfontchooserdialog.inc" +$include "gtk/gtkfontchooserwidget.inc" +$include "gtk/gtkframe.inc" +$include "gtk/gtkgesture.inc" +$include "gtk/gtkgesturedrag.inc" +$include "gtk/gtkgesturelongpress.inc" +$include "gtk/gtkgesturemultipress.inc" +$include "gtk/gtkgesturepan.inc" +$include "gtk/gtkgesturerotate.inc" +$include "gtk/gtkgesturesingle.inc" +$include "gtk/gtkgestureswipe.inc" +$include "gtk/gtkgesturezoom.inc" +$include "gtk/gtkglarea.inc" +$include "gtk/gtkgrid.inc" +$include "gtk/gtkheaderbar.inc" +$include "gtk/gtkicontheme.inc" +$include "gtk/gtkiconview.inc" +$include "gtk/gtkimage.inc" +$include "gtk/gtkimcontext.inc" +$include "gtk/gtkimcontextinfo.inc" +$include "gtk/gtkimcontextsimple.inc" +$include "gtk/gtkimmulticontext.inc" +$include "gtk/gtkinfobar.inc" +$include "gtk/gtkinvisible.inc" +$include "gtk/gtklabel.inc" +$include "gtk/gtklayout.inc" +$include "gtk/gtklevelbar.inc" +$include "gtk/gtklinkbutton.inc" +$include "gtk/gtklistbox.inc" +$include "gtk/gtkliststore.inc" +$include "gtk/gtklockbutton.inc" +$include "gtk/gtkmain.inc" +$include "gtk/gtkmenu.inc" +$include "gtk/gtkmenubar.inc" +$include "gtk/gtkmenubutton.inc" +$include "gtk/gtkmenuitem.inc" +$include "gtk/gtkmenushell.inc" +$include "gtk/gtkmenutoolbutton.inc" +$include "gtk/gtkmessagedialog.inc" +$include "gtk/gtkmodelbutton.inc" +$include "gtk/gtkmodules.inc" +$include "gtk/gtkmountoperation.inc" +$include "gtk/gtknotebook.inc" +$include "gtk/gtkoffscreenwindow.inc" +$include "gtk/gtkorientable.inc" +$include "gtk/gtkoverlay.inc" +$include "gtk/gtkpagesetup.inc" +$include "gtk/gtkpapersize.inc" +$include "gtk/gtkpaned.inc" +$include "gtk/gtkplacessidebar.inc" +$include "gtk/gtkpopover.inc" +$include "gtk/gtkpopovermenu.inc" +$include "gtk/gtkprintcontext.inc" +$include "gtk/gtkprintoperation.inc" +$include "gtk/gtkprintoperationpreview.inc" +$include "gtk/gtkprintsettings.inc" +$include "gtk/gtkprogressbar.inc" +$include "gtk/gtkradiobutton.inc" +$include "gtk/gtkradiomenuitem.inc" +$include "gtk/gtkradiotoolbutton.inc" +$include "gtk/gtkrange.inc" +$include "gtk/gtkrecentchooser.inc" +$include "gtk/gtkrecentchooserdialog.inc" +$include "gtk/gtkrecentchoosermenu.inc" +$include "gtk/gtkrecentchooserwidget.inc" +$include "gtk/gtkrecentfilter.inc" +$include "gtk/gtkrecentmanager.inc" +$include "gtk/gtkrender.inc" +$include "gtk/gtkrevealer.inc" +$include "gtk/gtkscale.inc" +$include "gtk/gtkscalebutton.inc" +$include "gtk/gtkscrollable.inc" +$include "gtk/gtkscrollbar.inc" +$include "gtk/gtkscrolledwindow.inc" +$include "gtk/gtksearchbar.inc" +$include "gtk/gtksearchentry.inc" +$include "gtk/gtkselection.inc" +$include "gtk/gtkseparator.inc" +$include "gtk/gtkseparatormenuitem.inc" +$include "gtk/gtkseparatortoolitem.inc" +$include "gtk/gtksettings.inc" +$include "gtk/gtkshow.inc" +$include "gtk/gtkstacksidebar.inc" +$include "gtk/gtksizegroup.inc" +$include "gtk/gtksizerequest.inc" +$include "gtk/gtkspinbutton.inc" +$include "gtk/gtkspinner.inc" +$include "gtk/gtkstack.inc" +$include "gtk/gtkstackswitcher.inc" +$include "gtk/gtkstatusbar.inc" +$include "gtk/gtkstylecontext.inc" +$include "gtk/gtkstyleprovider.inc" +$include "gtk/gtkswitch.inc" +$include "gtk/gtktextattributes.inc" +$include "gtk/gtktextbuffer.inc" +$include "gtk/gtktextbufferrichtext.inc" +$include "gtk/gtktextchild.inc" +$include "gtk/gtktextiter.inc" +$include "gtk/gtktextmark.inc" +$include "gtk/gtktexttag.inc" +$include "gtk/gtktexttagtable.inc" +$include "gtk/gtktextview.inc" +$include "gtk/gtktogglebutton.inc" +$include "gtk/gtktoggletoolbutton.inc" +$include "gtk/gtktoolbar.inc" +$include "gtk/gtktoolbutton.inc" +$include "gtk/gtktoolitem.inc" +$include "gtk/gtktoolitemgroup.inc" +$include "gtk/gtktoolpalette.inc" +$include "gtk/gtktoolshell.inc" +$include "gtk/gtktooltip.inc" +$include "gtk/gtktestutils.inc" +$include "gtk/gtktreednd.inc" +$include "gtk/gtktreemodel.inc" +$include "gtk/gtktreemodelfilter.inc" +$include "gtk/gtktreemodelsort.inc" +$include "gtk/gtktreeselection.inc" +$include "gtk/gtktreesortable.inc" +$include "gtk/gtktreestore.inc" +$include "gtk/gtktreeview.inc" +$include "gtk/gtktreeviewcolumn.inc" +$include "gtk/gtktypebuiltins.inc" +$include "gtk/gtktypes.inc" +$include "gtk/gtkversion.inc" +$include "gtk/gtkviewport.inc" +$include "gtk/gtkvolumebutton.inc" +$include "gtk/gtkwidget.inc" +$include "gtk/gtkwidgetpath.inc" +$include "gtk/gtkwindow.inc" +$include "gtk/gtkwindowgroup.inc" +%ifndef GTK_DISABLE_DEPRECATED +$include "gtk/deprecated/gtkarrow.inc" +$include "gtk/deprecated/gtkactivatable.inc" +$include "gtk/deprecated/gtkaction.inc" +$include "gtk/deprecated/gtkactiongroup.inc" +$include "gtk/deprecated/gtkalignment.inc" +$include "gtk/deprecated/gtkcolorsel.inc" +$include "gtk/deprecated/gtkcolorseldialog.inc" +$include "gtk/deprecated/gtkfontsel.inc" +$include "gtk/deprecated/gtkgradient.inc" +$include "gtk/deprecated/gtkhandlebox.inc" +$include "gtk/deprecated/gtkhbbox.inc" +$include "gtk/deprecated/gtkhbox.inc" +$include "gtk/deprecated/gtkhpaned.inc" +$include "gtk/deprecated/gtkhsv.inc" +$include "gtk/deprecated/gtkhscale.inc" +$include "gtk/deprecated/gtkhscrollbar.inc" +$include "gtk/deprecated/gtkhseparator.inc" +$include "gtk/deprecated/gtkiconfactory.inc" +$include "gtk/deprecated/gtkimagemenuitem.inc" +$include "gtk/deprecated/gtkmisc.inc" +$include "gtk/deprecated/gtknumerableicon.inc" +$include "gtk/deprecated/gtkradioaction.inc" +$include "gtk/deprecated/gtkrc.inc" +$include "gtk/deprecated/gtkrecentaction.inc" +$include "gtk/deprecated/gtkstatusicon.inc" +$include "gtk/deprecated/gtkstock.inc" +$include "gtk/deprecated/gtkstyle.inc" +$include "gtk/deprecated/gtkstyleproperties.inc" +$include "gtk/deprecated/gtksymboliccolor.inc" +$include "gtk/deprecated/gtktable.inc" +$include "gtk/deprecated/gtktearoffmenuitem.inc" +$include "gtk/deprecated/gtkthemingengine.inc" +$include "gtk/deprecated/gtktoggleaction.inc" +$include "gtk/deprecated/gtkuimanager.inc" +$include "gtk/deprecated/gtkvbbox.inc" +$include "gtk/deprecated/gtkvbox.inc" +$include "gtk/deprecated/gtkvpaned.inc" +$include "gtk/deprecated/gtkvscale.inc" +$include "gtk/deprecated/gtkvscrollbar.inc" +$include "gtk/deprecated/gtkvseparator.inc" +%endif ; GTK_DISABLE_DEPRECATED +$include "gtk/gtk-autocleanups.inc" +$undef __GTK_H_INSIDE__ +%endif ; __GTK_H__ diff --git a/h2inc.py b/h2inc.py index 93abddd..bf7d7c0 100644 --- a/h2inc.py +++ b/h2inc.py @@ -1,5 +1,6 @@ """Script for translating C-header files into nasm syntax include files""" import os +import errno from parser import PARSER class H2INC: @@ -76,12 +77,15 @@ class H2INC: fh.close() resultfile = parse.parseheader(self.tupfile) print(resultfile) - - #outputfile = os.path.splitext(inputfile)[0]+'.inc' - #outputfile = str(outputfile).replace(self.sourcedir, self.destdir) - #print(outputfile) - #print(os.path.dirname(outputfile)) - #self.write_file(outputfile,outfile) + for l in resultfile: + for w in l: + outfile += w+" " + outfile += "\n" + outputfile = os.path.splitext(inputfile)[0]+'.inc' + outputfile = str(outputfile).replace(self.sourcedir, self.destdir) + print(outputfile) + print(os.path.dirname(outputfile)) + self.write_file(outputfile,outfile) def write_file(self, fn, data): if not os.path.exists(os.path.dirname(fn)): @@ -105,4 +109,4 @@ if __name__ == "__main__": #print(app.folderlist) #for f in app.filelist: #app.read_file(f) - app.read_file("gtk.h") #testfile for comments and header includes \ No newline at end of file + app.read_file("./gtk.h") #testfile for comments and header includes \ No newline at end of file diff --git a/parser.py b/parser.py index 6b943ab..74fd77a 100644 --- a/parser.py +++ b/parser.py @@ -37,7 +37,7 @@ NASM_PREPROCESS_DIRECTIVES = {'#include' : '$include','#define' : '$define','#un '__DATE__' : '__DATE__','__TIME__' : '__TIME__','__TIMESTAMP__' : '__TIMESTAMP__', 'pragma' : 'pragma','#' : '#','##' : '##'} -NASM_REGULAR = {'/*' : ';', '*' : ';', '*/' : '\n'} +NASM_REGULAR = {'/*' : ';', '*' : ';', '*/' : ''} TOKENS += RESERVED.values() @@ -56,17 +56,19 @@ class PARSEOBJECT: self.parseline = [] self.parsefile = [] self._passes = count(0) + self.inside_comment = False def inc_passes(self): self.passes = next(self._passes) def parseheader(self, fl): + tempfile = [] self.parse_reset() for l in fl: analyzed_line = self.analyzer(l) - self.parsefile.append(analyzed_line) + tempfile.append(analyzed_line) self.inc_passes() - self.parsetokens(self.parsefile) + self.parsefile = self.parsetokens(tempfile) return self.parsefile def parseinclude(self, data): @@ -107,33 +109,42 @@ class PARSEOBJECT: tempfile = [] for l in fl: if len(l) == 0: + templine.append("\n") + continue + if l[0] == "TOKEN_CSTART" or l[0] == "TOKEN_CMID" or l[0] == "TOKEN_CEND": + self.inside_comment = True + tempfile.append(self.parse_comment(l)) continue - if l[0] == "TOKEN_CSTART": - if l[-1] == "TOKEN_CEND": - tempfile.append(self.parse_comment(l,COMMENT_SINGLE_LINE)) - else: - tempfile.append(self.parse_comment(l,COMMENT_MULTI_LINE)) if l[0] == "TOKEN_PREPROCESS": tempfile.append(self.parse_preprocess(l)) + return tempfile - def parse_comment(self, l, ct): - + def parse_comment(self, l): + templine = [] + for w in l: + if w in TOKENS: + continue + if w in NASM_REGULAR: + templine.append(NASM_REGULAR.get(w)) + continue + templine.append(w) + return templine def parse_preprocess(self, l): newline = [] - for e in l: - if e in TOKENS: + for w in l: + if w in TOKENS: continue - for k, v in PREPROCESSOR_DIRECTIVES.items(): - if k == e: - newline.append(NASM_PREPROCESS_DIRECTIVES.get(k)) - break - break - if k == "#include": - newline.append(self.parseinclude(e) - else: - newline.append(e) - newline.append('\n') + if w in PREPROCESSOR_DIRECTIVES: + newline.append(NASM_PREPROCESS_DIRECTIVES.get(w)) + continue + if w.startswith("<"): + newline.append(self.parseinclude(w)) + continue + if w in NASM_REGULAR: + newline.append(NASM_REGULAR.get(w)) + continue + newline.append(w) return newline -- 2.39.5 From 08270d2eb938be6a2d88451fe46469c52ed5d462 Mon Sep 17 00:00:00 2001 From: Lerking Date: Mon, 17 Dec 2018 19:13:38 +0100 Subject: [PATCH 12/13] Updated NASM_PREPROCESS_DIRECTIVES to get correct leading symbol '%'. --- parser.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/parser.py b/parser.py index 74fd77a..b258936 100644 --- a/parser.py +++ b/parser.py @@ -31,9 +31,9 @@ REGULAR = {'/*' : 'TOKEN_CSTART','*/' : 'TOKEN_CEND', '*' : 'TOKEN_CMID', '=' : '\*' : 'TOKEN_MULT','/' : 'TOKEN_DIV','\(' : 'TOKEN_LPAREN','\)' : 'TOKEN_RPAREN', ',' : 'TOKEN_COMMA',';' : 'TOKEN_SEMICOLON','\<' : 'TOKEN_LANGLE','\>' : 'TOKEN_RANGLE'} -NASM_PREPROCESS_DIRECTIVES = {'#include' : '$include','#define' : '$define','#undef' : '$undef', - '#if' : '$if','#ifdef' : '$ifdef','#ifndef' : '%ifndef','#endif' : '%endif', - '#error' : '$error','__FILE__' : '__FILE__','__LINE__' : '__LINE__', +NASM_PREPROCESS_DIRECTIVES = {'#include' : '%include','#define' : '%define','#undef' : '%undef', + '#if' : '%if','#ifdef' : '%ifdef','#ifndef' : '%ifndef','#endif' : '%endif', + '#error' : '%error','__FILE__' : '__FILE__','__LINE__' : '__LINE__', '__DATE__' : '__DATE__','__TIME__' : '__TIME__','__TIMESTAMP__' : '__TIMESTAMP__', 'pragma' : 'pragma','#' : '#','##' : '##'} -- 2.39.5 From 4f9609c1ac0aeeb5128beabbc7c4d4a22b3ef281 Mon Sep 17 00:00:00 2001 From: Lerking Date: Mon, 17 Dec 2018 19:15:04 +0100 Subject: [PATCH 13/13] Corrected 'gtk.inc'. --- gtk.inc | 498 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 249 insertions(+), 249 deletions(-) diff --git a/gtk.inc b/gtk.inc index bf71833..9e5c684 100644 --- a/gtk.inc +++ b/gtk.inc @@ -21,255 +21,255 @@ ; GTK+ at ftp://ftp.gtk.org/pub/gtk/. %ifndef __GTK_H__ -$define __GTK_H__ -$define __GTK_H_INSIDE__ -$include "gdk/gdk.inc" -$include "gtk/gtkaboutdialog.inc" -$include "gtk/gtkaccelgroup.inc" -$include "gtk/gtkaccellabel.inc" -$include "gtk/gtkaccelmap.inc" -$include "gtk/gtkaccessible.inc" -$include "gtk/gtkactionable.inc" -$include "gtk/gtkactionbar.inc" -$include "gtk/gtkadjustment.inc" -$include "gtk/gtkappchooser.inc" -$include "gtk/gtkappchooserdialog.inc" -$include "gtk/gtkappchooserwidget.inc" -$include "gtk/gtkappchooserbutton.inc" -$include "gtk/gtkapplication.inc" -$include "gtk/gtkapplicationwindow.inc" -$include "gtk/gtkaspectframe.inc" -$include "gtk/gtkassistant.inc" -$include "gtk/gtkbbox.inc" -$include "gtk/gtkbin.inc" -$include "gtk/gtkbindings.inc" -$include "gtk/gtkborder.inc" -$include "gtk/gtkbox.inc" -$include "gtk/gtkbuildable.inc" -$include "gtk/gtkbuilder.inc" -$include "gtk/gtkbutton.inc" -$include "gtk/gtkcalendar.inc" -$include "gtk/gtkcellarea.inc" -$include "gtk/gtkcellareabox.inc" -$include "gtk/gtkcellareacontext.inc" -$include "gtk/gtkcelleditable.inc" -$include "gtk/gtkcelllayout.inc" -$include "gtk/gtkcellrenderer.inc" -$include "gtk/gtkcellrendereraccel.inc" -$include "gtk/gtkcellrenderercombo.inc" -$include "gtk/gtkcellrendererpixbuf.inc" -$include "gtk/gtkcellrendererprogress.inc" -$include "gtk/gtkcellrendererspin.inc" -$include "gtk/gtkcellrendererspinner.inc" -$include "gtk/gtkcellrenderertext.inc" -$include "gtk/gtkcellrenderertoggle.inc" -$include "gtk/gtkcellview.inc" -$include "gtk/gtkcheckbutton.inc" -$include "gtk/gtkcheckmenuitem.inc" -$include "gtk/gtkclipboard.inc" -$include "gtk/gtkcolorbutton.inc" -$include "gtk/gtkcolorchooser.inc" -$include "gtk/gtkcolorchooserdialog.inc" -$include "gtk/gtkcolorchooserwidget.inc" -$include "gtk/gtkcolorutils.inc" -$include "gtk/gtkcombobox.inc" -$include "gtk/gtkcomboboxtext.inc" -$include "gtk/gtkcontainer.inc" -$include "gtk/gtkcssprovider.inc" -$include "gtk/gtkcsssection.inc" -$include "gtk/gtkdebug.inc" -$include "gtk/gtkdialog.inc" -$include "gtk/gtkdnd.inc" -$include "gtk/gtkdrawingarea.inc" -$include "gtk/gtkeditable.inc" -$include "gtk/gtkentry.inc" -$include "gtk/gtkentrybuffer.inc" -$include "gtk/gtkentrycompletion.inc" -$include "gtk/gtkenums.inc" -$include "gtk/gtkeventbox.inc" -$include "gtk/gtkeventcontroller.inc" -$include "gtk/gtkexpander.inc" -$include "gtk/gtkfixed.inc" -$include "gtk/gtkfilechooser.inc" -$include "gtk/gtkfilechooserbutton.inc" -$include "gtk/gtkfilechooserdialog.inc" -$include "gtk/gtkfilechooserwidget.inc" -$include "gtk/gtkfilefilter.inc" -$include "gtk/gtkflowbox.inc" -$include "gtk/gtkfontbutton.inc" -$include "gtk/gtkfontchooser.inc" -$include "gtk/gtkfontchooserdialog.inc" -$include "gtk/gtkfontchooserwidget.inc" -$include "gtk/gtkframe.inc" -$include "gtk/gtkgesture.inc" -$include "gtk/gtkgesturedrag.inc" -$include "gtk/gtkgesturelongpress.inc" -$include "gtk/gtkgesturemultipress.inc" -$include "gtk/gtkgesturepan.inc" -$include "gtk/gtkgesturerotate.inc" -$include "gtk/gtkgesturesingle.inc" -$include "gtk/gtkgestureswipe.inc" -$include "gtk/gtkgesturezoom.inc" -$include "gtk/gtkglarea.inc" -$include "gtk/gtkgrid.inc" -$include "gtk/gtkheaderbar.inc" -$include "gtk/gtkicontheme.inc" -$include "gtk/gtkiconview.inc" -$include "gtk/gtkimage.inc" -$include "gtk/gtkimcontext.inc" -$include "gtk/gtkimcontextinfo.inc" -$include "gtk/gtkimcontextsimple.inc" -$include "gtk/gtkimmulticontext.inc" -$include "gtk/gtkinfobar.inc" -$include "gtk/gtkinvisible.inc" -$include "gtk/gtklabel.inc" -$include "gtk/gtklayout.inc" -$include "gtk/gtklevelbar.inc" -$include "gtk/gtklinkbutton.inc" -$include "gtk/gtklistbox.inc" -$include "gtk/gtkliststore.inc" -$include "gtk/gtklockbutton.inc" -$include "gtk/gtkmain.inc" -$include "gtk/gtkmenu.inc" -$include "gtk/gtkmenubar.inc" -$include "gtk/gtkmenubutton.inc" -$include "gtk/gtkmenuitem.inc" -$include "gtk/gtkmenushell.inc" -$include "gtk/gtkmenutoolbutton.inc" -$include "gtk/gtkmessagedialog.inc" -$include "gtk/gtkmodelbutton.inc" -$include "gtk/gtkmodules.inc" -$include "gtk/gtkmountoperation.inc" -$include "gtk/gtknotebook.inc" -$include "gtk/gtkoffscreenwindow.inc" -$include "gtk/gtkorientable.inc" -$include "gtk/gtkoverlay.inc" -$include "gtk/gtkpagesetup.inc" -$include "gtk/gtkpapersize.inc" -$include "gtk/gtkpaned.inc" -$include "gtk/gtkplacessidebar.inc" -$include "gtk/gtkpopover.inc" -$include "gtk/gtkpopovermenu.inc" -$include "gtk/gtkprintcontext.inc" -$include "gtk/gtkprintoperation.inc" -$include "gtk/gtkprintoperationpreview.inc" -$include "gtk/gtkprintsettings.inc" -$include "gtk/gtkprogressbar.inc" -$include "gtk/gtkradiobutton.inc" -$include "gtk/gtkradiomenuitem.inc" -$include "gtk/gtkradiotoolbutton.inc" -$include "gtk/gtkrange.inc" -$include "gtk/gtkrecentchooser.inc" -$include "gtk/gtkrecentchooserdialog.inc" -$include "gtk/gtkrecentchoosermenu.inc" -$include "gtk/gtkrecentchooserwidget.inc" -$include "gtk/gtkrecentfilter.inc" -$include "gtk/gtkrecentmanager.inc" -$include "gtk/gtkrender.inc" -$include "gtk/gtkrevealer.inc" -$include "gtk/gtkscale.inc" -$include "gtk/gtkscalebutton.inc" -$include "gtk/gtkscrollable.inc" -$include "gtk/gtkscrollbar.inc" -$include "gtk/gtkscrolledwindow.inc" -$include "gtk/gtksearchbar.inc" -$include "gtk/gtksearchentry.inc" -$include "gtk/gtkselection.inc" -$include "gtk/gtkseparator.inc" -$include "gtk/gtkseparatormenuitem.inc" -$include "gtk/gtkseparatortoolitem.inc" -$include "gtk/gtksettings.inc" -$include "gtk/gtkshow.inc" -$include "gtk/gtkstacksidebar.inc" -$include "gtk/gtksizegroup.inc" -$include "gtk/gtksizerequest.inc" -$include "gtk/gtkspinbutton.inc" -$include "gtk/gtkspinner.inc" -$include "gtk/gtkstack.inc" -$include "gtk/gtkstackswitcher.inc" -$include "gtk/gtkstatusbar.inc" -$include "gtk/gtkstylecontext.inc" -$include "gtk/gtkstyleprovider.inc" -$include "gtk/gtkswitch.inc" -$include "gtk/gtktextattributes.inc" -$include "gtk/gtktextbuffer.inc" -$include "gtk/gtktextbufferrichtext.inc" -$include "gtk/gtktextchild.inc" -$include "gtk/gtktextiter.inc" -$include "gtk/gtktextmark.inc" -$include "gtk/gtktexttag.inc" -$include "gtk/gtktexttagtable.inc" -$include "gtk/gtktextview.inc" -$include "gtk/gtktogglebutton.inc" -$include "gtk/gtktoggletoolbutton.inc" -$include "gtk/gtktoolbar.inc" -$include "gtk/gtktoolbutton.inc" -$include "gtk/gtktoolitem.inc" -$include "gtk/gtktoolitemgroup.inc" -$include "gtk/gtktoolpalette.inc" -$include "gtk/gtktoolshell.inc" -$include "gtk/gtktooltip.inc" -$include "gtk/gtktestutils.inc" -$include "gtk/gtktreednd.inc" -$include "gtk/gtktreemodel.inc" -$include "gtk/gtktreemodelfilter.inc" -$include "gtk/gtktreemodelsort.inc" -$include "gtk/gtktreeselection.inc" -$include "gtk/gtktreesortable.inc" -$include "gtk/gtktreestore.inc" -$include "gtk/gtktreeview.inc" -$include "gtk/gtktreeviewcolumn.inc" -$include "gtk/gtktypebuiltins.inc" -$include "gtk/gtktypes.inc" -$include "gtk/gtkversion.inc" -$include "gtk/gtkviewport.inc" -$include "gtk/gtkvolumebutton.inc" -$include "gtk/gtkwidget.inc" -$include "gtk/gtkwidgetpath.inc" -$include "gtk/gtkwindow.inc" -$include "gtk/gtkwindowgroup.inc" +%define __GTK_H__ +%define __GTK_H_INSIDE__ +%include "gdk/gdk.inc" +%include "gtk/gtkaboutdialog.inc" +%include "gtk/gtkaccelgroup.inc" +%include "gtk/gtkaccellabel.inc" +%include "gtk/gtkaccelmap.inc" +%include "gtk/gtkaccessible.inc" +%include "gtk/gtkactionable.inc" +%include "gtk/gtkactionbar.inc" +%include "gtk/gtkadjustment.inc" +%include "gtk/gtkappchooser.inc" +%include "gtk/gtkappchooserdialog.inc" +%include "gtk/gtkappchooserwidget.inc" +%include "gtk/gtkappchooserbutton.inc" +%include "gtk/gtkapplication.inc" +%include "gtk/gtkapplicationwindow.inc" +%include "gtk/gtkaspectframe.inc" +%include "gtk/gtkassistant.inc" +%include "gtk/gtkbbox.inc" +%include "gtk/gtkbin.inc" +%include "gtk/gtkbindings.inc" +%include "gtk/gtkborder.inc" +%include "gtk/gtkbox.inc" +%include "gtk/gtkbuildable.inc" +%include "gtk/gtkbuilder.inc" +%include "gtk/gtkbutton.inc" +%include "gtk/gtkcalendar.inc" +%include "gtk/gtkcellarea.inc" +%include "gtk/gtkcellareabox.inc" +%include "gtk/gtkcellareacontext.inc" +%include "gtk/gtkcelleditable.inc" +%include "gtk/gtkcelllayout.inc" +%include "gtk/gtkcellrenderer.inc" +%include "gtk/gtkcellrendereraccel.inc" +%include "gtk/gtkcellrenderercombo.inc" +%include "gtk/gtkcellrendererpixbuf.inc" +%include "gtk/gtkcellrendererprogress.inc" +%include "gtk/gtkcellrendererspin.inc" +%include "gtk/gtkcellrendererspinner.inc" +%include "gtk/gtkcellrenderertext.inc" +%include "gtk/gtkcellrenderertoggle.inc" +%include "gtk/gtkcellview.inc" +%include "gtk/gtkcheckbutton.inc" +%include "gtk/gtkcheckmenuitem.inc" +%include "gtk/gtkclipboard.inc" +%include "gtk/gtkcolorbutton.inc" +%include "gtk/gtkcolorchooser.inc" +%include "gtk/gtkcolorchooserdialog.inc" +%include "gtk/gtkcolorchooserwidget.inc" +%include "gtk/gtkcolorutils.inc" +%include "gtk/gtkcombobox.inc" +%include "gtk/gtkcomboboxtext.inc" +%include "gtk/gtkcontainer.inc" +%include "gtk/gtkcssprovider.inc" +%include "gtk/gtkcsssection.inc" +%include "gtk/gtkdebug.inc" +%include "gtk/gtkdialog.inc" +%include "gtk/gtkdnd.inc" +%include "gtk/gtkdrawingarea.inc" +%include "gtk/gtkeditable.inc" +%include "gtk/gtkentry.inc" +%include "gtk/gtkentrybuffer.inc" +%include "gtk/gtkentrycompletion.inc" +%include "gtk/gtkenums.inc" +%include "gtk/gtkeventbox.inc" +%include "gtk/gtkeventcontroller.inc" +%include "gtk/gtkexpander.inc" +%include "gtk/gtkfixed.inc" +%include "gtk/gtkfilechooser.inc" +%include "gtk/gtkfilechooserbutton.inc" +%include "gtk/gtkfilechooserdialog.inc" +%include "gtk/gtkfilechooserwidget.inc" +%include "gtk/gtkfilefilter.inc" +%include "gtk/gtkflowbox.inc" +%include "gtk/gtkfontbutton.inc" +%include "gtk/gtkfontchooser.inc" +%include "gtk/gtkfontchooserdialog.inc" +%include "gtk/gtkfontchooserwidget.inc" +%include "gtk/gtkframe.inc" +%include "gtk/gtkgesture.inc" +%include "gtk/gtkgesturedrag.inc" +%include "gtk/gtkgesturelongpress.inc" +%include "gtk/gtkgesturemultipress.inc" +%include "gtk/gtkgesturepan.inc" +%include "gtk/gtkgesturerotate.inc" +%include "gtk/gtkgesturesingle.inc" +%include "gtk/gtkgestureswipe.inc" +%include "gtk/gtkgesturezoom.inc" +%include "gtk/gtkglarea.inc" +%include "gtk/gtkgrid.inc" +%include "gtk/gtkheaderbar.inc" +%include "gtk/gtkicontheme.inc" +%include "gtk/gtkiconview.inc" +%include "gtk/gtkimage.inc" +%include "gtk/gtkimcontext.inc" +%include "gtk/gtkimcontextinfo.inc" +%include "gtk/gtkimcontextsimple.inc" +%include "gtk/gtkimmulticontext.inc" +%include "gtk/gtkinfobar.inc" +%include "gtk/gtkinvisible.inc" +%include "gtk/gtklabel.inc" +%include "gtk/gtklayout.inc" +%include "gtk/gtklevelbar.inc" +%include "gtk/gtklinkbutton.inc" +%include "gtk/gtklistbox.inc" +%include "gtk/gtkliststore.inc" +%include "gtk/gtklockbutton.inc" +%include "gtk/gtkmain.inc" +%include "gtk/gtkmenu.inc" +%include "gtk/gtkmenubar.inc" +%include "gtk/gtkmenubutton.inc" +%include "gtk/gtkmenuitem.inc" +%include "gtk/gtkmenushell.inc" +%include "gtk/gtkmenutoolbutton.inc" +%include "gtk/gtkmessagedialog.inc" +%include "gtk/gtkmodelbutton.inc" +%include "gtk/gtkmodules.inc" +%include "gtk/gtkmountoperation.inc" +%include "gtk/gtknotebook.inc" +%include "gtk/gtkoffscreenwindow.inc" +%include "gtk/gtkorientable.inc" +%include "gtk/gtkoverlay.inc" +%include "gtk/gtkpagesetup.inc" +%include "gtk/gtkpapersize.inc" +%include "gtk/gtkpaned.inc" +%include "gtk/gtkplacessidebar.inc" +%include "gtk/gtkpopover.inc" +%include "gtk/gtkpopovermenu.inc" +%include "gtk/gtkprintcontext.inc" +%include "gtk/gtkprintoperation.inc" +%include "gtk/gtkprintoperationpreview.inc" +%include "gtk/gtkprintsettings.inc" +%include "gtk/gtkprogressbar.inc" +%include "gtk/gtkradiobutton.inc" +%include "gtk/gtkradiomenuitem.inc" +%include "gtk/gtkradiotoolbutton.inc" +%include "gtk/gtkrange.inc" +%include "gtk/gtkrecentchooser.inc" +%include "gtk/gtkrecentchooserdialog.inc" +%include "gtk/gtkrecentchoosermenu.inc" +%include "gtk/gtkrecentchooserwidget.inc" +%include "gtk/gtkrecentfilter.inc" +%include "gtk/gtkrecentmanager.inc" +%include "gtk/gtkrender.inc" +%include "gtk/gtkrevealer.inc" +%include "gtk/gtkscale.inc" +%include "gtk/gtkscalebutton.inc" +%include "gtk/gtkscrollable.inc" +%include "gtk/gtkscrollbar.inc" +%include "gtk/gtkscrolledwindow.inc" +%include "gtk/gtksearchbar.inc" +%include "gtk/gtksearchentry.inc" +%include "gtk/gtkselection.inc" +%include "gtk/gtkseparator.inc" +%include "gtk/gtkseparatormenuitem.inc" +%include "gtk/gtkseparatortoolitem.inc" +%include "gtk/gtksettings.inc" +%include "gtk/gtkshow.inc" +%include "gtk/gtkstacksidebar.inc" +%include "gtk/gtksizegroup.inc" +%include "gtk/gtksizerequest.inc" +%include "gtk/gtkspinbutton.inc" +%include "gtk/gtkspinner.inc" +%include "gtk/gtkstack.inc" +%include "gtk/gtkstackswitcher.inc" +%include "gtk/gtkstatusbar.inc" +%include "gtk/gtkstylecontext.inc" +%include "gtk/gtkstyleprovider.inc" +%include "gtk/gtkswitch.inc" +%include "gtk/gtktextattributes.inc" +%include "gtk/gtktextbuffer.inc" +%include "gtk/gtktextbufferrichtext.inc" +%include "gtk/gtktextchild.inc" +%include "gtk/gtktextiter.inc" +%include "gtk/gtktextmark.inc" +%include "gtk/gtktexttag.inc" +%include "gtk/gtktexttagtable.inc" +%include "gtk/gtktextview.inc" +%include "gtk/gtktogglebutton.inc" +%include "gtk/gtktoggletoolbutton.inc" +%include "gtk/gtktoolbar.inc" +%include "gtk/gtktoolbutton.inc" +%include "gtk/gtktoolitem.inc" +%include "gtk/gtktoolitemgroup.inc" +%include "gtk/gtktoolpalette.inc" +%include "gtk/gtktoolshell.inc" +%include "gtk/gtktooltip.inc" +%include "gtk/gtktestutils.inc" +%include "gtk/gtktreednd.inc" +%include "gtk/gtktreemodel.inc" +%include "gtk/gtktreemodelfilter.inc" +%include "gtk/gtktreemodelsort.inc" +%include "gtk/gtktreeselection.inc" +%include "gtk/gtktreesortable.inc" +%include "gtk/gtktreestore.inc" +%include "gtk/gtktreeview.inc" +%include "gtk/gtktreeviewcolumn.inc" +%include "gtk/gtktypebuiltins.inc" +%include "gtk/gtktypes.inc" +%include "gtk/gtkversion.inc" +%include "gtk/gtkviewport.inc" +%include "gtk/gtkvolumebutton.inc" +%include "gtk/gtkwidget.inc" +%include "gtk/gtkwidgetpath.inc" +%include "gtk/gtkwindow.inc" +%include "gtk/gtkwindowgroup.inc" %ifndef GTK_DISABLE_DEPRECATED -$include "gtk/deprecated/gtkarrow.inc" -$include "gtk/deprecated/gtkactivatable.inc" -$include "gtk/deprecated/gtkaction.inc" -$include "gtk/deprecated/gtkactiongroup.inc" -$include "gtk/deprecated/gtkalignment.inc" -$include "gtk/deprecated/gtkcolorsel.inc" -$include "gtk/deprecated/gtkcolorseldialog.inc" -$include "gtk/deprecated/gtkfontsel.inc" -$include "gtk/deprecated/gtkgradient.inc" -$include "gtk/deprecated/gtkhandlebox.inc" -$include "gtk/deprecated/gtkhbbox.inc" -$include "gtk/deprecated/gtkhbox.inc" -$include "gtk/deprecated/gtkhpaned.inc" -$include "gtk/deprecated/gtkhsv.inc" -$include "gtk/deprecated/gtkhscale.inc" -$include "gtk/deprecated/gtkhscrollbar.inc" -$include "gtk/deprecated/gtkhseparator.inc" -$include "gtk/deprecated/gtkiconfactory.inc" -$include "gtk/deprecated/gtkimagemenuitem.inc" -$include "gtk/deprecated/gtkmisc.inc" -$include "gtk/deprecated/gtknumerableicon.inc" -$include "gtk/deprecated/gtkradioaction.inc" -$include "gtk/deprecated/gtkrc.inc" -$include "gtk/deprecated/gtkrecentaction.inc" -$include "gtk/deprecated/gtkstatusicon.inc" -$include "gtk/deprecated/gtkstock.inc" -$include "gtk/deprecated/gtkstyle.inc" -$include "gtk/deprecated/gtkstyleproperties.inc" -$include "gtk/deprecated/gtksymboliccolor.inc" -$include "gtk/deprecated/gtktable.inc" -$include "gtk/deprecated/gtktearoffmenuitem.inc" -$include "gtk/deprecated/gtkthemingengine.inc" -$include "gtk/deprecated/gtktoggleaction.inc" -$include "gtk/deprecated/gtkuimanager.inc" -$include "gtk/deprecated/gtkvbbox.inc" -$include "gtk/deprecated/gtkvbox.inc" -$include "gtk/deprecated/gtkvpaned.inc" -$include "gtk/deprecated/gtkvscale.inc" -$include "gtk/deprecated/gtkvscrollbar.inc" -$include "gtk/deprecated/gtkvseparator.inc" +%include "gtk/deprecated/gtkarrow.inc" +%include "gtk/deprecated/gtkactivatable.inc" +%include "gtk/deprecated/gtkaction.inc" +%include "gtk/deprecated/gtkactiongroup.inc" +%include "gtk/deprecated/gtkalignment.inc" +%include "gtk/deprecated/gtkcolorsel.inc" +%include "gtk/deprecated/gtkcolorseldialog.inc" +%include "gtk/deprecated/gtkfontsel.inc" +%include "gtk/deprecated/gtkgradient.inc" +%include "gtk/deprecated/gtkhandlebox.inc" +%include "gtk/deprecated/gtkhbbox.inc" +%include "gtk/deprecated/gtkhbox.inc" +%include "gtk/deprecated/gtkhpaned.inc" +%include "gtk/deprecated/gtkhsv.inc" +%include "gtk/deprecated/gtkhscale.inc" +%include "gtk/deprecated/gtkhscrollbar.inc" +%include "gtk/deprecated/gtkhseparator.inc" +%include "gtk/deprecated/gtkiconfactory.inc" +%include "gtk/deprecated/gtkimagemenuitem.inc" +%include "gtk/deprecated/gtkmisc.inc" +%include "gtk/deprecated/gtknumerableicon.inc" +%include "gtk/deprecated/gtkradioaction.inc" +%include "gtk/deprecated/gtkrc.inc" +%include "gtk/deprecated/gtkrecentaction.inc" +%include "gtk/deprecated/gtkstatusicon.inc" +%include "gtk/deprecated/gtkstock.inc" +%include "gtk/deprecated/gtkstyle.inc" +%include "gtk/deprecated/gtkstyleproperties.inc" +%include "gtk/deprecated/gtksymboliccolor.inc" +%include "gtk/deprecated/gtktable.inc" +%include "gtk/deprecated/gtktearoffmenuitem.inc" +%include "gtk/deprecated/gtkthemingengine.inc" +%include "gtk/deprecated/gtktoggleaction.inc" +%include "gtk/deprecated/gtkuimanager.inc" +%include "gtk/deprecated/gtkvbbox.inc" +%include "gtk/deprecated/gtkvbox.inc" +%include "gtk/deprecated/gtkvpaned.inc" +%include "gtk/deprecated/gtkvscale.inc" +%include "gtk/deprecated/gtkvscrollbar.inc" +%include "gtk/deprecated/gtkvseparator.inc" %endif ; GTK_DISABLE_DEPRECATED -$include "gtk/gtk-autocleanups.inc" -$undef __GTK_H_INSIDE__ +%include "gtk/gtk-autocleanups.inc" +%undef __GTK_H_INSIDE__ %endif ; __GTK_H__ -- 2.39.5