|
From: Teiniker E. <tei...@us...> - 2007-01-19 12:08:02
|
Update of /cvsroot/ccmtools/ccmtools/doc/DevelopmentNotes In directory sc8-pr-cvs4.sourceforge.net:/tmp/cvs-serv4737/doc/DevelopmentNotes Modified Files: CcmMetamodelBugs Added Files: JetTemplatesHowTo.txt NewAndOldGenerators.txt CppHowTo.txt Log Message: Moved ccmtools.metamodel to ccmtools.parser.idl.metamodel. Index: CcmMetamodelBugs =================================================================== RCS file: /cvsroot/ccmtools/ccmtools/doc/DevelopmentNotes/CcmMetamodelBugs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** CcmMetamodelBugs 18 Jan 2007 10:19:13 -0000 1.2 --- CcmMetamodelBugs 19 Jan 2007 12:07:24 -0000 1.3 *************** *** 6,10 **** - Things that should be checked: ------------------------------ --- 6,9 ---- --- NEW FILE: NewAndOldGenerators.txt --- New and Old Generators ====================== The New Generators ------------------ During the last year, we have implemented (and reimplemented) the following generators by using JET technology: - IDL3, IDL3mirror, IDL2 - Java local, Java remote, Java clientlib All these new generators supports the following package structure (where xxx must be substituted by a particular generator name): ccmtools.generator.xxx - Main: represents the entrypoint for a shell script to start the generator. - CommandLineParameter: encapsulates all passed parameters from the shell script. - CcmToxxxModelMapper: realizes a model to model transformation between the CCM model (created by the IDL parser) and the generator's implementation model. - xxxGenerator: represents the generator front-end that manages all the subtasks needed to create source code from a given CCM model. ccmtools.generator.xxx.metamodel This package contains all model elements of the generator's implementation metamodel. ccmtools.generator.xxx.templates.jet This package contains JET templates which are used by the metamodel elements. Note that JET templates will be transformed into stand-alone Java classes by the Eclipse EMF tools. ccmtools.generator.xxx.templates This package contains the generated template classes which do not have runtime dependencies to the Eclipse platform. To be able to build the ccmtools using ant, we also check in these generated classes. The Old Generators ------------------- The C++ local and C++ remote generators use the selfmade Python template engine based on the visitor pattern. So, we should replace these old generators as soon as possible to provide a uniform framework structure. Thus, the following packages should disappear in the near future: ccmtools.CodeGenerator ccmtools.CppGenerator ccmtools.CppGenerator.plugin ccmtools.parser.idl3 ccmtools.ui templates.CppLocalTemplates templates.CppLocalTestTemplates templates.CppRemoteTemplates templates.CppRemoteTestTemplates --- NEW FILE: JetTemplatesHowTo.txt --- Java Emitter Templates (JET) ============================ The JET engine (a tool that compiles the *.jet template files into *.java source files) is part of the Eclipse Modeling Framework (EMF) PlugIn. Thus, we can only generate Java template classes from *.jet files by using the Eclipse platform (or significant parts of it). Therefore, all generated template classes are also checked in (e.g. ccmtools.generator.java.templates). For more informations about JET, see: http://eclipse.org/articles/Article-JET/jet_tutorial1.html http://eclipse.org/articles/Article-JET2/jet_tutorial2.html Eclipse Settings: ----------------- To use the Jet engine for the ccmtools project, we have to configure the eclipse project properties: Menu Project => Properties => Jet Settings: Template Containers: src/ccmtools/generator/java/templates/jet;src/ccmtools/generator/idl/templates/jet Source Container : src --- NEW FILE: CppHowTo.txt --- C Pre-Processor (CPP) ===================== The OMG specified that an IDL parser has to support a C pre-processor functionality. Currently, the ccmtools use the GNU cpp tool. There is a ccmtools.parser.cpp package that encapsulates the cpp access by using a PreProcessor interface and different implementations. If the ccmtools.cpp property is set in the etc/ccmtools.property file, this external cpp is used. In the other way the internal implementation has to process the input files. ExpernalCpp: delegates to an external pre-processor configured in the etc/ccmtools.property file. InternalCpp: implements a minimal cpp functionality in Java to be independent of GNU's cpp tool (e.g. when generating Java components an a Windows platform). Currently, there is no working InternalCpp implementation - only experimental code!!! |