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 )