|
From: <ki...@us...> - 2003-06-17 01:18:27
|
Update of /cvsroot/pymerase/pymerase/pymerase/output
In directory sc8-pr-cvs1:/tmp/cvs-serv4123
Modified Files:
CreateCppAPI.py
Log Message:
Generate some of the cpp class code
Added more info to header files
Documented code a little more
Index: CreateCppAPI.py
===================================================================
RCS file: /cvsroot/pymerase/pymerase/pymerase/output/CreateCppAPI.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** CreateCppAPI.py 16 Jun 2003 20:43:51 -0000 1.2
--- CreateCppAPI.py 17 Jun 2003 01:18:23 -0000 1.3
***************
*** 41,44 ****
--- 41,45 ----
from pymerase.output.CppAPI.Templates import Template
+ from pymerase.output.CppAPI.CppUtil import CppUtil
from pymerase.ClassMembers import getAllAttributes
***************
*** 55,58 ****
--- 56,62 ----
TRANSLATOR_NAME='CreateCppAPI'
+ # C++ Code Util
+ util = CppUtil()
+
def saveFile(dest, fileName, cppFile):
if not os.path.exists(dest):
***************
*** 76,79 ****
--- 80,84 ----
"""
+ ###################################
#Iterate through the tables/classes and process the data
for cls in classList:
***************
*** 82,96 ****
headerFileName = className + '.h'
cppFileName = className + '.cpp'
! clsHeader = templateUtil.getCppClassHeaderTemplate()
! clsHeader = re.sub("%CLASS_NAME%", className, clsHeader)
constructorCode = []
constructorCode.append("%s();" % (className))
constructorCode.append(" %PUBLIC%")
constructorCode = string.join(constructorCode, '\n')
!
! clsHeader = re.sub("%PUBLIC%", constructorCode, clsHeader)
for attribute in getAllAttributes(classList, cls, TRANSLATOR_NAME):
type = attribute.getType().getCppTypeStr()
--- 87,116 ----
headerFileName = className + '.h'
cppFileName = className + '.cpp'
+
+ ############################
+ # HEADER FILE - PREP
! # Get Header Template
! cppHeader = templateUtil.getCppClassHeaderTemplate()
! cppHeader = re.sub("%CLASS_NAME%", className, cppHeader)
+ # Header constructor
constructorCode = []
constructorCode.append("%s();" % (className))
constructorCode.append(" %PUBLIC%")
constructorCode = string.join(constructorCode, '\n')
! cppHeader = re.sub("%PUBLIC%", constructorCode, cppHeader)
+ ############################
+ # C++ FILE - PREP
+
+ # Get C++ Template
+ cppCode = templateUtil.getCppClassTemplate()
+ cppCode = re.sub("%CLASS_NAME%", className, cppCode)
+
+ # Create C++ Class Constructor
+ cppCode = re.sub("%CLASS_DEF%", util.getClassConstructor(className), cppCode)
+
+ # Process attributes for given class
for attribute in getAllAttributes(classList, cls, TRANSLATOR_NAME):
type = attribute.getType().getCppTypeStr()
***************
*** 99,102 ****
--- 119,126 ----
getterName = attribute.getGetterName(TRANSLATOR_NAME)
+ ############################
+ # HEADER FILE - ATTRIBUTES
+
+ #create c++ variables
varCode = []
varCode.append("%s %s;" % (type, name))
***************
*** 104,109 ****
varCode = string.join(varCode, '\n')
! clsHeader = re.sub("%PRIVATE%", varCode, clsHeader)
setterCode = []
setterCode.append("%s %s(%s %s);" % ('void', setterName, type, name))
--- 128,134 ----
varCode = string.join(varCode, '\n')
! cppHeader = re.sub("%PRIVATE%", varCode, cppHeader)
+ #create c++ setter functions
setterCode = []
setterCode.append("%s %s(%s %s);" % ('void', setterName, type, name))
***************
*** 111,116 ****
setterCode = string.join(setterCode, '\n')
! clsHeader = re.sub("%PUBLIC%", setterCode, clsHeader)
getterCode = []
getterCode.append("%s %s();" % (type, getterName))
--- 136,142 ----
setterCode = string.join(setterCode, '\n')
! cppHeader = re.sub("%PUBLIC%", setterCode, cppHeader)
+ #create c++ getter functions
getterCode = []
getterCode.append("%s %s();" % (type, getterName))
***************
*** 118,123 ****
getterCode = string.join(getterCode, '\n')
! clsHeader = re.sub("%PUBLIC%", getterCode, clsHeader)
for assocEnd in getAllAssociationEnds(classList, cls, TRANSLATOR_NAME):
name = assocEnd.getName(TRANSLATOR_NAME)
--- 144,160 ----
getterCode = string.join(getterCode, '\n')
! cppHeader = re.sub("%PUBLIC%", getterCode, cppHeader)
+ ############################
+ # C++ FILE - ATTRIBUTES
+ cppCode = re.sub("%CLASS_DEF%",
+ util.getSetterFunction(className, setterName, name, type, name),
+ cppCode)
+
+ cppCode = re.sub("%CLASS_DEF%",
+ util.getGetterFunction(className, getterName, type, name),
+ cppCode)
+
+ # Process associations for a given class
for assocEnd in getAllAssociationEnds(classList, cls, TRANSLATOR_NAME):
name = assocEnd.getName(TRANSLATOR_NAME)
***************
*** 125,129 ****
--- 162,188 ----
getterName = assocEnd.getGetterName(TRANSLATOR_NAME)
oppClassName = assocEnd.getOppositeEnd().getClassName(TRANSLATOR_NAME)
+ varName = "var%s" % (oppClassName)
+
+
+ ############################
+ # HEADER FILE - ASSOCIATIONS
+
+ #If this isn't the header file of the class being used...
+ if className != oppClassName:
+ #include class header
+ cppHeader = re.sub("%INCLUDE%",
+ "#include \"%s.h\"\n%s" % (oppClassName, "%INCLUDE%"),
+ cppHeader)
+
+
+ #create c++ variables
+ varCode = []
+ varCode.append("%s %s;" % (oppClassName, varName))
+ varCode.append(" %PRIVATE%")
+ varCode = string.join(varCode, '\n')
+ cppHeader = re.sub("%PRIVATE%", varCode, cppHeader)
+
+ #create c++ setter functions
setterCode = []
setterCode.append("%s %s(%s %s);" % ('void', setterName, oppClassName, name))
***************
*** 131,136 ****
setterCode = string.join(setterCode, '\n')
! clsHeader = re.sub("%PUBLIC%", setterCode, clsHeader)
getterCode = []
getterCode.append("%s %s();" % (oppClassName, getterName))
--- 190,196 ----
setterCode = string.join(setterCode, '\n')
! cppHeader = re.sub("%PUBLIC%", setterCode, cppHeader)
+ #create c++ getter functions
getterCode = []
getterCode.append("%s %s();" % (oppClassName, getterName))
***************
*** 138,196 ****
getterCode = string.join(getterCode, '\n')
! clsHeader = re.sub("%PUBLIC%", getterCode, clsHeader)
! clsHeader = re.sub("%PUBLIC%", "", clsHeader)
! clsHeader = re.sub("%PRIVATE%", "", clsHeader)
! saveFile(destination, headerFileName, clsHeader)
! #Get name of class which this class inherits from
! #baseClassNames = cls.getBaseClassNames(TRANSLATOR_NAME)
! #if len(baseClassNames) >= 1:
! # for baseClass in baseClassNames:
! # cppCode.append(" Inherits From: %s" % (baseClass))
! #Process each attribute in a given table (class)
! #for attribute in getAllAttributes(classList, cls, TRANSLATOR_NAME):
! #
! # type = attribute.getType().getSQLType()
! # cppCode.append(" ATTRIBUTE:")
! # cppCode.append(" Name = %s" % \
! # (attribute.getName(TRANSLATOR_NAME)))
! # cppCode.append(" Type = %s" % \
! # (type))
! # cppCode.append(" GetterName = %s" \
! # % (attribute.getGetterName(TRANSLATOR_NAME)))
! # cppCode.append(" SetterName = %s" % \
! # (attribute.getSetterName(TRANSLATOR_NAME)))
! # cppCode.append(" AppenderName = %s" % \
! # (attribute.getAppenderName(TRANSLATOR_NAME)))
! # cppCode.append(" isRequired = %s" % (attribute.isRequired()))
! # cppCode.append(" isUnique = %s" % (attribute.isUnique()))
! # cppCode.append(" isIndexed = %s" % (attribute.isIndexed()))
! # cppCode.append(" isPrimaryKey = %s" % (attribute.isPrimaryKey()))
! #
! #for assocEnd in getAllAssociationEnds(classList, cls, TRANSLATOR_NAME):
! # cppCode.append(" ASSOC END:")
! # cppCode.append(" Name = %s" % (assocEnd.getName(TRANSLATOR_NAME)))
! # cppCode.append(" AttribName = %s" % \
! # (assocEnd.getAttributeName(TRANSLATOR_NAME)))
! # cppCode.append(" GetterName = %s" % \
! # (assocEnd.getGetterName(TRANSLATOR_NAME)))
! # cppCode.append(" SetterName = %s" % \
! # (assocEnd.getSetterName(TRANSLATOR_NAME)))
! # cppCode.append(" AppenderName = %s" % \
! # (assocEnd.getAppenderName(TRANSLATOR_NAME)))
! # cppCode.append(" Multiplicity = %s" % (assocEnd.getMultiplicity()))
! # cppCode.append(" isNavigable = %s" % (assocEnd.isNavigable()))
! # cppCode.append(" OppositeEnd = %s.%s" % \
! # (assocEnd.getOppositeEnd().getClassName(TRANSLATOR_NAME),
! # assocEnd.getOppositeEnd().getAttributeName(TRANSLATOR_NAME)))
! #
! #
! #cppCode.append("")
!
! #cppCode = string.join(cppCode, '\n')
! #f = open(destination, 'w')
! #f.write(cppCode)
! #f.close()
! #warn("Report Generation Complete... Good Bye.", InfoWarning)
--- 198,233 ----
getterCode = string.join(getterCode, '\n')
! cppHeader = re.sub("%PUBLIC%", getterCode, cppHeader)
! ############################
! # C++ FILE - ASSOCIATIONS
! cppCode = re.sub("%CLASS_DEF%",
! util.getSetterFunction(className, setterName, name, oppClassName, varName),
! cppCode)
! cppCode = re.sub("%CLASS_DEF%",
! util.getGetterFunction(className, getterName, oppClassName, varName),
! cppCode)
!
!
! ############################
! # REMOVE %TEMPLATE% TAGS
!
! #Header
! cppHeader = re.sub("%PUBLIC%", "", cppHeader)
! cppHeader = re.sub("%PRIVATE%", "", cppHeader)
! cppHeader = re.sub("%INCLUDE%", "", cppHeader)
!
! #C++ Code
! cppCode = re.sub("%CLASS_DEF%", "", cppCode)
!
! ############################
! # Save Class Header
!
! #Header
! saveFile(destination, headerFileName, cppHeader)
!
! #C++ Code
! saveFile(destination, cppFileName, cppCode)
!
|