char * idl_sequenceIdent ( const idl_typeSeq typeSeq) { char *sequenceType; char *sequenceName; int len; if (idl_typeSpecType(idl_typeSeqType (typeSeq)) == idl_tseq) { sequenceType = idl_sequenceSubIdent (idl_typeSeq(idl_typeSeqType (typeSeq))); len = strlen(sequenceType) + strlen ("DDS_sequence_") + 1; sequenceName = os_malloc (len); snprintf (sequenceName, len, "%s%s", "DDS_sequence_", sequenceType); } else { sequenceType = idl_scopedSacSequenceTypeIdent(idl_typeSeqType (typeSeq)); len = strlen(sequenceType) + strlen ("DDS_sequence_") + 1; sequenceName = os_malloc (len); snprintf (sequenceName, len, "%s%s", "DDS_sequence_", sequenceType); } return sequenceName; }
/* @brief generate dimension of an array or a sequence * * java_arrayDimensions is a local support function to generate * the dimensions of a java Array representing an IDL sequence or * array. Since Sequences will always be initialized to 0 elements, * its dimensions will always be assigned 0. Arrays will be assigned * their IDL dimensions. * * @param typeSeq Specifies the type of the sequence */ static void java_arrayDimensions( idl_typeSpec typeSpec) { while (idl_typeSpecType(typeSpec) == idl_ttypedef) { typeSpec = idl_typeDefRefered(idl_typeDef(typeSpec)); } if (idl_typeSpecType(typeSpec) == idl_tarray) { idl_typeArray typeArray = idl_typeArray(typeSpec); idl_fileOutPrintf (idl_fileCur(), "[%d]", idl_typeArraySize(typeArray)); java_arrayDimensions(idl_typeArrayType(typeArray)); } else if (idl_typeSpecType(typeSpec) == idl_tseq) { idl_fileOutPrintf(idl_fileCur(), "[0]"); java_arrayDimensions(idl_typeSeqType(idl_typeSeq(typeSpec))); } }
c_char * idl_sequenceIndexString ( idl_typeSeq typeSeq) { c_char *sequenceString; os_size_t sequenceStringLen; c_char *sequenceStringPrev; if (idl_typeSpecType(idl_typeSeqType(typeSeq)) == idl_tseq) { sequenceStringPrev = idl_sequenceIndexString(idl_typeSeq(idl_typeSeqType (typeSeq))); sequenceStringLen = strlen(sequenceStringPrev) + 3; sequenceString = os_malloc(sequenceStringLen); snprintf(sequenceString, sequenceStringLen, "[]%s", sequenceStringPrev); } else if (idl_typeSpecType(idl_typeSeqType(typeSeq)) == idl_tarray) { sequenceStringPrev = idl_arrayJavaIndexString(idl_typeArray(idl_typeSeqType (typeSeq))); sequenceStringLen = strlen(sequenceStringPrev) + 3; sequenceString = os_malloc(sequenceStringLen); snprintf(sequenceString, sequenceStringLen, "[]%s", sequenceStringPrev); } else if (idl_typeSpecType(idl_typeSeqType(typeSeq)) == idl_ttypedef && idl_typeSpecType(idl_typeDefActual(idl_typeDef(idl_typeSeqType(typeSeq)))) == idl_tseq) { sequenceStringPrev = idl_sequenceIndexString(idl_typeSeq(idl_typeDefActual(idl_typeDef(idl_typeSeqType(typeSeq))))); sequenceStringLen = strlen(sequenceStringPrev) + 3; sequenceString = os_malloc(sequenceStringLen); snprintf(sequenceString, sequenceStringLen, "[]%s", sequenceStringPrev); } else if (idl_typeSpecType(idl_typeSeqType (typeSeq)) == idl_ttypedef && idl_typeSpecType(idl_typeDefActual(idl_typeDef(idl_typeSeqType(typeSeq)))) == idl_tarray) { sequenceStringPrev = idl_arrayJavaIndexString(idl_typeArray(idl_typeDefActual(idl_typeDef(idl_typeSeqType(typeSeq))))); sequenceStringLen = strlen(sequenceStringPrev) + 3; sequenceString = os_malloc(sequenceStringLen); snprintf(sequenceString, sequenceStringLen, "[]%s", sequenceStringPrev); } else { sequenceString = os_malloc(3); snprintf(sequenceString, 3, "[]"); } return sequenceString; }
idl_typeSpec typeSpec) { c_char *typeName = NULL; c_char *subType; const char *template; size_t size; c_ulong arrSize; switch(idl_typeSpecType(typeSpec)) { case idl_tbasic: /* if the specified type is a basic type */ typeName = standaloneTypeFromTypeSpec(idl_typeBasic(typeSpec)); break; case idl_tseq: template = "std::vector< %s >"; subType = idl_ISOCxx2TypeFromTypeSpec(idl_typeSeqType(idl_typeSeq(typeSpec))); size = strlen(template) + strlen(subType) + 1; typeName = os_malloc(size); (void)snprintf(typeName, size, template, subType); os_free(subType); break; case idl_tarray: template = "dds::core::array< %s, %d >"; subType = idl_ISOCxx2TypeFromTypeSpec(idl_typeArrayType(idl_typeArray(typeSpec))); arrSize = idl_typeArraySize(idl_typeArray(typeSpec)); size = strlen(template) + strlen(subType) + (size_t) log10((double) arrSize) + 1; typeName = os_malloc(size); (void)snprintf(typeName, size, template, subType, arrSize); os_free(subType); break; case idl_ttypedef: