/usr/include/malaga.h is in libmalaga-dev 7.12-5.2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 | /* Copyright (C) 1995 Bjoern Beutel. */
/* Description. =============================================================*/
/* This is the header file for "libmalaga". */
/*===========================================================================*/
#ifdef __cplusplus
extern "C" {
#endif
/* Constants. ===============================================================*/
/* Current version of libmalaga interface. */
#define LIBMALAGA_VERSION 8
/* Minimum version of libmalaga interface that is still fully supported. */
#define MIN_LIBMALAGA_VERSION 7
#undef NULL
#define NULL 0 /* Null pointer. */
/* Some standard symbols. */
enum {NIL_SYMBOL, YES_SYMBOL, NO_SYMBOL,
SYMBOL_SYMBOL, STRING_SYMBOL, NUMBER_SYMBOL, LIST_SYMBOL, RECORD_SYMBOL};
/* Basic types. =============================================================*/
/* Numeric types. */
typedef signed char byte_t; /* Signed 8 bits. */
typedef unsigned char u_byte_t; /* Unsigned 8 bits. */
typedef signed short int short_t; /* Signed 16 bits. */
typedef unsigned short int u_short_t; /* Unsigned 16 bits. */
typedef signed int int_t; /* Signed 32 bits. */
typedef unsigned int u_int_t; /* Unsigned 32 bits. */
/* Character types. */
typedef char char_t; /* A single byte of a char. */
typedef const char_t *string_t; /* An EOS-terminated C-style string. */
enum {EOS= '\0'}; /* End-Of-String control character. */
#define ORD(c) ((u_byte_t) (c)) /* The ordinal number of character C. */
/* Boolean type. */
#undef bool_t /* <rpc/rpc.h> conflicts with "bool_t" definition */
#undef TRUE
#undef FALSE
typedef enum {FALSE, TRUE} bool_t;
typedef u_short_t cell_t;
/* A value is stored in one or more cells.
* Use this type if you want to allocate memory (pools etc.) for values. */
typedef cell_t *value_t; /* Reference to a Malaga values by this type. */
typedef cell_t symbol_t;
typedef enum {MORPHOLOGY, SYNTAX} grammar_t; /* Grammatical analysis types. */
/* Variables. ===============================================================*/
extern char_t malaga_version[]; /* Read only! */
extern string_t malaga_error;
/* If one of the functions below has created an error, this variable
* contains an error message. If a function did its job, it is NULL. */
extern enum {INTERNAL_ORDER, ALPHABETIC_ORDER,
DEFINITION_ORDER} attribute_order;
/* The order in which attributes in a record are printed.
* INTERNAL_ORDER is the order in which attributes are stored internally.
* ALPHABETIC_ORDER means the alphabetic order of the attribute names.
* DEFINITION_ORDER is the order in which the attributes are defined in the
* symbol file.
* Used by "value_readable". */
/* Value functions. =========================================================*/
extern value_t new_value( value_t value );
/* Allocate space for VALUE and copy it.
* Free the space occupied by this value with "free" after use. */
extern int_t length_of_value( value_t value );
/* Return the length of VALUE in cells. */
extern symbol_t get_value_type( value_t value );
/* Return the type of VALUE. Depending of the type, the result value may be
* SYMBOL_SYMBOL, STRING_SYMBOL, NUMBER_SYMBOL, LIST_SYMBOL, RECORD_SYMBOL. */
extern symbol_t value_to_symbol( value_t value );
/* Return VALUE as a symbol. It is an error if VALUE is no symbol. */
extern string_t get_symbol_name( symbol_t symbol );
/* Return the name of SYMBOL. */
extern value_t get_atoms( symbol_t symbol );
/* Return the list of atoms of SYMBOL. */
extern char_t *get_value_string( value_t string );
/* Return the value of STRING as a C-style string in external encoding.
* The string must be freed after use. */
extern value_t get_attribute( value_t record, symbol_t attribute );
/* Return the value of ATTRIBUTE in RECORD or NULL if it doesn't exist. */
extern int_t get_list_length( value_t list );
/* Return the number of elements in the list LIST. */
extern value_t get_element( value_t list, int_t n );
/* Return the N-th element of the list LIST, or NULL if it doesn't exist.
* If N is positive, elements will be counted from the left border.
* If N is negative, elements will be counted from the right border. */
extern double value_to_double( value_t value );
/* Return the value of VALUE which must be a number value. */
extern int_t value_to_int( value_t value );
/* Return the value of VALUE which must be an integral number value. */
extern value_t get_value_part( value_t value, value_t path );
/* Return the value part of VALUE that is specified by the path PATH.
* If that value part does not exist, return NULL. */
extern value_t get_first_item( value_t value );
/* If VALUE is a list, then return its first element (or NULL).
* If VALUE is a record, then return its first attribute (or NULL). */
extern value_t get_next_item( value_t value, value_t item );
/* If VALUE is a list, and ELEMENT one of its elements,
* then NEW_ELEMENT is the successor of ELEMENT (or NULL).
* If VALUE is a record, and ELEMENT one of its attributes,
* then NEW_ELEMENT is the next attribute in VALUE (or NULL). */
extern bool_t values_equal( value_t value1, value_t value2 );
/* Return a truth value indicating whether VALUE1 and VALUE2 are equal.
* VALUE1 an VALUE2 must be of same type or one of them must be nil.
* Refer to documentation to see what "equal" in Malaga really means. */
extern bool_t values_congruent( value_t value1, value_t value2 );
/* Return a truth value indicating whether VALUE1 and VALUE2 have
* at least one element in common.
* VALUE1 and VALUE2 must both be symbols or lists. */
extern bool_t value_in_value( value_t value1, value_t value2 );
/* Return bool value saying if VALUE1 is element or attribute of VALUE2.
* VALUE2 must be a list or a record.
* If VALUE2 is a record, then VALUE1 must be a symbol. */
extern char_t *value_to_readable( value_t value,
bool_t full_value,
int_t indent );
/* Return VALUE in a format readable for humans.
* If FULL_VALUE == TRUE, show all attributes, even those that are hidden.
* If INDENT >= 0, format value, i.e. print each element of a list or record
* on a line of its own. Assume the value is indented by INDENT columns.
* Use "free" to free the space after use. */
extern value_t parse_malaga_value( string_t string );
/* Convert the STRING to a Malaga value and return it.
* STRING must be a valid UTF-8 string.
* The value must be freed after use.
* This function sets "malaga_error". */
/* Functions. ===============================================================*/
extern void set_option( string_t option );
/* Set a libmalaga option.
* OPTION must be a valid UTF-8 string.
* This function sets "malaga_error". */
extern string_t get_info( void );
/* Get info about the current grammar. */
extern void analyse_item( string_t item, grammar_t grammar );
/* Analyse ITEM according to GRAMMAR.
* GRAMMAR must be MORPHOLOGY or SYNTAX.
* ITEM must be a valid UTF-8 string.
* This function sets "malaga_error". */
extern value_t first_analysis_result( void );
/* Get the first result of the last call of "analyse_item".
* Return NULL if there is no result. */
extern value_t next_analysis_result( void );
/* Get the next result of the last call of "analyse_item".
* Return NULL if there is no more result. */
extern void init_libmalaga( string_t project_file );
/* Initialise this module.
* This function sets "malaga_error". */
extern void terminate_libmalaga( void );
/* Terminate this module. */
/*===========================================================================*/
#ifdef __cplusplus
}
#endif
/* End of file. =============================================================*/
|