if args['withUnusedHeaders']:
            filesToParsePatterns += ['*.h', '*.hxx', '*.hpp']
        filesToParse = findFilesInDir(args['d'], filesToParsePatterns)
        subdirectories = [x[0] for x in os.walk(args['d'])]

        loggingFormat = "%(levelname)s - %(module)s: %(message)s"
        logging.basicConfig(format=loggingFormat, level=logging.INFO)
        if args['verbose']:
            logging.basicConfig(format=loggingFormat, level=logging.DEBUG)

        logging.info("found " + str(len(filesToParse)) + " source files.")

        for sourceFile in filesToParse:
            logging.info("parsing file " + sourceFile)
            parseTranslationUnit(
                    sourceFile, args['includeDirs'], {
                        'excludeClasses': args['excludeClasses'],
                        'includeClasses': args['includeClasses']
                        })

                    dotGenerator.setDrawAssociations(args['associations'])
    dotGenerator.setDrawInheritances(args['inheritances'])
    dotGenerator.setShowPrivMethods(args['privMembers'])
    dotGenerator.setShowProtMethods(args['protMembers'])
    #dotGenerator.setShowPubMethods(args['pubMembers'])

    dotfileName = args['outFile']
    logging.info("generating dotfile " + dotfileName)
    with open(dotfileName, 'w') as dotfile:
        dotfile.write(dotGenerator.generate())
dot.setShowPubMethods(True)

c1 = UmlClass()
c1.fqn = "NS1::AClass"
c1.addField("aa", "int", private)
c1.addField("bb", "void*", private)
c1.addField("cc", "NS1::BClass", private)
c1.addField("dd", "void", private)
c1.addField("publicField1", "CClass", public)
c1.addField("publicField2", "none", public)

c1.addMethod("void", "privateMethod1", "(asdds, dss*)", private)
c1.addMethod("BClass", "privateMethod2", "(asdf)", private)
c1.addMethod("void", "publicMethod1", "(asdds, dss*)", public)
c1.addMethod("BClass", "publicMethod2", "(asdf)", public)
dot.addClass(c1)

c2 = UmlClass()
c2.fqn = "NS1::BClass"
c2.parents.append(c1.fqn)
dot.addClass(c2)

c3 = UmlClass()
c3.fqn = "CClass"
dot.addClass(c3)

outputDotFile = ['uml2.dot', sys.argv[1]][len(sys.argv) == 2]

with open(outputDotFile, "w") as dotfile:
    dotfile.write(dot.generate())
import sys

dot = DotGenerator()

privateFields=[("aa", "int"),("bb","void*"),("cc","NS1::BClass"),("dd", "void")]
privateMethods=[("void", "privateMethod1", "(asdds, dss*)"), ("BClass", "privateMethod2", "(asdf)")]
publicFields=[("publicField1","CClass"), ("publicField2", "none")]
publicMethods=[("void", "publicMethod1", "(asdds, dss*)"), ("BClass", "publicMethod2", "(asdf)")]

c1 = UmlClass()
c1.fqn = "NS1::AClass"
c1.privateFields = privateFields
c1.privateMethods = privateMethods
c1.publicFields = publicFields
c1.publicMethods = publicMethods
dot.addClass(c1)

c2 = UmlClass()
c2.fqn = "NS1::BClass"
c2.parents.append(c1.fqn)
dot.addClass(c2)

c3 = UmlClass()
c3.fqn = "CClass"
dot.addClass(c3)

outputDotFile = ['uml2.dot', sys.argv[1]][len(sys.argv) == 2]

with open(outputDotFile, "w") as dotfile:
    dotfile.write(dot.generate())
    if args["withUnusedHeaders"]:
        filesToParsePatterns += ["*.h", "*.hxx", "*.hpp"]
    filesToParse = findFilesInDir(args["d"], filesToParsePatterns)
    subdirectories = [x[0] for x in os.walk(args["d"])]

    loggingFormat = "%(levelname)s - %(module)s: %(message)s"
    logging.basicConfig(format=loggingFormat, level=logging.INFO)
    if args["verbose"]:
        logging.basicConfig(format=loggingFormat, level=logging.DEBUG)

    logging.info("found " + str(len(filesToParse)) + " source files.")

    for sourceFile in filesToParse:
        logging.info("parsing file " + sourceFile)
        parseTranslationUnit(
            sourceFile,
            args["includeDirs"],
            {"excludeClasses": args["excludeClasses"], "includeClasses": args["includeClasses"]},
        )

    dotGenerator.setDrawAssociations(args["associations"])
    dotGenerator.setDrawInheritances(args["inheritances"])
    dotGenerator.setShowPrivMethods(args["privMembers"])
    dotGenerator.setShowProtMethods(args["protMembers"])
    dotGenerator.setShowPubMethods(args["pubMembers"])

    dotfileName = args["outFile"]
    logging.info("generating dotfile " + dotfileName)
    with open(dotfileName, "w") as dotfile:
        dotfile.write(dotGenerator.generate())