This clause defines the conformance criteria and overall characteristics of the binding defined in this standard.
Table 3.1 lists the topics for this clause.
This binding incorporates the rules of conformance defined in ISO/IEC 18026 for implementations of the SRM application programmer interface (API), with those additional requirements specifically defined for C bindings of the SRM API.
The following criteria shall determine conformance of an implementation to this binding:
In order to conform, an implementation of the C binding of the SRM API shall make visible all of the declarations in the C binding specified in this part of ISO/IEC 18042. Thus, for example, the syntax of the function names shall be precisely as specified in the binding and parameters shall be of the data types stated in the binding.
An implementation may substitute macros for functions. However, the macros shall be designed so that side-effects as defined in ISO/IEC 9899 work properly.
The C language represents character strings as an array of characters terminated by the null character (i.e., ‘\0’). This means that the null character is not usable as a printable character.
The C standard (ISO/IEC 9899) requires that compilers recognize internal identifiers that are distinct in at least 31 characters. That standard also requires that external identifiers (i.e., those seen by the linker) be recognized to a minimum of 6 characters, independent of case.
The function names of the SRM API are all mapped to C functions whose names begin with the letter sequence “SRM_”. Some words and phrases used in the SRM API function names may be abbreviated in the representation. The set of such abbreviations is given in Table 4.2.
Implementations that run in environments where two distinct C internal identifiers would be equivalent if they were both external identifiers shall include a set of #define constructs in the header file that equate the long names to a set of short names.
ISO/IEC 18026 reserves certain value ranges for registration.‡ The registered items will be bound to the C programming language (and other programming languages). The registered item binding shall be consistent with the binding presented in this part of ISO/IEC 18042.
Most SRM API functions return a value of type SRM_StatusCode. This data type contains values indicating the manner of completion of the function.
Some API functions return other values. The data types for these values are defined in 5 Type definitions.
C provides a mechanism to allow external files to be included in a compilation. 5 Type definitions specifies the data types that shall be defined in the file srm_types.h. Similarly, 6 Object class definitions specifies the object classes that shall be defined in the file srm_objects.h. The order of these files is srm_types.h first followed by srm_objects.h.
These header files should be included in any application program that intends to use the SRM API via the C binding. Additional implementation-dependent items may be placed in these files, if needed. In addition, a composite header file srm.h shall be provided that contains C include statements for both srm_types.h and srm_functions.h. An application may use either the two header files, srm_types.h and srm_functions.h, or the composite header file srm.h.
Since the SRM also uses data types from ISO/IEC 18025, the header file edcs.h shall precede the SRM header files.
All errors reported by an implementation are returned by functions using the data type SRM_StatusCode. Errors status values defined in ISO/IEC 18026 are assigned positive enumerant values.
This binding defines errors specific to the C language binding. These are defined in Table 3.2.
Table 3.2 — C-specific SRM errors
Enumerant |
Message |
---|---|
SRM_BUFFER_OVERFLOW |
Buffer too small to hold data. |
SRM_ENUMERATION_VALUE_INVALID |
Enumeration type out of range. |
‡ For the purpose of this International Standard and according to the rules for the designation and operation of registration authorities in the ISO Directives, the ISO council has designated the NGA to act as registration authority.
http://www.iso.ch/iso/en/ittf/PubliclyAvailableStandards/ISO_IEC_18042-4_Ed1.html