From: Robert L. <rle...@us...> - 2007-02-20 13:39:07
|
Update of /cvsroot/ccmtools/ccmtools/src/ccmtools/CppGenerator In directory sc8-pr-cvs4.sourceforge.net:/tmp/cvs-serv32500/src/ccmtools/CppGenerator Modified Files: CppLocalGenerator.java Added Files: CppAssemblyGenerator.java Log Message: C++ assemblies Index: CppLocalGenerator.java =================================================================== RCS file: /cvsroot/ccmtools/ccmtools/src/ccmtools/CppGenerator/CppLocalGenerator.java,v retrieving revision 1.55 retrieving revision 1.56 diff -C2 -d -r1.55 -r1.56 *** CppLocalGenerator.java 13 Feb 2007 10:16:11 -0000 1.55 --- CppLocalGenerator.java 20 Feb 2007 13:38:49 -0000 1.56 *************** *** 931,934 **** --- 931,935 ---- catch(Exception e) { + e.printStackTrace(); uiDriver.printError("!!!Error " + e.getMessage()); } *************** *** 1005,1013 **** f = new ArrayList(); f.add(implDirectory); ! f.add(node_name + "_impl.h"); files.add(f); f = new ArrayList(); f.add(implDirectory); ! f.add(node_name + "_impl.cc"); files.add(f); } --- 1006,1014 ---- f = new ArrayList(); f.add(implDirectory); ! f.add(node_name + IMPL_SUFFIX_H); files.add(f); f = new ArrayList(); f.add(implDirectory); ! f.add(node_name + IMPL_SUFFIX_CC); files.add(f); } *************** *** 1055,1063 **** f = new ArrayList(); f.add(implDirectory); ! f.add(component.getIdentifier() + "_" + node_name + "_impl.h"); files.add(f); f = new ArrayList(); f.add(implDirectory); ! f.add(component.getIdentifier() + "_" + node_name + "_impl.cc"); files.add(f); } --- 1056,1064 ---- f = new ArrayList(); f.add(implDirectory); ! f.add(component.getIdentifier() + "_" + node_name + IMPL_SUFFIX_H); files.add(f); f = new ArrayList(); f.add(implDirectory); ! f.add(component.getIdentifier() + "_" + node_name + IMPL_SUFFIX_CC); files.add(f); } *************** *** 1082,1085 **** --- 1083,1089 ---- return files; } + + protected static final String IMPL_SUFFIX_H = "_impl.h"; + protected static final String IMPL_SUFFIX_CC = "_impl.cc"; protected String getCxxOutputDirectory(String component) --- NEW FILE: CppAssemblyGenerator.java --- /* * Created on Feb 20, 2007 * * R&D Salomon Automation (http://www.salomon.at) * * Robert Lechner (rob...@sa...) * * $Id: CppAssemblyGenerator.java,v 1.1 2007/02/20 13:38:49 rlechner Exp $ */ package ccmtools.CppGenerator; import java.io.File; import java.io.IOException; import java.util.List; import java.util.logging.Logger; import ccmtools.CcmtoolsException; import ccmtools.parser.assembly.metamodel.Assembly; import ccmtools.parser.assembly.metamodel.Model; import ccmtools.parser.idl.metamodel.CcmModelHelper; import ccmtools.parser.idl.metamodel.BaseIDL.MContained; import ccmtools.parser.idl.metamodel.ComponentIDL.MComponentDef; import ccmtools.parser.idl.metamodel.ComponentIDL.MHomeDef; import ccmtools.parser.idl.metamodel.ComponentIDL.MProvidesDef; import ccmtools.ui.UserInterfaceDriver; /** * local C++ assembly generator */ public class CppAssemblyGenerator extends CppLocalGenerator { public CppAssemblyGenerator( UserInterfaceDriver uiDriver, File outDir, Model assemblies ) throws IOException, CcmtoolsException { super(uiDriver, outDir); logger = Logger.getLogger("ccm.generator.cpp.assembly"); this.assemblies = assemblies; setFlag(FLAG_APPLICATION_FILES); } protected Model assemblies; protected Assembly currentAssembly; protected List getOutputFiles() { logger.fine("enter getOutputFiles(), searching for assembly"); currentAssembly = null; if (currentNode instanceof MComponentDef) { MComponentDef def = (MComponentDef) currentNode; currentAssembly = getAssemblyDescription(def); } else if (currentNode instanceof MHomeDef) { MHomeDef def = (MHomeDef) currentNode; currentAssembly = getAssemblyDescription(def.getComponent()); } else if (currentNode instanceof MProvidesDef) { MProvidesDef def = (MProvidesDef) currentNode; currentAssembly = getAssemblyDescription(def.getComponent()); } logger.fine("leave getOutputFiles(), searching for assembly"); List files = super.getOutputFiles(); if (currentAssembly != null) keep_only_impls(files); else kill_all_files(files); return files; } protected static void keep_only_impls( List files ) { for (Object o : files) { List out_path = (List) o; String x = out_path.get(1).toString(); if (!x.endsWith(IMPL_SUFFIX_H) && !x.endsWith(IMPL_SUFFIX_CC)) out_path.set(1, ""); } } protected static void kill_all_files( List files ) { for (Object o : files) { List out_path = (List) o; out_path.set(1, ""); } } protected Assembly getAssemblyDescription( MComponentDef def ) { return assemblies.getAssembly(getQualifiedCcmName(def)); } protected static String getQualifiedCcmName( MContained node ) { return CcmModelHelper.getAbsoluteName(node, Model.IDL_SCOPE); } } |