?? uemf.h
字號:
#ifdef UNICODE
#define gmain wmain
#define gasctime _wasctime
#define gsprintf swprintf
#define gprintf wprintf
#define gfprintf fwprintf
#define gsscanf swscanf
#define gvsprintf vswprintf
#define gstrcpy wcscpy
#define gstrncpy wcsncpy
#define gstrncat wcsncat
#define gstrlen wcslen
#define gstrcat wcscat
#define gstrcmp wcscmp
#define gstrncmp wcsncmp
#define gstricmp wcsicmp
#define gstrchr wcschr
#define gstrrchr wcsrchr
#define gstrtok wcstok
#define gstrnset wcsnset
#define gstrrchr wcsrchr
#define gstrstr wcsstr
#define gstrtol wcstol
#define gfopen _wfopen
#define gopen _wopen
#define gclose close
#define gcreat _wcreat
#define gfgets fgetws
#define gfputs fputws
#define gfscanf fwscanf
#define ggets _getws
#define glseek lseek
#define gunlink _wunlink
#define gread read
#define grename _wrename
#define gwrite write
#define gtmpnam _wtmpnam
#define gtempnam _wtempnam
#define gfindfirst _wfindfirst
#define gfinddata_t _wfinddata_t
#define gfindnext _wfindnext
#define gfindclose _findclose
#define gstat _wstat
#define gaccess _waccess
#define gchmod _wchmod
typedef struct _stat gstat_t;
#define gmkdir _wmkdir
#define gchdir _wchdir
#define grmdir _wrmdir
#define ggetcwd _wgetcwd
#define gtolower towlower
#define gtoupper towupper
#ifdef CE
#define gisspace isspace
#define gisdigit isdigit
#define gisxdigit isxdigit
#define gisupper isupper
#define gislower islower
#define gisprint isprint
#else
#define gremove _wremove
#define gisspace iswspace
#define gisdigit iswdigit
#define gisxdigit iswxdigit
#define gisupper iswupper
#define gislower iswlower
#endif /* if CE */
#define gisalnum iswalnum
#define gisalpha iswalpha
#define gatoi(s) wcstol(s, NULL, 10)
#define gctime _wctime
#define ggetenv _wgetenv
#define gexecvp _wexecvp
#else /* ! UNICODE */
#ifdef VXWORKS
#define gchdir vxchdir
#define gmkdir vxmkdir
#define grmdir vxrmdir
#elif (defined (LYNX) || defined (LINUX) || defined (MACOSX) || defined (SOLARIS))
#define gchdir chdir
#define gmkdir(s) mkdir(s,0755)
#define grmdir rmdir
#else
#define gchdir chdir
#define gmkdir mkdir
#define grmdir rmdir
#endif /* VXWORKS #elif LYNX || LINUX || MACOSX || SOLARIS*/
#define gclose close
#define gclosedir closedir
#define gchmod chmod
#define ggetcwd getcwd
#define glseek lseek
#define gloadModule loadModule
#define gopen open
#define gopendir opendir
#define gread read
#define greaddir readdir
#define grename rename
#define gstat stat
#define gunlink unlink
#define gwrite write
#define gasctime asctime
#define gsprintf sprintf
#define gprintf printf
#define gfprintf fprintf
#define gsscanf sscanf
#define gvsprintf vsprintf
#define gstrcpy strcpy
#define gstrncpy strncpy
#define gstrncat strncat
#define gstrlen strlen
#define gstrcat strcat
#define gstrcmp strcmp
#define gstrncmp strncmp
#define gstricmp strcmpci
#define gstrchr strchr
#define gstrrchr strrchr
#define gstrtok strtok
#define gstrnset strnset
#define gstrrchr strrchr
#define gstrstr strstr
#define gstrtol strtol
#define gfopen fopen
#define gcreat creat
#define gfgets fgets
#define gfputs fputs
#define gfscanf fscanf
#define ggets gets
#define gtmpnam tmpnam
#define gtempnam tempnam
#define gfindfirst _findfirst
#define gfinddata_t _finddata_t
#define gfindnext _findnext
#define gfindclose _findclose
#define gaccess access
typedef struct stat gstat_t;
#define gremove remove
#define gtolower tolower
#define gtoupper toupper
#define gisspace isspace
#define gisdigit isdigit
#define gisxdigit isxdigit
#define gisalnum isalnum
#define gisalpha isalpha
#define gisupper isupper
#define gislower islower
#define gatoi atoi
#define gctime ctime
#define ggetenv getenv
#define gexecvp execvp
#ifndef VXWORKS
#define gmain main
#endif /* ! VXWORKS */
#ifdef VXWORKS
#define fcntl(a, b, c)
#endif /* VXWORKS */
#endif /* ! UNICODE */
/*
* Include inmem.h here because it redefines many of the file access fucntions.
* Otherwise there would be lots more #if-#elif-#else-#endif ugliness.
*/
#ifdef INMEM
#include "lf/inmem.h"
#endif
/********************************** Defines ***********************************/
#ifndef FNAMESIZE
#define FNAMESIZE 254 /* Max length of file names */
#endif /* FNAMESIZE */
#define E_MAX_ERROR 4096
#define URL_MAX 4096
/*
* Error types
*/
#define E_ASSERT 0x1 /* Assertion error */
#define E_LOG 0x2 /* Log error to log file */
#define E_USER 0x3 /* Error that must be displayed */
#define E_L T(__FILE__), __LINE__
#define E_ARGS_DEC char_t *file, int line
#define E_ARGS file, line
#if (defined (ASSERT) || defined (ASSERT_CE))
#define a_assert(C) if (C) ; else error(E_L, E_ASSERT, T("%s"), T(#C))
#else
#define a_assert(C) if (1) ; else
#endif /* ASSERT || ASSERT_CE */
/******************************************************************************/
/* VALUE */
/******************************************************************************/
/*
* These values are not prefixed so as to aid code readability
*/
typedef enum {
undefined = 0,
byteint = 1,
shortint = 2,
integer = 3,
hex = 4,
percent = 5,
octal = 6,
big = 7,
flag = 8,
floating = 9,
string = 10,
bytes = 11,
symbol = 12,
errmsg = 13
} vtype_t;
#ifndef __NO_PACK
#pragma pack(2)
#endif /* _NO_PACK */
typedef struct {
union {
char flag;
char byteint;
short shortint;
char percent;
long integer;
long hex;
long octal;
long big[2];
#ifdef FLOATING_POINT_SUPPORT
double floating;
#endif /* FLOATING_POINT_SUPPORT */
char_t *string;
char *bytes;
char_t *errmsg;
void *symbol;
} value;
vtype_t type;
unsigned int valid : 8;
unsigned int allocated : 8; /* String was balloced */
} value_t;
#ifndef __NO_PACK
#pragma pack()
#endif /* __NO_PACK */
/*
* Allocation flags
*/
#define VALUE_ALLOCATE 0x1
#define value_numeric(t) (t >= byteint && t <= big)
#define value_str(t) (t >= string && t <= bytes)
#define value_ok(t) (t > undefined && t <= symbol)
#define VALUE_VALID { {0}, integer, 1 }
#define VALUE_INVALID { {0}, undefined, 0 }
/******************************************************************************/
/*
* A ring queue allows maximum utilization of memory for data storage and is
* ideal for input/output buffering. This module provides a highly effecient
* implementation and a vehicle for dynamic strings.
*
* WARNING: This is a public implementation and callers have full access to
* the queue structure and pointers. Change this module very carefully.
*
* This module follows the open/close model.
*
* Operation of a ringq where rq is a pointer to a ringq :
*
* rq->buflen contains the size of the buffer.
* rq->buf will point to the start of the buffer.
* rq->servp will point to the first (un-consumed) data byte.
* rq->endp will point to the next free location to which new data is added
* rq->endbuf will point to one past the end of the buffer.
*
* Eg. If the ringq contains the data "abcdef", it might look like :
*
* +-------------------------------------------------------------------+
* | | | | | | | | a | b | c | d | e | f | | | | |
* +-------------------------------------------------------------------+
* ^ ^ ^ ^
* | | | |
* rq->buf rq->servp rq->endp rq->enduf
*
* The queue is empty when servp == endp. This means that the queue will hold
* at most rq->buflen -1 bytes. It is the fillers responsibility to ensure
* the ringq is never filled such that servp == endp.
*
* It is the fillers responsibility to "wrap" the endp back to point to
* rq->buf when the pointer steps past the end. Correspondingly it is the
* consumers responsibility to "wrap" the servp when it steps to rq->endbuf.
* The ringqPutc and ringqGetc routines will do this automatically.
*/
/*
* Ring queue buffer structure
*/
typedef struct {
unsigned char *buf; /* Holding buffer for data */
unsigned char *servp; /* Pointer to start of data */
unsigned char *endp; /* Pointer to end of data */
unsigned char *endbuf; /* Pointer to end of buffer */
int buflen; /* Length of ring queue */
int maxsize; /* Maximum size */
int increment; /* Growth increment */
} ringq_t;
/*
* Block allocation (balloc) definitions
*/
#ifdef B_STATS
#ifndef B_L
#define B_L T(__FILE__), __LINE__
#define B_ARGS_DEC char_t *file, int line
#define B_ARGS file, line
#endif /* B_L */
#endif /* B_STATS */
/*
* Block classes are: 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192,
* 16384, 32768, 65536
*/
typedef struct {
union {
void *next; /* Pointer to next in q */
int size; /* Actual requested size */
} u;
int flags; /* Per block allocation flags */
} bType;
#define B_SHIFT 4 /* Convert size to class */
#define B_ROUND ((1 << (B_SHIFT)) - 1)
#define B_MAX_CLASS 13 /* Maximum class number + 1 */
#define B_MALLOCED 0x80000000 /* Block was malloced */
#define B_DEFAULT_MEM (64 * 1024) /* Default memory allocation */
#define B_MAX_FILES (512) /* Maximum number of files */
#define B_FILL_CHAR (0x77) /* Fill byte for buffers */
#define B_FILL_WORD (0x77777777) /* Fill word for buffers */
#define B_MAX_BLOCKS (64 * 1024) /* Maximum allocated blocks */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -