/** * Builds the footer part for a given interface definition. * * @param itf the interface definition for which has to be built. * @throws Exception if any error occurs. */ public void leaveInterface(final InterfaceDefinition itf) throws Exception { cw.append("#undef NEWSTYLE_COMPONENT").endl(); }
public void leaveInterface(final InterfaceDefinition itf) throws Exception { cw.append("#undef NEWSTYLE_COMPONENT").endl(); }
@Override protected String processSourceCode() throws Exception { final CodeWriter cw = new CodeWriter("Component Definition Builder"); cw.append("#define IN_CECILIA_MECHANISM").endl(); if (interfaceDefinitionsProviderItf != null) cw.appendln(interfaceDefinitionsProviderItf.getSourceCode()).endl(); cw.endl(); return cw.toString(); } }
@Override protected String processSourceCode() throws Exception { final CodeWriter cw = new CodeWriter("Component Definition Builder"); cw.append("#define IN_CECILIA_MECHANISM").endl(); if (interfaceDefinitionsProviderItf != null) cw.appendln(interfaceDefinitionsProviderItf.getSourceCode()).endl(); cw.endl(); return cw.toString(); } }
public void leaveInterface(final InterfaceDefinition itf) throws Exception { methenum_cw.appendln("} " + ItfName.toString() + "_meths_t;"); cw = new CodeWriter(); cw.endl(); cw.append("#include <stdio.h>").endl(); cw.appendln("DECLARE_DATA {};"); cw.appendln("#include <cecilia.h>"); cw.endl(); cw.appendln(methenum_cw.toString()).endl(); cw.appendln(methcode_cw.toString()).endl(); cw.appendln(x); }
public void leaveInterface(final InterfaceDefinition itf) throws Exception { methenum_cw.appendln("} " + ItfName.toString() + "_meths_t;"); cw = new CodeWriter(); cw.endl(); cw.append("#include <stdio.h>").endl(); cw.appendln("DECLARE_DATA {};"); cw.appendln("#include <cecilia.h>"); cw.endl(); cw.appendln(methenum_cw.toString()).endl(); cw.appendln(methcode_cw.toString()).endl(); cw.appendln(x); }
public void enterInterface(final InterfaceDefinition itf) throws Exception { methodId = 0; final String componentCName = typeNameProviderItf.getCTypeName(); cw.appendln("#include \"minus/bare/generic/exportbind/api/serialize.h\""); cw.append("#define REQUIRED ((struct ").append(componentCName).append( "_t *)_this)->type.imported ").endl(); cw.append("#define NEWSTYLE_COMPONENT").endl(); cw.append(" struct ").append(componentCName).append("_instancedata {};") .endl(); cw.appendln("#include \"cecilia.h\""); cw.endl(); }
static void appendMacros(final CodeWriter cw, final String componentCName) { /* Define specified DECLARE_DATA macro for this component */ cw.append("#define DECLARE_DATA \\").endl(); cw.append(" struct ").append(componentCName).append("_instancedata") .endl(); /* Define the specific METHOD macro for this component */ cw.append("#define METHOD(i, m) \\").endl(); cw.append(componentCName).append("##_##i##_##m##_method").endl(); cw.append("#define CALLMINE(itf,proc,args...) \\").endl(); cw.append(" ").append(componentCName).append( "##_##itf##_##proc##_method(_this, ##args)").endl(); /* Define REQUIRED, ATTRIBUTES and DATA as a component specific macros */ cw.append("#define REQUIRED \\").endl(); cw.append(" ((struct ").append(componentCName).append( "_t *)_this)->type.imported ").endl(); cw.append("#define ATTRIBUTES \\").endl(); cw.append(" ((struct ").append(componentCName).append( "_t *)_this)->attributes ").endl(); cw.append("#define DATA \\").endl(); cw.append(" ((struct ").append(componentCName + "_t *)_this)->data ") .endl(); /* Define the GETSELF macro according to above defined structures */ cw.append("#define GETSELF \\").endl(); cw.append(" struct ").append(componentCName).append( "_t *self = (struct " + componentCName).append("_t *) _this ").endl(); // Define the GET_MY_INTERFACE macro cw.append("#define GET_MY_INTERFACE(itf) \\").endl(); cw.append(" (&(((struct ").append(componentCName).append( "_t *)_this)->type.exported.itf))").endl(); }
@Override protected String processSourceCode() throws Exception { final CodeWriter cw = new CodeWriter( "Client Interfaces Descriptor Builder (extern references to server components.)"); final String name = typeNameProviderItf.getCTypeName(); final String structName = name + "_importeds_desc"; final StringBuilder offset = new StringBuilder(name.toUpperCase()); offset.append("_IMPORTEDS_BASE_OFFSET"); cw.append("static required_interface_desc_t ").append(structName).append( "[] = {").endl(); for (final TypeInterface itf : clientInterfaces) { cw.append("{").endl(); cw.append("\"").append(itf.getName()).append("\", // name").endl(); cw.append("(").append(offset.toString()).append(")").endl(); cw.append("},").endl(); offset.append("\n + sizeof(R").append( itf.getSignature().replace('.', '_')).append(" *)"); } cw.append("};").endl(); return cw.toString(); } }
/** * Generate the C code for this structure * * @return the C code */ public String getSource() { final CodeWriter cw = new CodeWriter(); cw.appendln("static primitive_t " + structName + " = {{PRIMITIVE, \"" + instanceName + "\"}, \"" + defName + "\", " + pe + "};"); cw.endl(); return cw.toString(); } }
public void leaveInterface(final InterfaceDefinition itf) throws Exception { meths_cw.append("NB_METHS} ").append(ItfName.toString()).append( "_meths_t;").endl(); params_cw.appendln("};"); params_cw.append("} ").append(ItfName.toString()).append("_parms_t, *p") .append(ItfName.toString()).append("_parms_t;").endl(); cw = new CodeWriter(); cw.appendln("DECLARE_DATA {};"); cw.appendln("#include <cecilia.h>"); cw.endl(); cw.append(meths_cw.toString()).endl(); cw.append(args_cw.toString()).endl(); cw.append(params_cw.toString()).endl(); cw.append(code_cw.toString()); }
/** * Builds the footer part for a given interface definition. * * @param itf the interface definition for which has to be built. * @throws Exception if any error occurs. */ public void leaveInterface(final InterfaceDefinition itf) throws Exception { cw.append("default : printf(\"Invalid methodId %d\", ").append(methodId) .append(");").endl(); cw.appendln("}"); cw.append("return ").append(replyMsg).append(";").endl(); cw.appendln("}"); cw.append("#undef NEWSTYLE_COMPONENT").endl(); }
@Override protected String processSourceCode() throws Exception { final CodeWriter cw = new CodeWriter("Server Interfaces Descriptor"); final String name = typeNameProviderItf.getCTypeName(); final String structName = name + "_exporteds_desc"; // Build provided_interface_desc_t structures final StringBuilder offset = new StringBuilder(); offset.append(name.toUpperCase()).append("_EXPORTEDS_BASE_OFFSET"); cw.append("static provided_interface_desc_t ").append(structName).append( "[] = {").endl(); for (final TypeInterface itf : exportedItfNodes) { cw.append("{").endl(); cw.append("\"").append(itf.getName()).append("\", // name").endl(); cw.append("&(").append(name).append("_").append( itf.getName().replace('-', '_')).append("meth), // vtable").endl(); cw.append("(").append(offset.toString()).append(")").endl(); /* Add the signature */ cw.append("#if defined(TYPEDINTERFACE)").endl(); cw.append(", \"").append(itf.getSignature()).append("\"").endl(); cw.append("#endif").endl(); cw.append("},").endl(); offset.append("\n + sizeof(R").append( itf.getSignature().replace('.', '_')).append(")"); } cw.append("};").endl().endl(); return cw.toString(); } }
public void leaveInterface(final InterfaceDefinition itf) throws Exception { cw.append("default : printf(\"Invalid methodId %d\", ").append(methodId) .append(");").endl(); cw.appendln("}"); cw.appendln("return minus_bare_generic_exportbind_api_Push_E_OK;"); cw.appendln("}"); cw.append("#undef NEWSTYLE_COMPONENT").endl(); }
/** * Builds the header part for a given interface definition. * * @param itf the interface definition for which has to be built. * @throws Exception if any error occurs. */ public void enterInterface(final InterfaceDefinition itf) throws Exception { methodId = 0; final String componentCName = typeNameProviderItf.getCTypeName(); cw.appendln("#include \"minus/bare/generic/exportbind/api/serialize.h\""); cw.appendln("#include \"minus/bare/generic/debug/api/debug.h\""); cw.append("#define REQUIRED ((struct ").append(componentCName).append( "_t *)_this)->type.imported ").endl(); cw.append("#define NEWSTYLE_COMPONENT").endl(); cw.append(" struct ").append(componentCName).append("_instancedata {};") .endl(); cw.appendln("#include \"cecilia.h\""); cw.endl(); }
/** * Get the source of the deployer * @return C code of the deployer */ public String getDeployerSource() { final CodeWriter cw = new CodeWriter(); cw.appendln("/* This file is auto-generated */").endl(); cw.append(deployerStructs); cw.endl(); cw.appendln("static void *deployableComponents[] = {"); for (final String composite : composites) { cw.append("(void *)&" + composite.replace(".", "_")).appendln(", "); } cw.appendln("0"); cw.appendln("};").endl(); cw.appendln("jint METHOD(lifecycle_controller, getFcState)(void* _this) {"); cw.appendln("return fractal_api_ErrorConst_OPERATION_NOT_SUPPORTED;"); cw.appendln("}").endl(); cw.appendln("jint METHOD(lifecycle_controller, startFc) (void* _this) {"); cw.appendln("DATA.deployableComponents = deployableComponents;"); cw.appendln("return fractal_api_ErrorConst_OK;"); cw.appendln("}").endl(); cw.appendln("jint METHOD(lifecycle_controller, stopFc) (void* _this) {"); cw.appendln("return fractal_api_ErrorConst_OK;"); cw.appendln("}").endl(); return cw.toString(); }
public void enterInterface(final InterfaceDefinition itf) throws Exception { meths_cw = new CodeWriter(); params_cw = new CodeWriter(); code_cw = new CodeWriter(); args_cw = new CodeWriter(); ItfName = (itf.getName().replace('.', '_')); meths_cw.endl(); meths_cw.append("typedef enum {"); params_cw.appendln("typedef struct {"); params_cw.append(ItfName).append("_meths_t Methods;").endl(); params_cw.appendln("union {"); }
@Override protected String processSourceCode() throws Exception { final CodeWriter cw = new CodeWriter("Binding Controller Data Descriptor"); final String instanceName = instanceNameProviderItf.getCInstanceName(); cw.append("static binding_desc_t ").append(instanceName).append( "_bindings_desc[] = {").endl(); for (final Binding binding : bindings) { final String from = binding.getFrom(); int index = from.indexOf('.'); String clientComp = from.substring(0, index); final String clientItf = from.substring(index + 1); final String to = binding.getTo(); index = to.indexOf('.'); String serverComp = to.substring(0, index); final String serverItf = to.substring(index + 1); if (serverComp.equals("this")) serverComp = "thisComposite"; else if (clientComp.equals("this")) clientComp = "thisComposite"; cw.append("{").append(clientComp.toString().replace('.', '_')).append( "_exp, \"").append(clientItf).append("\", ").append( serverComp.toString().replace('.', '_')).append("_exp, \"").append( serverItf).append("\"},").endl(); } cw.append("};").endl(); return cw.toString(); } }
public void leaveInterface(final InterfaceDefinition itf) throws Exception { cw.endl(); cw.append(meths_cw.toString()).endl(); cw.append(args_cw.toString()).endl(); cw.append(params_cw.toString()).endl(); cw.endl(); cw .appendln("int METHOD(push, push)(void *_this, minus_bare_generic_exportbind_api_Message *invokeMsg)"); cw.appendln("return minus_bare_generic_exportbind_api_Push_E_OK;"); cw.appendln("}"); cw.endl();
@Override protected String processSourceCode() throws Exception { final CodeWriter cw = new CodeWriter("Interfaces Descriptor Builder"); final String name = typeNameProviderItf.getCTypeName(); cw .appendln("#include \"minus/common/generic/fractal/api/componentDesc.h\""); cw.append("#define ").append(name.toUpperCase()).append( "_TYPE_BASE_OFFSET 0").endl(); String exporteds = null; if (serverItfInstancesItf != null) { exporteds = serverItfInstancesItf.getSourceCode(); cw.append("#define ").append(name.toUpperCase()).append( "_EXPORTEDS_BASE_OFFSET ").append(name.toUpperCase()).append( "_TYPE_BASE_OFFSET").endl(); cw.append(exporteds); } if (clientItfInstancesItf != null) { final String importeds = clientItfInstancesItf.getSourceCode(); cw.append("#define ").append(name.toUpperCase()).append( "_IMPORTEDS_BASE_OFFSET (").append(name.toUpperCase()).append( "_TYPE_BASE_OFFSET"); if (exporteds != null) cw.append(" + sizeof(struct ").append(name).append("_exporteds)"); cw.append(")").endl(); cw.append(importeds); } return cw.toString(); } }