def genCustomClass(nameSpace, classNameSrc, idx, methodArgs):
    classNameCXX = gen.getClassNameCXX(nameSpace, classNameSrc)
    classNamePD = gen.getClassNamePD(nameSpace, classNameSrc)
    classNameLetters = classNamePD.replace(".","_")
    return customClassTemplate.format(CLASSNAME_CXX = classNameCXX, \
    CLASSNAME_PD = classNamePD, \
    CLASSNAME_LETTERS = classNameLetters, \
    CONSTRUCTOR = classNameSrc, \
    NAMESPACE = nameSpace, \
    IDX = idx, \
    METHOD_ARGS = methodArgs)
def genClassStaticMethod(nameSpace, classNameSrc, idx, methodNameSrc, methodReturn, methodArgs):
    classNameCXX = gen.getClassNameCXX(nameSpace, classNameSrc)
    classNamePD = gen.getClassNamePD(nameSpace, classNameSrc)
    classNameLetters = classNamePD.replace(".","_")
    methodNameCXX = methodNameSrc
    methodNamePD = gen.convertName(methodNameSrc)
    methodNameLetters = methodNamePD.replace(".","_")
    #
    return classStaticMethodTemplate.format(NAMESPACE = nameSpace, \
    CLASSNAME_CXX = classNameCXX, \
    CLASSNAME_PD = classNamePD, \
    CLASSNAME_LETTERS = classNameLetters, \
    METHODNAME_CXX = methodNameCXX, \
    METHODNAME_PD = methodNamePD, \
    METHODNAME_LETTERS = methodNameLetters, \
    IDX = idx, \
    METHOD_RETURN = methodReturn, \
    METHOD_ARGS = methodArgs)
                methodReturn = m["rtnType"]

                methodInfoString = "(" + " ".join(
                    methodType) + ")->" + methodReturn

                lastClassName = className.split("::")[-1]
                customConstructor = False
                methodName = m["name"]
                if methodName == lastClassName:
                    #exclude default
                    if methodType != "":
                        customConstructor = True

                if customConstructor:
                    pdObjectName = gen.getClassNamePD(nameSpace,
                                                      className) + ".new"
                    docwrite.customClassObject(
                        gen.getClassNameCXX(nameSpace, className), "",
                        pdObjectName, methodInfoString)
                    dbFile.write("{0} . .\n".format(pdObjectName))
                    continue

                if m["static"] == True:
                    docwrite.staticMethodObject(pdClassName, "", pdObjectName,
                                                methodType, methodReturn, c)
                else:
                    docwrite.classMethodObject(pdClassName, "", pdObjectName,
                                               methodType, methodReturn, c)

                dbFile.write("{0} . ..\n".format(pdObjectName))
def genClass(nameSpace, classNameSrc):
    classNameCXX = gen.getClassNameCXX(nameSpace, classNameSrc)
    classNamePD = gen.getClassNamePD(nameSpace, classNameSrc)
    return classTemplate.format(CLASSNAME_CXX = classNameCXX, NAMESPACE = nameSpace, CLASSNAME_PD = classNamePD)
def genFunc(nameSpace, funcNameSrc,  idx, funcReturn, funcArgs):
    funcNameCXX = gen.getClassNameCXX(nameSpace, funcNameSrc)
    funcNamePD = gen.getClassNamePD(nameSpace, funcNameSrc)
    return funcTemplate.format(FUNCTIONNAME_CXX = funcNameCXX, NAMESPACE = nameSpace, FUNCTIONNAME_PD = funcNamePD, IDX = idx, FUNC_RETURN = funcReturn, FUNC_ARGS = funcArgs )