From: Robert L. <rle...@us...> - 2007-03-08 14:44:41
|
Update of /cvsroot/ccmtools/ccmtools/src/ccmtools/CppGenerator In directory sc8-pr-cvs4.sourceforge.net:/tmp/cvs-serv4387/src/ccmtools/CppGenerator Modified Files: CppAssemblyGenerator.java Log Message: new prototype Index: CppAssemblyGenerator.java =================================================================== RCS file: /cvsroot/ccmtools/ccmtools/src/ccmtools/CppGenerator/CppAssemblyGenerator.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** CppAssemblyGenerator.java 8 Mar 2007 13:38:51 -0000 1.9 --- CppAssemblyGenerator.java 8 Mar 2007 14:44:33 -0000 1.10 *************** *** 320,327 **** HashSet<String> include_set = new HashSet<String>(); StringBuilder code = new StringBuilder(); ! // TODO return code.toString(); } protected String variable_AssemblyInnerHomeInclude() { --- 320,352 ---- HashSet<String> include_set = new HashSet<String>(); StringBuilder code = new StringBuilder(); ! for (AssemblyElement e : currentAssembly.getElements()) ! { ! if (e instanceof Constant) ! { ! Constant c = (Constant) e; ! generateAssemblyInnerComponentInclude(c.getTarget(), include_set, code); ! } ! else if (e instanceof Attribute) ! { ! Attribute a = (Attribute) e; ! generateAssemblyInnerComponentInclude(a.getTarget(), include_set, code); ! } ! } return code.toString(); } + private void generateAssemblyInnerComponentInclude( Port target, Set<String> include_set, + StringBuilder code ) + { + String target_comp = target.getComponent(); + MComponentDef target_def = getAssemblyLocalComponents().get(target_comp); + String inc_name = getLocalCxxIncludeName(target_def); + if (!include_set.contains(inc_name)) + { + code.append("#include <" + inc_name + "_gen.h>\n"); + include_set.add(inc_name); + } + } + protected String variable_AssemblyInnerHomeInclude() { *************** *** 487,490 **** --- 512,516 ---- connect_code.append(impl_code); connect_code.append(TAB2 + "impl->target = f;\n"); + connect_code.append(TAB2 + "return ::Components::Cookie();\n"); disconnect_code.append(impl_code); disconnect_code.append(TAB2 + "impl->target.forget();\n"); *************** *** 505,509 **** disconnect_code.append(TAB2 + target_comp + "_->disconnect(\""); disconnect_code.append(target_name + "\", ck);\n"); - disconnect_code.append(TAB2 + "return;\n"); } else --- 531,534 ---- *************** *** 521,528 **** disconnect_code.append(TAB2 + target_comp + "_->disconnect(\""); disconnect_code.append(target_name + "\", " + source_name + "_);\n"); - disconnect_code.append(TAB2 + "return;\n"); } } connect_code.append(TAB + "}\n"); disconnect_code.append(TAB + "}\n"); } --- 546,553 ---- disconnect_code.append(TAB2 + target_comp + "_->disconnect(\""); disconnect_code.append(target_name + "\", " + source_name + "_);\n"); } } connect_code.append(TAB + "}\n"); + disconnect_code.append(TAB2 + "return;\n"); disconnect_code.append(TAB + "}\n"); } *************** *** 688,704 **** if (dataType.equals("AssemblyTargetVariable")) { ! return variable_AssemblyTargetVariable(); } return super.data_MProvidesDef(dataType, dataValue); } - protected String variable_AssemblyTargetVariable() - { - MProvidesDef provides = (MProvidesDef) currentNode; - MInterfaceDef iface = provides.getProvides(); - String iface_type = getLocalCxxName(iface, Text.SCOPE_SEPARATOR); - return TAB + iface_type + "::SmartPtr target;\n"; - } - protected String generateOperationImpl( MProvidesDef provides, MOperationDef op ) { --- 713,721 ---- if (dataType.equals("AssemblyTargetVariable")) { ! return TAB + "::Components::Object::SmartPtr target;\n"; } return super.data_MProvidesDef(dataType, dataValue); } protected String generateOperationImpl( MProvidesDef provides, MOperationDef op ) { *************** *** 712,721 **** code.append(" ").append(getOperationExcepts(op)).append("\n"); code.append("{\n"); code.append(TAB); if (!return_type.equals("void")) code.append("return "); ! code.append("this->target->").append(op.getIdentifier()).append("("); code.append(getOperationParamNames(op)); code.append(");\n"); code.append("}\n\n"); return code.toString(); --- 729,747 ---- code.append(" ").append(getOperationExcepts(op)).append("\n"); code.append("{\n"); + // + MInterfaceDef iface = provides.getProvides(); + String iface_type = getLocalCxxName(iface, Text.SCOPE_SEPARATOR); + code.append(TAB + iface_type + "* f_a_c_e_t = dynamic_cast< "); + code.append(iface_type + "*>(this->target.ptr());\n"); + code.append(TAB + "if(!f_a_c_e_t)\n"); + code.append(TAB2 + "throw ::Components::CCMException(::Components::SYSTEM_ERROR);\n"); + // code.append(TAB); if (!return_type.equals("void")) code.append("return "); ! code.append("f_a_c_e_t->").append(op.getIdentifier()).append("("); code.append(getOperationParamNames(op)); code.append(");\n"); + // code.append("}\n\n"); return code.toString(); *************** *** 739,743 **** StringBuilder result = new StringBuilder(); boolean empty = true; - Map<String, MComponentDef> map = getAssemblyLocalComponents(); for (AssemblyElement e : currentAssembly.getElements()) { --- 765,768 ---- |