Exemplo n.º 1
0
def main():
    args = parse_args()
    headers = fileCollection.getHeaderFiles(args.src)
    
    for head in headers:
        try:
            cppHeader = CppHeaderParser.CppHeader(head)
        except CppHeaderParser.CppParseError as e:
            print(e)
            sys.exit(1)
            print CT.boldBlack("Class public methods")

        if(len(cppHeader.classes) + len(cppHeader.functions) > 0):
            testerCppPath = os.path.join(args.outDir,head.replace(".hpp", "Tester.cpp"))
            mkdir_p_forFile(testerCppPath)
            if os.path.exists(testerCppPath):
                if args.overWrite:
                    os.remove(testerCppPath)
                else:
                    print "Skipping", testerCppPath, "it already exist, use --overWrite to replace"
                    continue
            with open(testerCppPath, "w") as testerFile:
                testerFile.write("#include <catch.hpp>\n")
                testerFile.write("#include \"" + "../" + head + "\"\n")
                for func in cppHeader.functions:
                    testerFile.write(testerBodyTemplate.format(REPLACETHIS=func["name"], REPLACETHIS_DETAILED = getFuncDetailed(func)))
                for k in cppHeader.classes.keys():
                    for i in range(len(cppHeader.classes[k]["methods"]["public"])):
                        testerFile.write(testerBodyTemplate.format(REPLACETHIS=cppHeader.classes[k]["methods"]["public"][i]["name"], REPLACETHIS_DETAILED = getFuncDetailed(cppHeader.classes[k]["methods"]["public"][i])))
    createTestMain(os.path.join(args.outDir, args.src), args.overWrite)
    copyMakefile("scripts/cppSetUpFiles/unitTest/Makefile", os.path.join(args.outDir, "Makefile"), args.overWrite)
    return 0
Exemplo n.º 2
0
def main():
    args = parse_args()
    projectOut = os.path.join(args.dest[0], args.projName[0])
    os.mkdir(projectOut)
    genSrc(projectOut, args.projName[0], ["iostream", "string", "unistd.h", "vector", "cstdint", "cstdio", "cstddef", "utility", "map", "unordered_map", "algorithm"])
    CC = genHelper.determineCC(args)
    CXX = genHelper.determineCXX(args)
    external = "external"
    outname = args.projName[0]
    prefix = "./"
    installName = args.projName[0]
    neededLibs = "none"        
    if args.externalLoc:
        external = os.path.realpath(args.externalLoc[0])
    if args.neededLibs:
        neededLibs = args.neededLibs[0].split(",")
    genHelper.generateCompfileFull(os.path.join(projectOut, "compfile.mk"), external, CC, CXX, outname, installName, prefix, neededLibs)
    with open(os.path.join(projectOut, "configure.py"), "w") as configFile:
        if(args.neededLibs):
            configFile.write(genHelper.mkConfigFileStr(outname, args.neededLibs[0]))
        else:
            configFile.write(genHelper.mkConfigFileStr(outname, ""))
    os.chmod(os.path.join(projectOut, "configure.py"), stat.S_IXGRP | stat.S_IXOTH | stat.S_IXUSR | stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH | stat.S_IWUSR)
    exFrom = os.path.abspath(os.path.dirname(__file__))
    cpSetUpCmd = exFrom + "/copySetUpFiles.py -from " + exFrom +"/../../ -to " + projectOut
    print CT.boldBlack(cpSetUpCmd)
    Utils.run(cpSetUpCmd)
    cpMakefilesCmd = "cp " + exFrom + "/../cppSetUpFiles/*akefile* " + projectOut
    print CT.boldBlack(cpMakefilesCmd)
    Utils.run(cpMakefilesCmd)
Exemplo n.º 3
0
def main():
    args = parse_args()
    try:
        cppHeader = CppHeaderParser.CppHeader(args.file)
    except CppHeaderParser.CppParseError as e:
        print(e)
        sys.exit(1)
    
    print(CT.boldBlack("Class public methods"))
    for k in list(cppHeader.classes.keys()):
        print(CT.boldBlack(k))
        for i in range(len(cppHeader.classes[k]["methods"]["public"])):
            print("\t",cppHeader.classes[k]["methods"]["public"][i]["name"])
    print("")
    print(CT.boldBlack("Includes"))        
    for include in cppHeader.includes:
        if "//" in include:
            print("\t" + include[0:include.find("//")].strip())
        elif "/*" in include:
            print("\t" + include[0:include.find("/*")].strip())
        else:
            print("\t" + include)
    
    print(("\n" + CT.boldBlack("Free functions are:")))
    for func in cppHeader.functions:
        print(("\t%s"%func["name"]))
Exemplo n.º 4
0
def main():
    args = parse_args()
    try:
        cppHeader = CppHeaderParser.CppHeader(args.file)
    except CppHeaderParser.CppParseError as e:
        print(e)
        sys.exit(1)

    print(CT.boldBlack("Class public methods"))
    for k in list(cppHeader.classes.keys()):
        print(CT.boldBlack(k))
        for i in range(len(cppHeader.classes[k]["methods"]["public"])):
            print("\t", cppHeader.classes[k]["methods"]["public"][i]["name"])
    print("")
    print(CT.boldBlack("Includes"))
    for include in cppHeader.includes:
        if "//" in include:
            print("\t" + include[0:include.find("//")].strip())
        elif "/*" in include:
            print("\t" + include[0:include.find("/*")].strip())
        else:
            print("\t" + include)

    print(("\n" + CT.boldBlack("Free functions are:")))
    for func in cppHeader.functions:
        print(("\t%s" % func["name"]))
Exemplo n.º 5
0
 def rmDirsForLib(self,lib):
     if lib not in self.setUps:
         print CT.boldBlack( "Unrecognized lib: ") + CT.boldRed(lib)
     else:
         p = self.__path(lib)
         if p.build_dir:
             print "Removing " + CT.boldBlack(p.build_dir)
             Utils.rm_rf(p.build_dir)
         if p.local_dir:
             print "Removing " + CT.boldBlack(p.local_dir)
             Utils.rm_rf(p.local_dir)
Exemplo n.º 6
0
def main():
    args = parse_args()
    externalIncludes = []
    stdLibraryInc = [
        "iostream", "string", "unistd.h", "vector", "cstdint", "cstdio",
        "cstddef", "utility", "map", "unordered_map", "algorithm"
    ]
    projectOut = os.path.join(args.dest[0], args.projName[0])
    os.mkdir(projectOut)
    if args.programType == "singleRing":
        genSrcSingleRingProgram(projectOut, args.projName[0], stdLibraryInc,
                                externalIncludes, args.author)
    elif args.programType == "oneRing":
        genSrcWithOneRingProgram(projectOut, args.projName[0], stdLibraryInc,
                                 externalIncludes, args.author)
    elif args.programType == "oneCmd":
        genSrcWithOneCmdProgram(projectOut, args.projName[0], stdLibraryInc,
                                externalIncludes, args.author)
    else:
        raise Exception(
            "Error, only singleRing, oneRing,oneCmd available for options to programType, was given "
            + args.programType)

    CC = genHelper.determineCC(args)
    CXX = genHelper.determineCXX(args)
    external = "external"
    outname = args.projName[0]
    prefix = "./"
    installName = args.projName[0]
    neededLibs = ["bibcppdev"]
    if args.externalLoc:
        external = os.path.realpath(args.externalLoc[0])
    if args.neededLibs:
        neededLibs = ["bibcppdev"] + args.neededLibs[0].split(",")
    genHelper.generateCompfileFull(os.path.join(projectOut, "compfile.mk"),
                                   external, CC, CXX, outname, installName,
                                   prefix, neededLibs)
    with open(os.path.join(projectOut, "configure.py"), "w") as configFile:
        if (args.neededLibs):
            configFile.write(
                genHelper.mkConfigFileStr(outname, ",".join(neededLibs)))
        else:
            configFile.write(genHelper.mkConfigFileStr(outname, "bibcppdev"))
    os.chmod(
        os.path.join(projectOut, "configure.py"),
        stat.S_IXGRP | stat.S_IXOTH | stat.S_IXUSR | stat.S_IRUSR
        | stat.S_IRGRP | stat.S_IROTH | stat.S_IWUSR)
    exFrom = os.path.abspath(os.path.dirname(__file__))
    cpSetUpCmd = exFrom + "/copySetUpFiles.py -from " + exFrom + "/../../ -to " + projectOut
    print CT.boldBlack(cpSetUpCmd)
    Utils.run(cpSetUpCmd)
    cpMakefilesCmd = "cp " + exFrom + "/../cppSetUpFiles/*akefile* " + projectOut
    print CT.boldBlack(cpMakefilesCmd)
    Utils.run(cpMakefilesCmd)
Exemplo n.º 7
0
 def installRPackageName(self, packageName):
     i = self.__path("r")
     for pack in packageName.split(","):
         if isMac():
             cmd = """echo 'install.packages(c(\"{PACKAGENAME}\"), repos=\"http://cran.us.r-project.org\")' | $({local_dir}/R.framework/Resources/bin/R RHOME)/bin/R --slave --vanilla
             """.format(local_dir=shellquote(i.local_dir).replace(' ', '\ '), PACKAGENAME = pack )
         else:
             cmd = """echo 'install.packages(\"{PACKAGENAME}\", repos=\"http://cran.us.r-project.org\")'  | $({local_dir}/bin/R RHOME)/bin/R --slave --vanilla
             """.format(local_dir=shellquote(i.local_dir).replace(' ', '\ '),PACKAGENAME = pack )
         print CT.boldBlack(cmd)
         cmd = " ".join(cmd.split())
         Utils.run(cmd)
Exemplo n.º 8
0
 def installRPackageSource(self, sourceFile):
     i = self.__path("r")
     for pack in sourceFile.split(","):
         if isMac():
             cmd = """echo 'install.packages(\"{SOURCEFILE}\", repos = NULL, type="source")' | $({local_dir}/R.framework/Resources/bin/R RHOME)/bin/R --slave --vanilla
             """.format(local_dir=shellquote(i.local_dir).replace(' ', '\ '),SOURCEFILE = pack )
         else:
             cmd = """echo 'install.packages(\"{SOURCEFILE}\", repos = NULL, type="source")' | $({local_dir}/bin/R RHOME)/bin/R --slave --vanilla
             """.format(local_dir=shellquote(i.local_dir).replace(' ', '\ '),SOURCEFILE = pack )
         print CT.boldBlack(cmd)
         cmd = " ".join(cmd.split())
         Utils.run(cmd)
Exemplo n.º 9
0
def genCppProject(args):
    projectOut = os.path.join(args.dest, args.projName)
    if os.path.exists(projectOut):
        if args.overwrite:
            shutil.rmtree(projectOut)
        else:
            raise Exception("Directory " + str(projectOut) +
                            " already exists, use --overWrite to delete")
    #create project dir
    os.mkdir(projectOut)
    #generate skeleton source code directory
    genSrc(projectOut, args.projName, [
        "iostream", "string", "unistd.h", "vector", "cstdint", "cstdio",
        "cstddef", "utility", "map", "unordered_map", "algorithm"
    ])
    #determine c++ and c compilers
    CC = genHelper.determineCC(args)
    CXX = genHelper.determineCXX(args)
    external = "external"
    outname = args.projName
    prefix = "./"
    installName = args.projName
    neededLibs = "none"
    if args.externalLoc:
        external = os.path.realpath(args.externalLoc)
    if args.neededLibs:
        neededLibs = args.neededLibs.split(",")
    #generate the compfile
    genHelper.generateCompfileFull(os.path.join(projectOut, "compfile.mk"),
                                   external, CC, CXX, outname, installName,
                                   prefix, neededLibs)
    #generate config file
    with open(os.path.join(projectOut, "configure.py"), "w") as configFile:
        if args.neededLibs:
            configFile.write(
                genHelper.mkConfigFileStr(outname, args.neededLibs))
        else:
            configFile.write(genHelper.mkConfigFileStr(outname, ""))
    #make executable
    os.chmod(
        os.path.join(projectOut, "configure.py"),
        stat.S_IXGRP | stat.S_IXOTH | stat.S_IXUSR | stat.S_IRUSR
        | stat.S_IRGRP | stat.S_IROTH | stat.S_IWUSR)
    #determine this file's location to dtermine where to copy setup and make files to
    exFrom = os.path.abspath(os.path.dirname(__file__))
    cpSetUpCmd = exFrom + "/copySetUpFiles.py -from " + exFrom + "/../../ -to " + projectOut
    print CT.boldBlack(cpSetUpCmd)
    Utils.run(cpSetUpCmd)
    cpMakefilesCmd = "cp " + exFrom + "/../cppMakefiles/Makefile " + projectOut
    print CT.boldBlack(cpMakefilesCmd)
    Utils.run(cpMakefilesCmd)
    #generate README.md
    genReadme(projectOut, args.projName)
Exemplo n.º 10
0
def genHellos(outFilename, overWrite = False, python = False):
    if python:
        if not outFilename.endswith(".py"):
            outFilename = outFilename + ".py"
        if os.path.exists(outFilename) and not overWrite:
            raise Exception(CT.boldRed("File ") + CT.boldBlack(outFilename) + CT.boldRed(" already exists, use --overWrite to over write it"))
        genPyHello(outFilename)
        #rwx to user and group, r-x to everyone
        fd = os.open( outFilename, os.O_RDONLY )
        os.fchmod( fd, 0775)
        os.close( fd )
        print (CT.boldGreen("Now run"))
        print ("./" + outFilename + " ")
        print (CT.boldGreen("or"))
        print ("./" + outFilename + " --name Nick")
    else:
        if not outFilename.endswith(".cpp"):
            outFilename = outFilename + ".cpp"
        if os.path.exists(outFilename) and not overWrite:
            raise Exception("File " + outFilename + " already exists, use --overWrite to over write it")
        genCppHello(outFilename)
        print (CT.boldGreen("Now run"))
        print ("g++ -std=c++11 " + outFilename + " -o hello #-std=c++11 needed for cstdint include in libstdc++")
        print ("./hello")
        print (CT.boldGreen("or run"))
        #mac
        if Utils.isMac():
            print ("clang++ " + outFilename + " -o hello")
        else:
            print ("clang++-3.6 -std=c++11 " + outFilename + " -o hello #-std=c++11 needed for cstdint include in libstdc++")
        print ("./hello")
Exemplo n.º 11
0
def genHellos(outFilename, overWrite = False, python = False):
    if python:
        if not outFilename.endswith(".py"):
            outFilename = outFilename + ".py"
        if os.path.exists(outFilename) and not overWrite:
            raise Exception(CT.boldRed("File ") + CT.boldBlack(outFilename) + CT.boldRed(" already exists, use --overWrite to over write it"))
        genPyHello(outFilename)
        #rwx to user and group, r-x to everyone
        fd = os.open( outFilename, os.O_RDONLY )
        os.fchmod( fd, 0o775)
        os.close( fd )
        print((CT.boldGreen("Now run")))
        print(("./" + outFilename + " "))
        print((CT.boldGreen("or")))
        print(("./" + outFilename + " --name Nick"))
    else:
        if not outFilename.endswith(".cpp"):
            outFilename = outFilename + ".cpp"
        if os.path.exists(outFilename) and not overWrite:
            raise Exception("File " + outFilename + " already exists, use --overWrite to over write it")
        genCppHello(outFilename)
        print((CT.boldGreen("Now run")))
        print(("g++ -std=c++11 " + outFilename + " -o hello #-std=c++11 needed for cstdint include in libstdc++"))
        print ("./hello")
        print((CT.boldGreen("or run")))
        #mac
        if Utils.isMac():
            print(("clang++ " + outFilename + " -o hello"))
        else:
            print(("clang++-3.6 -std=c++11 " + outFilename + " -o hello #-std=c++11 needed for cstdint include in libstdc++"))
        print ("./hello")
Exemplo n.º 12
0
def main():
    args = parse_args()
    headers = fileCollection.getHeaderFiles(args.src)

    for head in headers:
        try:
            cppHeader = CppHeaderParser.CppHeader(head)
        except CppHeaderParser.CppParseError as e:
            print(e)
            sys.exit(1)
            print CT.boldBlack("Class public methods")

        if (len(cppHeader.classes) + len(cppHeader.functions) > 0):
            testerCppPath = os.path.join(args.outDir,
                                         head.replace(".hpp", "Tester.cpp"))
            mkdir_p_forFile(testerCppPath)
            if os.path.exists(testerCppPath):
                if args.overWrite:
                    os.remove(testerCppPath)
                else:
                    print "Skipping", testerCppPath, "it already exist, use --overWrite to replace"
                    continue
            with open(testerCppPath, "w") as testerFile:
                testerFile.write("#include <catch.hpp>\n")
                testerFile.write("#include \"" + "../" + head + "\"\n")
                for func in cppHeader.functions:
                    testerFile.write(
                        testerBodyTemplate.format(
                            REPLACETHIS=func["name"],
                            REPLACETHIS_DETAILED=getFuncDetailed(func)))
                for k in cppHeader.classes.keys():
                    for i in range(
                            len(cppHeader.classes[k]["methods"]["public"])):
                        testerFile.write(
                            testerBodyTemplate.format(
                                REPLACETHIS=cppHeader.classes[k]["methods"]
                                ["public"][i]["name"],
                                REPLACETHIS_DETAILED=getFuncDetailed(
                                    cppHeader.classes[k]["methods"]["public"]
                                    [i])))
    createTestMain(os.path.join(args.outDir, args.src), args.overWrite)
    copyMakefile("scripts/cppMakefiles/unitTest/Makefile",
                 os.path.join(args.outDir, "Makefile"), args.overWrite)
    return 0
Exemplo n.º 13
0
    def setup(self):
        if self.args.forceUpdate:
            for set in self.setUpsNeeded.keys():
                if not set in self.setUps.keys():
                    print CT.boldBlack( "Unrecognized option ") + CT.boldRed(set)
                else:
                    self.rmDirsForLib(set)
                        
        for set in self.setUpsNeeded.keys():
            if not set in self.setUps.keys():
                print CT.boldBlack( "Unrecognized option ") + CT.boldRed(set)
            else:
                self.__setup(set, self.setUps[set])

        for p in self.installed:
            print p, CT.boldGreen("installed")

        for p in self.failedInstall:
            print  p, CT.boldRed("failed to install")
Exemplo n.º 14
0
def genCppProject(args):
    projectOut = os.path.join(args.dest, args.projName)
    if os.path.exists(projectOut):
        if args.overwrite:
            shutil.rmtree(projectOut)
        else:
            raise Exception("Directory " + str(projectOut) + " already exists, use --overWrite to delete")
    #create project dir
    os.mkdir(projectOut)
    #generate skeleton source code directory
    genSrc(projectOut, args.projName, ["iostream", "string", "unistd.h", "vector", "cstdint", "cstdio", "cstddef", "utility", "map", "unordered_map", "algorithm"])
    #determine c++ and c compilers
    CC = genHelper.determineCC(args)
    CXX = genHelper.determineCXX(args)
    external = "external"
    outname = args.projName
    prefix = "./"
    installName = args.projName
    neededLibs = "none"        
    if args.externalLoc:
        external = os.path.realpath(args.externalLoc)
    if args.neededLibs:
        neededLibs = args.neededLibs.split(",")
    #generate the compfile
    genHelper.generateCompfileFull(os.path.join(projectOut, "compfile.mk"), external, CC, CXX, outname, installName, prefix, neededLibs)
    #generate config file
    with open(os.path.join(projectOut, "configure.py"), "w") as configFile:
        if args.neededLibs:
            configFile.write(genHelper.mkConfigFileStr(outname, args.neededLibs))
        else:
            configFile.write(genHelper.mkConfigFileStr(outname, ""))
    #make executable
    os.chmod(os.path.join(projectOut, "configure.py"), stat.S_IXGRP | stat.S_IXOTH | stat.S_IXUSR | stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH | stat.S_IWUSR)
    #determine this file's location to dtermine where to copy setup and make files to
    exFrom = os.path.abspath(os.path.dirname(__file__))
    cpSetUpCmd = exFrom + "/copySetUpFiles.py -from " + exFrom + "/../../ -to " + projectOut
    print CT.boldBlack(cpSetUpCmd)
    Utils.run(cpSetUpCmd)
    cpMakefilesCmd = "cp " + exFrom + "/../cppMakefiles/Makefile " + projectOut
    print CT.boldBlack(cpMakefilesCmd)
    Utils.run(cpMakefilesCmd)
    #generate README.md
    genReadme(projectOut, args.projName)
Exemplo n.º 15
0
def main():
    args = parse_args()
    externalIncludes = []
    stdLibraryInc = ["iostream", "string", "unistd.h", "vector", "cstdint", "cstdio", "cstddef", "utility", "map", "unordered_map", "algorithm"]
    projectOut = os.path.join(args.dest[0], args.projName[0])
    os.mkdir(projectOut)
    if args.programType == "singleRing":
        genSrcSingleRingProgram(projectOut, args.projName[0], stdLibraryInc, externalIncludes, args.author)
    elif args.programType == "oneRing":
        genSrcWithOneRingProgram(projectOut, args.projName[0], stdLibraryInc, externalIncludes, args.author)
    elif args.programType == "oneCmd":
        genSrcWithOneCmdProgram(projectOut, args.projName[0], stdLibraryInc, externalIncludes, args.author)
    else:
        raise Exception("Error, only singleRing, oneRing,oneCmd available for options to programType, was given " + args.programType )
    
    CC = genHelper.determineCC(args)
    CXX = genHelper.determineCXX(args)
    external = "external"
    outname = args.projName[0]
    prefix = "./"
    installName = args.projName[0]
    neededLibs = ["njhcppdev"]        
    if args.externalLoc:
        external = os.path.realpath(args.externalLoc[0])
    if args.neededLibs:
        neededLibs = ["njhcppdev"] + args.neededLibs[0].split(",")
    genHelper.generateCompfileFull(os.path.join(projectOut, "compfile.mk"), external, CC, CXX, outname, installName, prefix, neededLibs)
    with open(os.path.join(projectOut, "configure.py"), "w") as configFile:
        if(args.neededLibs):
            configFile.write(genHelper.mkConfigFileStr(outname, ",".join(neededLibs)))
        else:
            configFile.write(genHelper.mkConfigFileStr(outname, "njhcppdev"))
    os.chmod(os.path.join(projectOut, "configure.py"), stat.S_IXGRP | stat.S_IXOTH | stat.S_IXUSR | stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH | stat.S_IWUSR)
    exFrom = os.path.abspath(os.path.dirname(__file__))
    cpSetUpCmd = exFrom + "/copySetUpFiles.py -from " + exFrom +"/../../ -to " + projectOut
    print CT.boldBlack(cpSetUpCmd)
    Utils.run(cpSetUpCmd)
    cpMakefilesCmd = "cp " + exFrom + "/../cppSetUpFiles/*akefile* " + projectOut
    print CT.boldBlack(cpMakefilesCmd)
    Utils.run(cpMakefilesCmd)
Exemplo n.º 16
0
 def __setup(self, name, builder_f):
     if os.path.exists(self.__path(name).local_dir):
         print name, CT.boldGreen("found at ") + CT.boldBlack(self.__path(name).local_dir)
     else:
         print name, CT.boldRed("NOT"), "found; building..."
         try:
             builder_f()
             self.installed.append(name)
         except Exception as inst:
             print type(inst)
             print inst 
             print "failed to install " + name
             self.failedInstall.append(name)
Exemplo n.º 17
0
def parseForHeaders(args):
    headers = set()
    unknowns = []

    for arg in args:
        if arg in objToHeader:
            headers.add(objToHeader[arg])
        elif ("std::" + arg) in objToHeader:
            headers.add(objToHeader["std::" + arg])
        else:
            unknowns.append(arg)
    print(CT.boldRed("Unknowns:"))
    for u in unknowns:
        print(CT.boldBlack("unknown which header file contains"), CT.boldRed(u))

    if headers:
        print(CT.boldGreen("found headers:"))
        for h in sorted(headers):
            print(h)
Exemplo n.º 18
0
def parseForHeaders(args):
    headers = set()
    unknowns = []

    for arg in args:
        if arg in objToHeader:
            headers.add(objToHeader[arg])
        elif ("std::" + arg) in objToHeader:
            headers.add(objToHeader["std::" + arg])
        else:
            unknowns.append(arg)
    print(CT.boldRed("Unknowns:"))
    for u in unknowns:
        print(CT.boldBlack("unknown which header file contains"),
              CT.boldRed(u))

    if headers:
        print(CT.boldGreen("found headers:"))
        for h in sorted(headers):
            print(h)
Exemplo n.º 19
0
def main():
    args = parse_args()
    try:
        cppHeader = CppHeaderParser.CppHeader(args.file)
    except CppHeaderParser.CppParseError as e:
        print(e)
        sys.exit(1)
    
    print CT.boldBlack("Class public methods")
    for k in cppHeader.classes.keys():
        print CT.boldBlack(k)
        for i in range(len(cppHeader.classes[k]["methods"]["public"])):
            print "\t",cppHeader.classes[k]["methods"]["public"][i]["name"]
    print ""
    print CT.boldBlack("Includes")        
    for include in cppHeader.includes:
        print "\t",include
    
    print("\n" + CT.boldBlack("Free functions are:"))
    for func in cppHeader.functions:
        print("\t%s"%func["name"])