WebSphere Message Broker, Version 8.0.0.7
Operating Systems: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS
See information about the latest product version
See information about the latest product version
Message Sets: Importing from C (MRM): restrictions
Problems or restrictions when you import a C header file to create a message definition.
- The C construct typedef is not fully supported; you cannot create messages based on a typedef of an anonymous structure.
- If an empty struct or union is used as the basis for creating a message, two messages with the same name are created.
- The C importer does not handle the #if, #ifdef , #else, #elif macros properly. Before importing a C structure, remove these macros from the source file.
- Hexadecimal constants such as int a[0x80] can cause an exception to be thrown during the import operation. Replace them in the header file before importing.
- Trigraphs are not supported. Replace trigraphs with the equivalent single character before importing the header file.
- The C importer requires all programs to be syntactically correct on the target platform. Results are unpredictable if this is not the case. In some circumstances the Toolkit might crash.
- When C type int is imported with the option Address size=64bit, elements of schema type xsd:int are created. These have an implicit range of a 32-bit integer. Change the schema type of the element to xsd:long to use values with 64-bit range.
- Importing C source where an anonymous structure contains an embedded
structure might result in an exception. Before you import the header
file, ensure that all structures have tags, for example:
struct mymessage_tag { int a; struct { // anonymous structure... int b1; struct myembstruct_tag { // ...containing a structure int c1; } c; } b; };
- An exception might be thrown when an enum with a negative value is imported. Remove the negative value before importing the header file.
- Structure and element names entirely in uppercase or starting with an underscore might be altered on import.
- Importing char arrays with 3 or more dimensions, when using the option to import strings as null terminated, can result in an incorrect maxLength facet.
- Importing char arrays with 3 or more dimensions can cause a Java™ exception to be thrown. Ensure the definitions created are correct.
- The use of C or C++ reserved keywords causes the import to fail, but nothing in the report specifically indicates this. If your import fails without an obvious reason, examine the C header file carefully and ensure that it compiles correctly. Even if it does compile correctly, it might still contain C++ keywords such as compl, which cause the importer to fail.
- The C importer creates global complex types and groups for any structures nested inside other structures. The names of these structures are auto-generated. If another structure defined within the header file has a name which happens to match an auto-generated name, its contents could be replaced with the contents of the nested structure, or vice versa.
- Bit fields within a C structure are imported but MRM does not support bit fields with lengths that are not a multiple of 8. Review the values of the CWF Length Count, Leading Skip Count, Trailing Skip Count, and Byte Alignment properties, which might not be set properly.
- You can use one mqsicreatemsgdefs command to import more than one header. However, if any of these headers contain a #include for any of the other headers that are being imported, more than one definition might be created for these headers. This causes 'duplicate definition' errors in the Message Set Project. To resolve these errors, delete the unwanted duplicate definitions.
- Octal constants such as int a[080] are incorrectly interpreted as decimal constants and must be corrected using the MRM editor.