summaryrefslogtreecommitdiffstats
path: root/Tools/scripts/h2py.py
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/scripts/h2py.py')
-rwxr-xr-xTools/scripts/h2py.py200
1 files changed, 100 insertions, 100 deletions
diff --git a/Tools/scripts/h2py.py b/Tools/scripts/h2py.py
index fd4b267..92f64c0 100755
--- a/Tools/scripts/h2py.py
+++ b/Tools/scripts/h2py.py
@@ -41,110 +41,110 @@ p_char = regex.compile("'\(\\\\.[^\\\\]*\|[^\\\\]\)'")
filedict = {}
try:
- searchdirs=string.splitfields(os.environ['include'],';')
+ searchdirs=string.splitfields(os.environ['include'],';')
except KeyError:
- try:
- searchdirs=string.splitfields(os.environ['INCLUDE'],';')
- except KeyError:
- try:
- if string.find( sys.platform, "beos" ) == 0:
- searchdirs=string.splitfields(os.environ['BEINCLUDES'],';')
- else:
- raise KeyError
- except KeyError:
- searchdirs=['/usr/include']
+ try:
+ searchdirs=string.splitfields(os.environ['INCLUDE'],';')
+ except KeyError:
+ try:
+ if string.find( sys.platform, "beos" ) == 0:
+ searchdirs=string.splitfields(os.environ['BEINCLUDES'],';')
+ else:
+ raise KeyError
+ except KeyError:
+ searchdirs=['/usr/include']
def main():
- global filedict
- opts, args = getopt.getopt(sys.argv[1:], 'i:')
- for o, a in opts:
- if o == '-i':
- ignores.append(regex.compile(a))
- if not args:
- args = ['-']
- for filename in args:
- if filename == '-':
- sys.stdout.write('# Generated by h2py from stdin\n')
- process(sys.stdin, sys.stdout)
- else:
- fp = open(filename, 'r')
- outfile = os.path.basename(filename)
- i = string.rfind(outfile, '.')
- if i > 0: outfile = outfile[:i]
- outfile = string.upper(outfile)
- outfile = outfile + '.py'
- outfp = open(outfile, 'w')
- outfp.write('# Generated by h2py from %s\n' % filename)
- filedict = {}
- for dir in searchdirs:
- if filename[:len(dir)] == dir:
- filedict[filename[len(dir)+1:]] = None # no '/' trailing
- break
- process(fp, outfp)
- outfp.close()
- fp.close()
+ global filedict
+ opts, args = getopt.getopt(sys.argv[1:], 'i:')
+ for o, a in opts:
+ if o == '-i':
+ ignores.append(regex.compile(a))
+ if not args:
+ args = ['-']
+ for filename in args:
+ if filename == '-':
+ sys.stdout.write('# Generated by h2py from stdin\n')
+ process(sys.stdin, sys.stdout)
+ else:
+ fp = open(filename, 'r')
+ outfile = os.path.basename(filename)
+ i = string.rfind(outfile, '.')
+ if i > 0: outfile = outfile[:i]
+ outfile = string.upper(outfile)
+ outfile = outfile + '.py'
+ outfp = open(outfile, 'w')
+ outfp.write('# Generated by h2py from %s\n' % filename)
+ filedict = {}
+ for dir in searchdirs:
+ if filename[:len(dir)] == dir:
+ filedict[filename[len(dir)+1:]] = None # no '/' trailing
+ break
+ process(fp, outfp)
+ outfp.close()
+ fp.close()
def process(fp, outfp, env = {}):
- lineno = 0
- while 1:
- line = fp.readline()
- if not line: break
- lineno = lineno + 1
- n = p_define.match(line)
- if n >= 0:
- # gobble up continuation lines
- while line[-2:] == '\\\n':
- nextline = fp.readline()
- if not nextline: break
- lineno = lineno + 1
- line = line + nextline
- name = p_define.group(1)
- body = line[n:]
- # replace ignored patterns by spaces
- for p in ignores:
- body = regsub.gsub(p, ' ', body)
- # replace char literals by ord(...)
- body = regsub.gsub(p_char, 'ord(\\0)', body)
- stmt = '%s = %s\n' % (name, string.strip(body))
- ok = 0
- try:
- exec stmt in env
- except:
- sys.stderr.write('Skipping: %s' % stmt)
- else:
- outfp.write(stmt)
- n =p_macro.match(line)
- if n >= 0:
- macro, arg = p_macro.group(1, 2)
- body = line[n:]
- for p in ignores:
- body = regsub.gsub(p, ' ', body)
- body = regsub.gsub(p_char, 'ord(\\0)', body)
- stmt = 'def %s(%s): return %s\n' % (macro, arg, body)
- try:
- exec stmt in env
- except:
- sys.stderr.write('Skipping: %s' % stmt)
- else:
- outfp.write(stmt)
- if p_include.match(line) >= 0:
- regs = p_include.regs
- a, b = regs[1]
- filename = line[a:b]
- if not filedict.has_key(filename):
- filedict[filename] = None
- inclfp = None
- for dir in searchdirs:
- try:
- inclfp = open(dir + '/' + filename, 'r')
- break
- except IOError:
- pass
- if inclfp:
- outfp.write(
- '\n# Included from %s\n' % filename)
- process(inclfp, outfp, env)
- else:
- sys.stderr.write('Warning - could not find file %s' % filename)
+ lineno = 0
+ while 1:
+ line = fp.readline()
+ if not line: break
+ lineno = lineno + 1
+ n = p_define.match(line)
+ if n >= 0:
+ # gobble up continuation lines
+ while line[-2:] == '\\\n':
+ nextline = fp.readline()
+ if not nextline: break
+ lineno = lineno + 1
+ line = line + nextline
+ name = p_define.group(1)
+ body = line[n:]
+ # replace ignored patterns by spaces
+ for p in ignores:
+ body = regsub.gsub(p, ' ', body)
+ # replace char literals by ord(...)
+ body = regsub.gsub(p_char, 'ord(\\0)', body)
+ stmt = '%s = %s\n' % (name, string.strip(body))
+ ok = 0
+ try:
+ exec stmt in env
+ except:
+ sys.stderr.write('Skipping: %s' % stmt)
+ else:
+ outfp.write(stmt)
+ n =p_macro.match(line)
+ if n >= 0:
+ macro, arg = p_macro.group(1, 2)
+ body = line[n:]
+ for p in ignores:
+ body = regsub.gsub(p, ' ', body)
+ body = regsub.gsub(p_char, 'ord(\\0)', body)
+ stmt = 'def %s(%s): return %s\n' % (macro, arg, body)
+ try:
+ exec stmt in env
+ except:
+ sys.stderr.write('Skipping: %s' % stmt)
+ else:
+ outfp.write(stmt)
+ if p_include.match(line) >= 0:
+ regs = p_include.regs
+ a, b = regs[1]
+ filename = line[a:b]
+ if not filedict.has_key(filename):
+ filedict[filename] = None
+ inclfp = None
+ for dir in searchdirs:
+ try:
+ inclfp = open(dir + '/' + filename, 'r')
+ break
+ except IOError:
+ pass
+ if inclfp:
+ outfp.write(
+ '\n# Included from %s\n' % filename)
+ process(inclfp, outfp, env)
+ else:
+ sys.stderr.write('Warning - could not find file %s' % filename)
main()