import sys
import string
import os.path
HELP_USAGE = "Usage: generate_includes.py
\n"
def GetGuard(filename):
return string.replace(os.path.basename(filename), '.', '_')
def CreateHeader(thisHeader, numHeaders, option):
filename = "Header" + str(thisHeader) + ".h"
handle = file(filename, "w" )
if (option == "pragma"):
handle.write('#pragma once\n')
if (option == "internal"):
guard = GetGuard(filename)
handle.write( '#ifndef %s\n' % guard )
handle.write( '#define %s\n' % guard )
for i in xrange(thisHeader+1, numHeaders):
include = "Header" + str(i) + ".h"
if (option == "external"):
guard = GetGuard(include)
handle.write( '#ifndef %s\n' % guard )
handle.write( '#define %s\n' % guard )
handle.write ('#include "%s"\n' % include)
if (option == "external"):
handle.write( '#endif\n')
if (option == "internal"):
handle.write( '#endif\n\n' )
def GenerateHeaders(numHeaders, option):
for i in xrange(numHeaders):
CreateHeader(i, numHeaders, option)
def CreateMain(numHeaders, option):
handle = file("main.cpp", "w" )
for i in xrange(numHeaders):
include = "Header" + str(i) + ".h"
if (option == "external"):
guard = GetGuard(include)
handle.write( '#ifndef %s\n' % guard )
handle.write( '#define %s\n' % guard )
handle.write ('#include "%s"\n' % include)
if (option == "external"):
handle.write( '#endif\n')
handle.write( '\n\n' )
handle.write( 'int main() { return 0; }\n\n' )
def main(argv):
if len(argv) != 4:
print HELP_USAGE
return
dir = argv[1]
numheaders = int(argv[2])
option = string.lower(argv[3])
if (option != "nothing" and option != "internal" and option != "external" and option != "pragma"):
print HELP_USAGE
return
if (not os.path.exists(dir)):
os.mkdir(dir)
os.chdir(dir)
GenerateHeaders(numheaders, option)
CreateMain(numheaders, option)
if __name__ == "__main__":
main( sys.argv )