Previous: Application Examples Up: VICAR Porting Guide Next: Summary of Calling Sequences
This section contains a brief summary of the major portability rules spelled out in this document, and a reference to the sections where the rules are discussed in more detail. This is not a complete list and must not be used as a substitute for reading this document! For example, rules for calling specific routines are not described, nor are the more minor suggestions and recommendations. This section is intended only as a reminder of the major topics. Rationale for the rules is not described here; see the referenced sections for more details.
All VICAR software must run on all platforms that MIPL supports. [Section ]
All subroutines must have separate Fortran and C calling sequences, with different names. [Sections , , ]
Subroutines must call only the appropriate language interface. [Sections , , , ]
Routines accepting pure optional arguments are not allowed. [Section ]
Keyword-value style arguments are permissable in C only. [Sections , ]
Applications shall be able to read files written in any host representation. [Section ]
Applications shall normally write files in the native host representations of the machine on which they are currently running. [Section ]
Programs reading binary labels must be able to read any host format, and convert it to native format before using. [Sections , ]
Do not write your own pixel data type or host representation conversion routines. The routine x/ zvtrans is the only standard way to translate data among different host representations and pixel data types in VICAR. [Sections , ]
Do not assume the size in bytes of a pixel or other data; it may be different on different machines. Use one of the x/ zvpixsize routines, or sizeof from C, to determine the size of a data element. [Section ]
Every property name or BLTYPE name used must be entered into the appropriate name registry. [Sections , ]
All OS-specific code must be eliminated or isolated, and should be written in C if possible. [Sections , , ]
Conditional compilation statements to handle machine dependencies must never use machine names or types. They shall instead use names of specific features that are defined in standard include files based on the machine type. [Section ]
Feature dependencies must be defined only in xvmaininc.h or vmachdep.h. [Section ]
The symbols VMS_OS and UNIX_OS may be used for differences between VMS and Unix operating systems only. [Section ]
All Fortran code must conform to the ANSI Fortran-77 standard, with the exception of the allowed extensions listed in the reference. [Section ]
All Fortran-callable subroutines written in C must use the RTL string conversion routines ( sfor2c et al) to handle CHARACTER*n arguments. [Sections , ]
Applications cannot use both the unportable and the portable SUBLIB libraries at the same time. [Section ]
Standard VICAR application software must use imakefiles compatible with vimake to create their build files. [Section ]
Standard VICAR application software must be packed into a COM file using the vpack command. [Section ]