[To main guide]

Lumas Lib 4 C - Reference

Functions

General Functions

flml_is_message_complete
flml_get_last_error

Functions for initialising the parsing

flml_parse_message
flml_set_tag_info_root

Functions for setting the base read location

flml_set_location
flml_restore_location

Functions for reading parameters

flml_is_present
flml_read_void
flml_read_boolean
flml_read_integer
flml_read_float
flml_read_float
flml_read_ipv4
flml_read_ipv6
flml_read_date
flml_read_time
flml_read_oid
flml_read_ascii
flml_read_ascii_dynamic
flml_read_const
flml_read_unicode
flml_read_unicode_dynamic
flml_read_bytes
flml_read_bytes_dynamic
flml_read_embedded
flml_read_embedded_dynamic
flml_read_union
flml_read_enumerated_union

Functions for cleaning up after reading

flml_release

Functions to support encoding

flml_encode_float
flml_encode_get_ascii_length
flml_encode_ascii
flml_encode_get_unicode_length
flml_encode_unicode
flml_encode_get_bytes_length
flml_encode_bytes
flml_is_well_formed

Functions to aid debugging

flml_debug_display_parse_info


flml_is_message_complete

int flml_is_message_complete(const char *ap_message, int a_length );


flml_get_last_error

elml_error flml_get_last_error(slml_parse_ctrl *ap_parse_ctrl );


flml_parse_message

tlms_bool flml_parse_message(slml_parse_ctrl *ap_parse_ctrl,
const char *ap_message,
int a_length );


flml_set_tag_info_root

void flml_set_tag_info_root(slml_parse_ctrl *ap_parse_ctrl, slml_tag_info *ap_tag_info );


flml_set_location

tlms_bool flml_set_location(slml_parse_ctrl *ap_parse_ctrl,
const char ac_tagging[],
int a_instance,
slml_location *ap_old_location );


flml_restore_location

slml_location flml_restore_location(slml_parse_ctrl *ap_parse_ctrl,
slml_location a_restore_location );


flml_is_present

tlms_bool flml_is_present(slml_parse_ctrl *ap_parse_ctrl,
const char ac_tagging[],
int a_instance );


flml_read_void

tlms_bool flml_read_void(slml_parse_ctrl *ap_parse_ctrl,
const char ac_tagging[],
int a_instance );


flml_read_boolean

tlms_bool flml_read_boolean(slml_parse_ctrl *ap_parse_ctrl,
const char ac_tagging[],
int a_instance,
int *ap_boolean );


flml_read_integer

tlms_bool flml_read_integer(slml_parse_ctrl *ap_parse_ctrl,
const char ac_tagging[],
int a_instance,
int *ap_integer );


flml_read_float

tlms_bool flml_read_float(slml_parse_ctrl *ap_parse_ctrl,
const char ac_tagging[],
int a_instance,
tlms_float *ap_float );


flml_read_float

tlms_bool flml_read_float(slml_parse_ctrl *ap_parse_ctrl,
const char ac_tagging[],
int a_instance,
tlms_double *ap_double );


flml_read_ipv4

tlms_bool flml_read_ipv4(slml_parse_ctrl *ap_parse_ctrl,
const char ac_tagging[],
int a_instance,
unsigned char ac_addr[4] );


flml_read_ipv6

tlms_bool flml_read_ipv6(slml_parse_ctrl *ap_parse_ctrl,
const char ac_tagging[],
int a_instance,
unsigned char ac_addr[16] );


flml_read_date

tlms_bool flml_read_date(slml_parse_ctrl *ap_parse_ctrl,
const char ac_tagging[],
int a_instance,
tlms_date *ap_date );


flml_read_time

tlms_bool flml_read_time(slml_parse_ctrl *ap_parse_ctrl,
const char ac_tagging[],
int a_instance,
tlms_time *ap_time );


flml_read_oid

tlms_bool flml_read_oid(slml_parse_ctrl *ap_parse_ctrl,
const char ac_tagging[],
int a_instance,
tlms_oid *ap_oid );


flml_read_ascii

tlms_bool flml_read_ascii(slml_parse_ctrl *ap_parse_ctrl,
const char ac_tagging[],
int a_instance,
char ac_string[],
int a_max_length );


flml_read_ascii_dynamic

tlms_bool flml_read_ascii_dynamic(slml_parse_ctrl *ap_parse_ctrl,
const char ac_tagging[],
int a_instance,
char **app_string );


flml_read_const

tlms_bool flml_read_const(slml_parse_ctrl *ap_parse_ctrl,
const char ac_tagging[],
int a_instance,
char ac_string[],
int a_max_length );


flml_read_unicode

tlms_bool flml_read_unicode(slml_parse_ctrl *ap_parse_ctrl,
const char ac_tagging[],
int a_instance,
tlms_unicode ac_string[],
int a_max_length );


flml_read_unicode_dynamic

tlms_bool flml_read_unicode_dynamic(slml_parse_ctrl *ap_parse_ctrl,
const char ac_tagging[],
int a_instance,
tlms_unicode **app_string );


flml_read_bytes

tlms_bool flml_read_bytes(slml_parse_ctrl *ap_parse_ctrl,
const char ac_tagging[],
int a_instance,
char ac_bytes[],
int a_max_length,
int *ap_result_length );


flml_read_bytes_dynamic

tlms_bool flml_read_bytes_dynamic(slml_parse_ctrl *ap_parse_ctrl,
const char ac_tagging[],
int a_instance,
char **app_bytes,
int *ap_result_length );


flml_read_embedded

tlms_bool flml_read_embedded(slml_parse_ctrl *ap_parse_ctrl,
const char ac_tagging[],
int a_instance,
char ac_embedded[],
int a_max_length,
int *ap_result_length );


flml_read_embedded_dynamic

tlms_bool flml_read_embedded_dynamic(slml_parse_ctrl *ap_parse_ctrl,
const char ac_tagging[],
int a_instance,
char **app_embedded,
int *ap_result_length );


flml_read_union

tlms_bool flml_read_union(slml_parse_ctrl *ap_parse_ctrl,
const char ac_tagging[],
int a_instance,
char ac_string[],
int a_max_length );


flml_read_enumerated_union

int flml_read_enumerated_union(slml_parse_ctrl *ap_parse_ctrl,
const char ac_tagging[],
int a_instance,
slml_tag_translation ac_tag_translation[] );


flml_release

void flml_release(slml_parse_ctrl *ap_parse_ctrl );


flml_encode_float

tlms_bool flml_encode_float(char ac_encoded_float[],
tlms_double a_value );


flml_encode_get_ascii_length

int flml_encode_get_ascii_length(const char ac_ascii[] );


flml_encode_ascii

tlms_bool flml_encode_ascii(char ac_encoded_ascii[],
int a_encoded_ascii_max_length,
const char ac_ascii[] );


flml_encode_get_unicode_length

int flml_encode_get_unicode_length(const tlms_unicode ac_unicode[] );


flml_encode_unicode

tlms_bool flml_encode_unicode(char ac_encoded_unicode[],
int a_encoded_unicode_max_length,
const tlms_unicode ac_unicode[] );


flml_encode_get_bytes_length

int flml_encode_get_bytes_length(int a_data_length );


flml_encode_bytes

tlms_bool flml_encode_bytes(char ac_base64[],
int a_max_length,
const char *ap_data,
int a_length );


flml_is_well_formed

tlms_bool flml_is_well_formed(const char *ap_message, int a_length );


flml_debug_display_parse_info

void flml_debug_display_parse_info(FILE *ah_fout, slml_parse_ctrl *ap_parse_ctrl );



Types

slml_tag_translation
slml_message_element
slml_tag_info
slml_location
slml_parse_ctrl
tlml_input_location


slml_tag_translation

typedef struct slml_tag_translation
{
        char *text_tag;
        int enumerated_value;
} slml_tag_translation;


slml_message_element

typedef struct slml_message_element
{
        char *p_tag;
        tlml_input_location tag_location;
        int tag_number;
        tlml_input_location value_location;
        struct slml_message_element *p_compound;
        struct slml_message_element *p_next;
} slml_message_element;


slml_tag_info

typedef struct slml_tag_info
{
        const char *p_name;
        struct slml_tag_info *p_definition;
} slml_tag_info;


slml_location

typedef struct slml_location
{
        slml_message_element *p_element;
        slml_tag_info *p_tag_info;
} slml_location;


slml_parse_ctrl

typedef struct slml_parse_ctrl
{
        const char *p_message;
        int length;
        const char *p_next;
        const char *p_message_end;
        elml_error error;
        int allocation_failed;
        slml_location root_location;
        slml_location base_location;
        int unget_char;
        int recursion;
} slml_parse_ctrl;


tlml_input_location

typedef int tlml_input_location;


typedef         unsigned char tlms_bool; // Boolean value
typedef         unsigned long tlms_uns32; // Unsigned 32 bit integer
typedef         unsigned short tlms_uns16; // Unsigned 16 bit integer
typedef         unsigned char tlms_uns8; // Unsigned 8 bit integer
typedef         signed long tlms_int32; // Signed 32 bit integer
typedef         signed short tlms_int16; // Signed 16 bit integer
typedef         signed char tlms_int8; // Signed 8 bit integer
typedef         float tlms_float; // Single precision floating point
typedef         double tlms_double; // Double precision floating point
typedef         char tlms_ascii; // Ascii character
typedef         unsigned short tlms_unicode; // 16 bit wide Unicode character
typedef         unsigned char tlms_bytes; // Bytes type
typedef         char tlms_embedded; // Single byte of an embedded type
typedef         tlms_uns8 tlms_ipv4[4];
typedef         tlms_uns8 tlms_ipv6[16];


tlms_date

typedef struct tlms_date
{
        unsigned int year; /* years since 0 */
        unsigned int month; /* months since January - [1,12] */
        unsigned int day; /* day of the month - [1,31] */
} tlms_date;


tlms_time

typedef struct tlms_time
{
        unsigned int hour; /* hours since midnight - [0,23] */
        unsigned int min; /* minutes after the hour - [0,59] */
        unsigned int sec; /* seconds after the minute - [0,59] */
} tlms_time;


tlms_oid

typedef struct tlms_oid
{
        unsigned int size;
        unsigned int value[20];
} tlms_oid;


elml_error

typedef enum elml_error
{
        ELML_OK = 0,
        ELML_PARSE_FAILED = 1000,
        ELML_NO_DATA_IN_MESSAGE,
        ELML_ALLOCATION_FAILED,
        ELML_TOO_MANY_RECURSIONS,
        ELML_MESSAGE_TOO_SHORT,
        ELML_PARAMETER_TOO_LONG,
        ELML_PARAMETER_WRONG_TYPE,
        ELML_PARAMETER_NOT_FOUND,
        ELML_PARAMETER_DOES_NOT_EXIST, // Only used when tagging info is present
        ELML_OUTPUT_TOO_SMALL
} elml_error;

[To main guide]


Copyright © Tech-Know-Ware Ltd, 2001, 2002, 2003.
Last modification: 19th August 2003