📄 sfl.h
字号:
* DOES_BSDSIGNALS Supports BSD signal model (e.g. siginterrupt) */#if (defined (AF_INET))# define DOES_SOCKETS /* System supports BSD sockets */#else# undef DOES_SOCKETS#endif#if (defined (__UNIX__) || defined (__VMS__) || defined (__OS2__))# define DOES_UID /* System supports uid functions */#else# undef DOES_UID# if (!defined (__DJGPP__)) /* gid_t and uid_t already defined */ typedef int gid_t; /* Group id type */ typedef int uid_t; /* User id type */# endif#endif#if (defined (__WINDOWS__) && (!defined (__LCC__)))# define DOES_SNPRINTF# define snprintf _snprintf# define vsnprintf _vsnprintf#elif (defined (__OS2__))# define DOES_SNPRINTF#elif (defined (__UTYPE_SCO))# define DOES_SNPRINTF#elif (defined (__UTYPE_LINUX))# define DOES_SNPRINTF#else# undef DOES_SNPRINTF#endif/* SunOS 5 (Solaris) does not support BSD-style signal handling */#if (!defined (__UTYPE_SUNSOLARIS))# define DOES_BSDSIGNALS#else# undef DOES_BSDSIGNALS#endif#endif /* Include PRELUDE.H *//* ----------------------------------------------------------------<Prolog>- Name: sflvers.h Title: Define SFL version Package: Standard Function Library (SFL) Written: 1996/11/21 iMatix SFL project team <sfl@imatix.com> Revised: 1998/10/02 Synopsis: Defines the SFL_VERSION constant. Copyright: Copyright (c) 1996-2000 iMatix Corporation License: This is free software; you can redistribute it and/or modify it under the terms of the SFL License Agreement as provided in the file LICENSE.TXT. This software is distributed in the hope that it will be useful, but without any warranty. ------------------------------------------------------------------</Prolog>-*/#ifndef SFLVERS_INCLUDED /* Allow multiple inclusions */#define SFLVERS_INCLUDED#define SFL_VERSION "2.01" /* Main SFL version */#endif/* ----------------------------------------------------------------<Prolog>- Name: sflbits.h Title: Large bitstring manipulation functions Package: Standard Function Library (SFL) Written: 1996/05/14 iMatix SFL project team <sfl@imatix.com> Revised: 1997/09/08 Synopsis: Provides operations to manipulate large bitstrings. The bitstrings are compressed. Intended for bit-based index techniques, where bitstrings can be millions of bits long. These functions are still in development; this is an early version that provides basic functionality. Simple tests on large bitmaps with random filling show a cost of about 3 bytes per bit, after compression. This includes all the indexing information. Copyright: Copyright (c) 1996-2000 iMatix Corporation License: This is free software; you can redistribute it and/or modify it under the terms of the SFL License Agreement as provided in the file LICENSE.TXT. This software is distributed in the hope that it will be useful, but without any warranty. ------------------------------------------------------------------</Prolog>-*/#ifndef SFLBITS_INCLUDED /* Allow multiple inclusions */#define SFLBITS_INCLUDED/* Definitions */#define BIT_DATASIZE 500 /* Size of block data part */#define BIT_INDEXSIZE BIT_DATASIZE/2 /* Size of block index part */#define BIT_SECTSIZE 8192 /* Size of one bitstring section */#define BIT_MAXBLOCKS 1024 /* Max. size of bitstring */#define BIT_MAXBITS 16384000L /* Max. possible bit number */typedef struct { /* Bitstring block */ union { byte data [BIT_DATASIZE]; /* Data record part */ dbyte index [BIT_INDEXSIZE]; /* Index record part */ } block; dbyte left, /* Pointer to left (index only) */ right; /* Pointer to right (data too) */ int size; /* Size of data part */} BITBLOCK;typedef struct { /* Bitstring object */ BITBLOCK *block [BIT_MAXBLOCKS]; /* Table of allocated blocks */ int block_count; /* How many allocated blocks */ dbyte free_list; /* Block free list */} BITS;extern long bits_free_count; /* We count free() and malloc() */extern long bits_alloc_count;/* Function prototypes */#ifdef __cplusplusextern "C" {#endifint bits_init (void);int bits_term (void);BITS *bits_create (void);void bits_destroy (BITS *bits);int bits_set (BITS *bits, long bit);int bits_clear (BITS *bits, long bit);int bits_test (const BITS *bits, long bit);int bits_fput (FILE *file, const BITS *bits);BITS *bits_fget (FILE *file);#ifdef __cplusplus}#endif#endif/* ----------------------------------------------------------------<Prolog>- Name: sflcomp.h Title: Compression functions Package: Standard Function Library (SFL) Written: 1991/05/20 iMatix SFL project team <sfl@imatix.com> Revised: 1997/09/08 Synopsis: Various compression/decompression functions. The LZ-type algorith (LZRW1/KH) was originally written by Kurt Haenen <ghgaea8@blekul11> and made portable by P. Hintjens. This is a reasonable LZ/RLE algorithm, very fast, but about 30% less efficient than a ZIP-type algorithm in terms of space. The RLE algorithms are better suited to compressing sparse data. The nulls variant is specifically tuned to data that consists mostly of binary zeroes. The bits variant is tuned for compressing sparse bitmaps. Copyright: Copyright (c) 1996-2000 iMatix Corporation License: This is free software; you can redistribute it and/or modify it under the terms of the SFL License Agreement as provided in the file LICENSE.TXT. This software is distributed in the hope that it will be useful, but without any warranty. ------------------------------------------------------------------</Prolog>-*/#ifndef SFLCOMP_INCLUDED /* Allow multiple inclusions */#define SFLCOMP_INCLUDED/* Function prototypes */#ifdef __cplusplusextern "C" {#endifword compress_block (const byte *source, byte *dest, word source_size);word expand_block (const byte *source, byte *dest, word source_size);word compress_rle ( byte *source, byte *dest, word source_size);word expand_rle (const byte *source, byte *dest, word source_size);word compress_nulls ( byte *source, byte *dest, word source_size);word expand_nulls (const byte *source, byte *dest, word source_size);word compress_bits ( byte *source, byte *dest, word source_size);word expand_bits (const byte *source, byte *dest, word source_size);#ifdef __cplusplus}#endif#endif/* ----------------------------------------------------------------<Prolog>- Name: sflcons.h Title: Console output functions Package: Standard Function Library (SFL) Written: 1997/05/22 iMatix SFL project team <sfl@imatix.com> Revised: 1998/02/08 Synopsis: Provides redirectable console output: use the coprintf() and coputs() calls instead of printf() and puts() in a real-time application. Then, you can call console_send() to send all console output to a specified function. This is a useful way to get output into -- for example -- a GUI window. Copyright: Copyright (c) 1996-2000 iMatix Corporation License: This is free software; you can redistribute it and/or modify it under the terms of the SFL License Agreement as provided in the file LICENSE.TXT. This software is distributed in the hope that it will be useful, but without any warranty. ------------------------------------------------------------------</Prolog>-*/#ifndef SFLCONS_INCLUDED /* Allow multiple inclusions */#define SFLCONS_INCLUDED/* Type definition for operator redirection function */typedef void (CONSOLE_FCT) (const char *);/* Function prototypes */#ifdef __cplusplusextern "C" {#endifvoid console_send (CONSOLE_FCT *console_fct, Bool echo);void console_enable (void);void console_disable (void);void console_set_mode (int CONSOLE_MODE);int console_capture (const char *filename, char mode);int coputs (const char *string);int coprintf (const char *format, ...);int coputc (int character);#ifdef __cplusplus}#endif/* Constant definitions */enum { CONSOLE_PLAIN, /* Print as requested */ CONSOLE_DATETIME, /* Prefix with date and time */ CONSOLE_TIME /* Prefix with time only */};#endif/* ----------------------------------------------------------------<Prolog>- Name: sflconv.h Title: Conversion functions Package: Standard Function Library (SFL) Written: 1995/12/17 iMatix SFL project team <sfl@imatix.com> Revised: 1998/10/19 Synopsis: These functions provide conversion between a set of datatypes (dates, times, numbers, Booleans) and external strings that represent the values. The objective is to format datatypes for display or printing, and to validate and convert strings supplied by the user. Conversion is controlled by a set of options specific to each datatype. Additionally, dates and times may be formatted using picture strings. The functions were written for use in an interactive 'forms' environment. Copyright: Copyright (c) 1996-2000 iMatix Corporation License: This is free software; you can redistribute it and/or modify it under the terms of the SFL License Agreement as provided in the file LICENSE.TXT. This software is distributed in the hope that it will be useful, but without any warranty. ------------------------------------------------------------------</Prolog>-*/#ifndef SFLCONV_INCLUDED /* Allow multiple inclusions */#define SFLCONV_INCLUDED#ifdef __cplusplusextern "C" {#endifchar *conv_number_str (const char *number, int flags, char point, int decimals, int decimal_format, int width, int sign_format);char *conv_str_number (const char *string, int flags, char point, int decimals, int decimal_format, int width);char *conv_date_str (long date, int flags, int format, int order, char datesep, int width);long conv_str_date (const char *string, int flags, int format, int order);int conv_str_day (const char *day_name);char *conv_time_str (long time, int flags, char timesep, int width);long conv_str_time (const char *string);char *conv_bool_str (Bool boolean, int format);int conv_str_bool (const char *string);char *conv_time_pict (long time, const char *picture);char *conv_date_pict (long date, const char *picture);/** Not Yet Implemented **/char *conv_float_str (double number, int flags, int sign_format, char point, int decimals, int decimal_format, int width /* Srcdoc: IGNORE */ );/** Not Yet Implemented **/double conv_str_float (char *string, int flags, int sign_format, char point, int decimals, int decimal_format /* Srcdoc: IGNORE */ );#ifdef __cplusplus}#endif#define FORMAT_MAX 80 /* Max. size of formatted field */#define CONV_MAX_DECS 100 /* Up to 100 decimal positions *//* Global variables for error reporting */extern int conv_reason; /* Reason for last conversion error */ /* 0 = okay; >0 = error */extern char *conv_reason_text []; /* Array of error messages 1..n */ /* Index using conv_reason *//* Possible values for conv_reason */#define CONV_NO_ERRORS 0 /* No errors */#define CONV_ERR_INVALID_INPUT 1 /* Unrecognised char in input */#define CONV_ERR_OUT_OF_RANGE 2 /* Value out of valid range *//* conv_str_bool () */#define CONV_ERR_NOT_BOOLEAN 3 /* Not a yes/no or true/false value */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -