Commit 35afc13e authored by Hisham Muhammad's avatar Hisham Muhammad
Browse files

New version of MakeHeader. Does not use 'private' comment annotation,

using the 'static' storage class instead. Automatically generates
'extern' declarations in headers for non-static data.
parent 5d07013e
......@@ -8,6 +8,7 @@ SKIP=3
SKIPONE=4
state = ANY
static = 0
file = open(sys.argv[1])
name = sys.argv[1][:-2]
......@@ -34,15 +35,27 @@ for line in file.readlines():
state = COPY
elif line == selfheader:
pass
elif string.find(line, "typedef") == 0 or line == "/* private */":
elif line.find("htop - ") == 0 and line[-2:] == ".c":
out.write(line[:-2] + ".h")
elif line.find("static ") != -1:
if line[-1] == "{":
state = SKIP
elif string.find(line, "/* private property */") == 0:
static = 1
else:
state = SKIPONE
elif len(line) > 1 and line[-1] == "{":
elif len(line) > 1:
static = 0
equals = line.find(" = ")
if line[-3:] == "= {":
out.write( "extern " + line[:-4] + ";" )
state = SKIP
elif equals != -1:
out.write("extern " + line[:equals] + ";" )
elif line[-1] == "{":
out.write( line[:-2] + ";" )
state = SKIP
elif line == "":
out.write( "" )
else:
out.write( line )
else:
out.write( line )
elif state == COPY:
......@@ -52,7 +65,11 @@ for line in file.readlines():
out.write( line )
elif state == SKIP:
if len(line) >= 1 and line[0] == "}":
if static == 1:
state = SKIPONE
else:
state = ANY
static = 0
elif state == SKIPONE:
state = ANY
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment