📄 sfl.h
字号:
# define NAMEFOLD FALSE
# define MSDOS_FILESYSTEM /* MS-DOS derivative */
#else
# error "No definitions for PATH constants"
#endif
/*- Capability definitions --------------------------------------------------*/
/*
* Defines zero or more of these symbols, for use in any non-portable
* code:
*
* DOES_SOCKETS We can use (at least some) BSD socket functions
* DOES_UID We can use (at least some) uid access functions
* DOES_SNPRINTF Supports snprintf and vsnprintf functions
* 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 __cplusplus
extern "C" {
#endif
int 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 __cplusplus
extern "C" {
#endif
word 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 __cplusplus
extern "C" {
#endif
void 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 __cplusplus
extern "C" {
#endif
char *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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -