/usr/include/maa.h is in libmaa-dev 1.3.2-3.
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 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 | /* maa.h -- Header file for visible libmaa functions
* Created: Sun Nov 19 13:21:21 1995 by faith@dict.org
* Copyright 1994-1998, 2002 Rickard E. Faith (faith@dict.org)
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Library General Public License as published
* by the Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/
#ifndef _MAA_H_
#define _MAA_H_
#include <stdio.h>
#include <stdarg.h>
#ifndef __GNUC__
#define __attribute__(x)
#endif
/* If MAA_MAGIC is non-zero, important
structures will be tagged with a magic
number which will be checked for
integrity at each access. This uses up
more memory, and is slightly slower, but
helps debugging quite a bit. */
#ifndef MAA_MAGIC
#define MAA_MAGIC 1
#endif
#if MAA_MAGIC
#define HSH_MAGIC 0x01020304
#define HSH_MAGIC_FREED 0x10203040
#define SET_MAGIC 0x02030405
#define SET_MAGIC_FREED 0x20304050
#define LST_MAGIC 0x03040506
#define LST_MAGIC_FREED 0x30405060
#define MEM_STRINGS_MAGIC 0x23232323
#define MEM_STRINGS_MAGIC_FREED 0x32323232
#define MEM_OBJECTS_MAGIC 0x42424242
#define MEM_OBJECTS_MAGIC_FREED 0x24242424
#define ARG_MAGIC 0xfeedbead
#define ARG_MAGIC_FREED 0xefdeebda
#define PR_MAGIC 0x0bad7734
#define PR_MAGIC_FREED 0xb0da7743
#define SL_LIST_MAGIC 0xabcdef01
#define SL_LIST_MAGIC_FREED 0xbadcfe10
#define SL_ENTRY_MAGIC 0xacadfeed
#define SL_ENTRY_MAGIC_FREED 0xcadaefde
#endif
/* version.c */
extern const char *maa_revision_string;
/* maa.c */
#define MAA_MEMORY (3U<<30|1<<29) /* Print memory usage statistics at exit */
#define MAA_TIME (3U<<30|1<<28) /* Print timer information at exit */
#define MAA_PR (3U<<30|1<<27) /* Debug process routines */
#define MAA_SL (3U<<30|1<<26) /* Debug skip list routines */
#define MAA_PARSE (3U<<30|1<<25) /* Debug parsing */
#define MAA_SRC (3U<<30|1<<24) /* Source library */
extern void maa_init( const char *programName );
extern void maa_shutdown( void );
extern int maa_version_major( void );
extern int maa_version_minor( void );
extern const char *maa_version( void );
/* xmalloc.c */
#ifndef DMALLOC_FUNC_CHECK
extern void *xmalloc( size_t size );
extern void *xcalloc( size_t num, size_t size );
extern void *xrealloc( void *pt, size_t size );
extern void xfree( void *pt );
extern char *xstrdup( const char *s );
#endif
/* bit.c */
extern void bit_set( unsigned long *flags, int bit );
extern void bit_clr( unsigned long *flags, int bit );
extern int bit_tst( unsigned long *flags, int bit );
extern int bit_cnt( unsigned long *flags );
/* prime.c */
extern int prm_is_prime( unsigned int value );
extern unsigned long prm_next_prime( unsigned int start );
/* hash.c */
typedef void *hsh_HashTable;
typedef void *hsh_Position;
typedef struct hsh_Stats {
unsigned long size; /* Size of table */
unsigned long resizings; /* Number of resizings */
unsigned long entries; /* Total entries in table */
unsigned long buckets_used; /* Number of hash buckets in use */
unsigned long singletons; /* Number of length one lists */
unsigned long maximum_length; /* Maximum list length */
unsigned long retrievals; /* Total number of retrievals */
unsigned long hits; /* Number of retrievals from top of a list */
unsigned long misses; /* Number of unsuccessful retrievals */
} *hsh_Stats;
extern hsh_HashTable hsh_create( unsigned long (*hash)( const void * ),
int (*compare)( const void *,
const void * ) );
extern void hsh_destroy( hsh_HashTable table );
extern int hsh_insert( hsh_HashTable table,
const void *key,
const void *datum );
extern int hsh_delete( hsh_HashTable table, const void *key );
extern const void *hsh_retrieve( hsh_HashTable table, const void *key );
extern int hsh_iterate( hsh_HashTable table,
int (*iterator)( const void *key,
const void *datum ) );
extern int hsh_iterate_arg( hsh_HashTable table,
int (*iterator)( const void *key,
const void *datum,
void *arg ),
void *arg );
extern hsh_Stats hsh_get_stats( hsh_HashTable table );
extern void hsh_print_stats( hsh_HashTable table, FILE *stream );
extern unsigned long hsh_string_hash( const void *key );
extern unsigned long hsh_pointer_hash( const void *key );
extern int hsh_string_compare( const void *key1, const void *key2 );
extern int hsh_pointer_compare( const void *key1, const void *key2 );
extern void hsh_key_strings(hsh_HashTable);
extern hsh_Position hsh_init_position( hsh_HashTable table );
extern hsh_Position hsh_next_position( hsh_HashTable table,
hsh_Position position );
extern void *hsh_get_position( hsh_Position position, void **key );
extern int hsh_readonly( hsh_HashTable table, int flag );
#define HSH_POSITION_INIT(P,T) ((P)=hsh_init_position(T))
#define HSH_POSITION_NEXT(P,T) ((P)=hsh_next_position(T,P))
#define HSH_POSITION_OK(P) (P)
#define HSH_POSITION_GET(P,K,D) ((D)=hsh_get_position(P,&K))
#define HSH_POSITION_GETKEY(P,K) (hsh_get_position(P,&K))
/* iterate over all (key, datum) pairs, (K,D), in hash table T */
#define HSH_ITERATE(T,P,K,D) \
for (HSH_POSITION_INIT((P),(T)); \
HSH_POSITION_OK(P) && (HSH_POSITION_GET((P),(K),(D)),1); \
HSH_POSITION_NEXT((P),(T)))
/* iterate over all keys K, in hash table T */
#define HSH_ITERATE_KEYS(T,P,K) \
for (HSH_POSITION_INIT((P),(T)); \
HSH_POSITION_OK(P) && (HSH_POSITION_GETKEY((P),(K)),1); \
HSH_POSITION_NEXT((P),(T)))
/* If the HSH_ITERATE loop is exited before all elements in the table are
seen, then HSH_ITERATE_END should be called. Calling this function
after complete loops does no harm. */
#define HSH_ITERATE_END(T) hsh_readonly(T,0)
/* set.c */
typedef void *set_Set;
typedef void *set_Position;
typedef struct set_Stats{
unsigned long size; /* Size of table */
unsigned long resizings; /* Number of resizings */
unsigned long entries; /* Total entries in table */
unsigned long buckets_used; /* Number of hash buckets in use */
unsigned long singletons; /* Number of length one lists */
unsigned long maximum_length; /* Maximum list length */
unsigned long retrievals; /* Total number of retrievals */
unsigned long hits; /* Number of retrievals from top of a list */
unsigned long misses; /* Number of unsuccessful retrievals */
} *set_Stats;
typedef unsigned long (*set_HashFunction)( const void * );
typedef int (*set_CompareFunction)( const void *, const void * );
extern set_Set set_create( set_HashFunction hash,
set_CompareFunction compare );
extern set_HashFunction set_get_hash( set_Set set );
extern set_CompareFunction set_get_compare( set_Set set );
extern void set_destroy( set_Set set );
extern int set_insert( set_Set set, const void *elem );
extern int set_delete( set_Set set, const void *elem );
extern int set_member( set_Set set, const void *elem );
extern int set_iterate( set_Set set,
int (*iterator)( const void *key ) );
extern int set_iterate_arg( set_Set set,
int (*iterator)( const void *elem,
void *arg ),
void *arg );
extern set_Set set_add( set_Set set1, set_Set set2 );
extern set_Set set_del( set_Set set1, set_Set set2 );
extern set_Set set_union( set_Set set1, set_Set set2 );
extern set_Set set_inter( set_Set set1, set_Set set2 );
extern set_Set set_diff( set_Set set1, set_Set set2 );
extern int set_equal( set_Set set1, set_Set set2 );
extern set_Stats set_get_stats( set_Set set );
extern void set_print_stats( set_Set set, FILE *stream );
extern int set_count( set_Set set );
extern set_Position set_init_position( set_Set set );
extern set_Position set_next_position( set_Set set,
set_Position position );
extern void *set_get_position( set_Position position );
extern int set_readonly( set_Set set, int flag );
#define SET_POSITION_INIT(P,S) ((P)=set_init_position(S))
#define SET_POSITION_NEXT(P,S) ((P)=set_next_position(S,P))
#define SET_POSITION_OK(P) (P)
#define SET_POSITION_GET(P,E) ((E)=set_get_position(P))
/* iterate over all entries E in set S */
#define SET_ITERATE(S,P,E) \
for (SET_POSITION_INIT((P),(S)); \
SET_POSITION_OK(P) && (SET_POSITION_GET((P),(E)),1); \
SET_POSITION_NEXT((P),(S)))
/* If the SET_ITERATE loop is exited before all elements in the set are
seen, then SET_ITERATE_END should be called. Calling this function
after complete loops does no harm. */
#define SET_ITERATE_END(S) set_readonly(S,0)
/* stack.c */
typedef void *stk_Stack;
extern stk_Stack stk_create( void );
extern void stk_destroy( stk_Stack stack );
extern void stk_push( stk_Stack stack, void *datum );
extern void *stk_pop( stk_Stack stack );
extern void *stk_top( stk_Stack stack );
/* list.c */
typedef void *lst_List;
typedef void *lst_Position;
extern lst_List lst_create( void );
extern void lst_destroy( lst_List list );
extern void lst_append( lst_List list, const void *datum );
extern void lst_push( lst_List list, const void *datum );
extern void *lst_pop( lst_List list );
extern void *lst_top( lst_List list );
extern void *lst_nth_get( lst_List list, unsigned int n );
extern void lst_nth_set( lst_List list, unsigned int n,
const void *datum );
extern int lst_member( lst_List list, const void *datum );
extern unsigned int lst_length( lst_List list );
extern int lst_iterate( lst_List list,
int (*iterator)( const void *datum ) );
extern int lst_iterate_arg( lst_List list,
int (*iterator)( const void *datum,
void *arg ),
void *arg );
extern void lst_truncate( lst_List list, unsigned int length );
extern void lst_truncate_position( lst_List list,
lst_Position position );
extern lst_Position lst_init_position( lst_List list );
extern lst_Position lst_last_position( lst_List list );
extern lst_Position lst_next_position( lst_Position position );
extern lst_Position lst_nth_position( lst_List list, unsigned int n );
extern void *lst_get_position( lst_Position position );
extern void lst_set_position( lst_Position position,
const void *datum );
extern void lst_dump( lst_List list );
extern void _lst_shutdown( void );
extern long int lst_total_allocated( void );
#define LST_POSITION_INIT(P,L) ((P)=lst_init_position(L))
#define LST_POSITION_NEXT(P) ((P)=lst_next_position(P))
#define LST_POSITION_OK(P) (P)
#define LST_POSITION_GET(P,E) ((E)=lst_get_position(P))
/* iterate over all entries E in list L */
#define LST_ITERATE(L,P,E) \
for (LST_POSITION_INIT((P),(L)); \
LST_POSITION_OK(P) && (LST_POSITION_GET((P),(E)),1); \
LST_POSITION_NEXT(P))
/* iterate over all entries in lists L1 and L2 */
#define LST_ITERATE2(L1,L2,P1,P2,E1,E2) \
for (LST_POSITION_INIT((P1),(L1)), LST_POSITION_INIT((P2),(L2)); \
LST_POSITION_OK(P1) && LST_POSITION_OK(P2) \
&& (LST_POSITION_GET((P1),(E1)),LST_POSITION_GET((P2),(E2)),1); \
LST_POSITION_NEXT(P1), LST_POSITION_NEXT(P2))
/* error.c */
extern void err_set_program_name( const char *programName );
extern const char *err_program_name( void );
extern void err_fatal( const char *routine, const char *format, ... )
__attribute__((noreturn,format(printf, 2, 3)));
extern void err_fatal_errno( const char *routine,
const char *format, ... )
__attribute__((noreturn,format(printf, 2, 3)));
extern void err_warning( const char *routine, const char *format, ... )
__attribute__((format(printf, 2, 3)));
extern void err_internal( const char *routine, const char *format, ... )
__attribute__((noreturn,format(printf, 2, 3)));
/* memory.c */
typedef void *mem_String;
typedef void *mem_Object;
typedef struct mem_StringStats {
int count; /* Number of strings or objects */
int bytes; /* Number of bytes allocated */
} *mem_StringStats;
typedef struct mem_ObjectStats {
int total; /* Total objects requested */
int used; /* Total currently in use */
int reused; /* Total reused */
int size; /* Size of each object */
} *mem_ObjectStats;
extern mem_String mem_create_strings( void );
extern void mem_destroy_strings( mem_String info );
extern const char *mem_strcpy( mem_String info, const char *string );
extern const char *mem_strncpy( mem_String info,
const char *string,
int len );
extern void mem_grow( mem_String info,
const char *string,
int len );
extern const char *mem_finish( mem_String info );
extern mem_StringStats mem_get_string_stats( mem_String info );
extern void mem_print_string_stats( mem_String info, FILE *stream );
extern mem_Object mem_create_objects( int size );
extern void mem_destroy_objects( mem_Object info );
extern void *mem_get_object( mem_Object info );
extern void *mem_get_empty_object( mem_Object info );
extern void mem_free_object( mem_Object info, void *obj );
extern mem_ObjectStats mem_get_object_stats( mem_Object info );
extern void mem_print_object_stats( mem_Object info, FILE *stream );
/* string.c */
typedef void *str_Pool;
typedef hsh_Position str_Position;
typedef struct str_Stats {
int count; /* Number of strings created */
int bytes; /* Number of bytes allocated */
int retrievals; /* Total number of retrievals */
int hits; /* Number of retrievals from top of a list */
int misses; /* Number of unsuccessful retrievals */
} *str_Stats;
extern str_Pool str_pool_create( void );
extern void str_pool_destroy( str_Pool pool );
extern int str_pool_exists( str_Pool pool, const char *s );
extern const char *str_pool_find( str_Pool pool, const char *s );
extern const char *str_pool_copy( str_Pool pool, const char *s );
extern const char *str_pool_copyn( str_Pool pool, const char *s, int length );
extern void str_pool_grow( str_Pool pool, const char *s, int length );
extern const char *str_pool_finish( str_Pool pool );
extern str_Stats str_pool_get_stats( str_Pool pool );
extern void str_pool_print_stats( str_Pool pool, FILE *stream );
extern str_Position str_pool_init_position(
str_Pool table );
extern str_Position str_pool_next_position(
str_Pool table,
str_Position position );
extern void str_pool_get_position(
str_Position position,
char const *const *key );
#define str_pool_readonly(pool, flag) hsh_readonly ((pool), (flag))
extern int str_pool_iterate(
str_Pool pool,
int (*iterator)( const char *s ) );
extern int str_pool_iterate_arg(
str_Pool pool,
int (*iterator)( const char *s, void *arg ),
void *arg );
#define STR_POSITION_INIT(P,T) ((P)=str_pool_init_position(T))
#define STR_POSITION_NEXT(P,T) ((P)=str_pool_next_position(T,P))
#define STR_POSITION_OK(P) (P)
#define STR_POSITION_GET(P,K) (str_pool_get_position(P,&K), K)
/* iterate over all keys (K) in string pool T */
#define STR_ITERATE(T,P,K) \
for (STR_POSITION_INIT((P),(T)); \
STR_POSITION_OK(P) && (STR_POSITION_GET((P),(K)),1); \
STR_POSITION_NEXT((P),(T)))
/* If the STR_ITERATE loop is exited before all elements in the table are
seen, then STR_ITERATE_END should be called. Calling this function
after complete loops does no harm. */
#define STR_ITERATE_END(T) str_readonly(T,0)
extern int str_exists( const char *s );
extern const char *str_find( const char *s );
extern const char *str_findn( const char *s, int length );
extern const char *str_copy( const char *s );
extern const char *str_copyn( const char *s, int length );
extern void str_grow( const char *s, int length );
extern const char *str_finish( void );
extern const char *str_unique( const char *prefix );
extern void str_destroy( void );
extern str_Stats str_get_stats( void );
extern void str_print_stats( FILE *stream );
/* debug.c */
typedef unsigned long int dbg_Type;
extern void dbg_register( dbg_Type flag, const char *name );
extern void _dbg_register( dbg_Type flag, const char *name );
extern void dbg_destroy( void );
extern void dbg_set( const char *name );
extern void dbg_set_flag( dbg_Type flag );
extern void dbg_unset_flag( dbg_Type flag );
extern int dbg_test( dbg_Type flag );
extern void dbg_list( FILE *stream );
#define PRINTF(flag,arg) if (dbg_test(flag)) { log_info arg; }
/* flags.c */
typedef unsigned long int flg_Type;
extern void flg_register( flg_Type flag, const char *name );
extern void flg_destroy( void );
extern void flg_set( const char *name );
extern int flg_test( flg_Type flag );
extern void flg_list( FILE *stream );
extern const char *flg_name( flg_Type flag );
/* timer.c */
extern void tim_start( const char *name );
extern void tim_stop( const char *name );
extern void tim_reset( const char *name );
extern double tim_get_real( const char *name );
extern double tim_get_user( const char *name );
extern double tim_get_system( const char *name );
extern void tim_print_timer( FILE *str, const char *name );
extern void tim_print_timers( FILE *str );
extern void _tim_shutdown( void );
/* arg.c */
#define ARG_NO_ESCAPE 0x0001 /* Backslashed are not escape characters */
#define ARG_NO_QUOTE 0x0002 /* Don't use quote marks for quoting */
typedef void *arg_List;
extern arg_List arg_create( void );
extern void arg_destroy( arg_List arg );
extern arg_List arg_add( arg_List arg, const char *string );
extern arg_List arg_addn( arg_List arg, const char *string, int length );
extern void arg_grow( arg_List arg, const char *string, int length );
extern arg_List arg_finish( arg_List arg );
extern const char *arg_get( arg_List arg, int item );
extern int arg_count( arg_List arg );
extern void arg_get_vector( arg_List arg, int *argc, char ***argv );
extern arg_List arg_argify( const char *string, int quoteStyle );
/* pr.c */
#define PR_USE_STDIN 0x00000001
#define PR_USE_STDOUT 0x00000002
#define PR_USE_STDERR 0x00000004
#define PR_CREATE_STDIN 0x00000010
#define PR_CREATE_STDOUT 0x00000020
#define PR_CREATE_STDERR 0x00000040
#define PR_STDERR_TO_STDOUT 0x00000100
extern int pr_open( const char *command, int flags,
int *infd, int *outfd, int *errfd );
extern int pr_close_nowait( int fd );
extern int pr_close( int fd );
extern int pr_wait( int pid );
extern void _pr_shutdown( void );
extern int pr_spawn( const char *command );
int pr_readwrite( int in, int out,
const char *inBuffer, int inLen,
char *outBuffer, int outMaxLen );
int pr_filter( const char *command,
const char *inBuffer, int inLen,
char *outBuffer, int outMaxLen );
/* sl.c */
typedef void *sl_List;
typedef int (*sl_Iterator)( const void *datum );
typedef int (*sl_IteratorArg)( const void *datum, void *arg );
extern sl_List sl_create( int (*compare)( const void *key1,
const void *key2 ),
const void *(*key)( const void *datum ),
const char *(*print)( const void *datum ) );
extern void sl_destroy( sl_List list );
extern void _sl_shutdown( void );
extern void sl_insert( sl_List list, const void *datum );
extern void sl_delete( sl_List list, const void *datum );
extern const void *sl_find( sl_List list, const void *key );
extern int sl_iterate( sl_List list, sl_Iterator f );
extern int sl_iterate_arg( sl_List list, sl_IteratorArg f, void *arg );
extern void _sl_dump( sl_List list );
/* text.c */
extern const char * txt_soundex( const char *string );
extern void txt_soundex2(
const char *string,
char *result /* five chars */ );
/* base64.c */
extern const char *b64_encode( unsigned long val );
extern unsigned long b64_decode( const char *val );
extern unsigned long b64_decode_buf (const char *val, size_t len);
/* base26.c */
extern const char *b26_encode( unsigned long val );
extern unsigned long b26_decode( const char *val );
/* source.c */
typedef void *src_Type;
typedef struct src_Stats {
int lines_used; /* Lines used */
int lines_allocated; /* Lines allocated */
int lines_bytes; /* Bytes required to store lines */
int tokens_total; /* Tokens used */
int tokens_reused; /* Tokens reused */
int tokens_size; /* Size of a token information object */
} *src_Stats;
extern void src_create( void );
extern void src_destroy( void );
extern const char *src_line( const char *line, int len );
extern void src_new_file( const char *filename );
extern void src_new_line( int line );
extern void src_advance( int length );
extern void src_cpp_line( const char *line, int length );
extern src_Type src_get( int length );
extern const char *src_filename( src_Type source );
extern int src_linenumber( src_Type source );
extern int src_offset( src_Type source );
extern int src_length( src_Type source );
extern const char *src_source_line( src_Type source );
extern void src_parse_error( FILE *stream, src_Type source,
const char *message );
extern void src_print_error( FILE *stream, src_Type source,
const char *format, ... );
extern void src_print_message( FILE *str, src_Type source,
const char *format, ... );
extern void src_print_line( FILE *stream, src_Type source );
extern src_Stats src_get_stats( void );
extern void src_print_stats( FILE *stream );
/* parse-concrete.c */
extern void prs_register_concrete( const char *symbol,
const char *concrete );
extern const char *prs_concrete( const char *symbol );
extern void _prs_shutdown( void );
/* log.c */
#define LOG_OPTION_FULL 1
#define LOG_OPTION_NO_FULL 2
extern void log_syslog( const char *ident );
extern void log_set_facility( const char *facility );
extern const char *log_get_facility( void );
extern void log_option( int option );
extern void log_file( const char *ident, const char *filename );
extern void log_stream( const char *ident, FILE *stream );
extern void log_close( void );
extern void log_error_va( const char *routine,
const char *format, va_list ap );
extern void log_error( const char *routine, const char *format, ... );
extern void log_info_va( const char *format, va_list ap );
extern void log_info( const char *format, ... );
#endif
|