void idl_openJavaPackage ( idl_scope scope, const char *name) { os_char *fname = NULL; os_char *package_file = NULL; os_char *package = NULL; package_file = idl_scopeStackJava(scope, os_fileSep(), name); fname = os_malloc(strlen (package_file) + strlen (".java") + 1); os_strcpy(fname, package_file); os_strcat(fname, ".java"); if (idl_createDir(fname)) { idl_fileSetCur(idl_fileOutNew (fname, "w")); if (idl_fileCur() == NULL) { idl_fileOpenError(fname); } /* Add package header if applicable */ package = idl_scopeStackJava(scope, ".", NULL); if (package != NULL && strlen (package) == 0) { os_free (package); package = NULL; } if (package != NULL) { idl_fileOutPrintf(idl_fileCur(), "package %s;\n", package); idl_fileOutPrintf(idl_fileCur(), "\n"); } } else { idl_fileSetCur(NULL); } os_free(package); os_free(package_file); os_free(fname); }
void idl_registerType ( c_base base, const char *basename, c_iter typeNames ) { sd_serializer metaSer; sd_serializedData serData; char *metaDescription = NULL; char *typeName; c_char *fname; c_metaObject type; int i; fname = os_malloc((size_t)((int)strlen(basename)+20)); snprintf (fname, (size_t)((int)strlen(basename)+20), "%s_register.h", basename); idl_fileSetCur (idl_fileOutNew (fname, "w")); if (idl_fileCur () == NULL) { idl_reportOpenError (fname); } idl_registerHeaderFile (basename); idl_fileOutFree (idl_fileCur()); snprintf (fname, (size_t)((int)strlen(basename)+20), "%s_register.c", basename); idl_fileSetCur (idl_fileOutNew (fname, "w")); if (idl_fileCur () == NULL) { idl_reportOpenError (fname); } idl_registerBodyHeader (basename); for (i = 0; i < c_iterLength(typeNames); i++) { typeName = c_iterObject(typeNames, i); type = c_metaResolve ((c_metaObject)base, (const char *)typeName); if (type) { metaSer = sd_serializerXMLTypeinfoNew (base, TRUE); if (metaSer) { serData = sd_serializerSerialize (metaSer, c_object(type)); if (serData) { metaDescription = sd_serializerToString (metaSer, serData); if (metaDescription) { idl_registerBody (typeName, metaDescription); os_free (metaDescription); } } sd_serializerFree (metaSer); } } else { printf ("Specified type %s not found\n", typeName); } } idl_fileOutPrintf (idl_fileCur(), "\n"); idl_fileOutPrintf (idl_fileCur(), "void\n"); idl_fileOutPrintf (idl_fileCur(), "%s__register_types (c_base base)\n", basename); idl_fileOutPrintf (idl_fileCur(), "{\n"); for (i = 0; i < c_iterLength(typeNames); i++) { typeName = c_iterObject(typeNames, i); idl_fileOutPrintf (idl_fileCur(), " %s__register_type (base);\n", idl_cScopedTypeName(typeName)); } idl_fileOutPrintf (idl_fileCur(), "}\n"); idl_fileOutFree (idl_fileCur()); os_free (fname); }