📄 acc_lib.h
字号:
/* ACC -- Automatic Compiler Configuration Copyright (C) 1996-2004 Markus Franz Xaver Johannes Oberhumer All Rights Reserved. This software is a copyrighted work licensed under the terms of the GNU General Public License. Please consult the file "ACC_LICENSE" for details. Markus F.X.J. Oberhumer <markus@oberhumer.com> http://www.oberhumer.com/ */#ifndef __ACC_LIB_H_INCLUDED#define __ACC_LIB_H_INCLUDED 1#if !defined(__ACCLIB_FUNCNAME)# define __ACCLIB_FUNCNAME(f) f#endif#if !defined(ACCLIB_EXTERN)# define ACCLIB_EXTERN(r,f) extern r __ACCLIB_FUNCNAME(f)#endif#if !defined(__ACCLIB_CONST_CAST_RETURN)#if (ACC_CC_GNUC)# define __ACCLIB_CONST_CAST_RETURN(type,var) \ { union { type a; const type b; } u; u.b = (var); return u.a; }#else# define __ACCLIB_CONST_CAST_RETURN(type,var) return (type) (var);#endif#endif#if (ACC_OS_WIN64)# define acclib_handle_t acc_int64l_t# define acclib_uhandle_t acc_uint64l_t#elif (ACC_ARCH_IA32 && ACC_CC_MSC && (_MSC_VER >= 1300)) typedef __w64 long acclib_handle_t; typedef __w64 unsigned long acclib_uhandle_t;# define acclib_handle_t acclib_handle_t# define acclib_uhandle_t acclib_uhandle_t#else# define acclib_handle_t long# define acclib_uhandle_t unsigned long#endif/*************************************************************************// wrap <ctype.h>**************************************************************************/#if 0ACCLIB_EXTERN(int, acc_ascii_digit) (int);ACCLIB_EXTERN(int, acc_ascii_islower) (int);ACCLIB_EXTERN(int, acc_ascii_isupper) (int);ACCLIB_EXTERN(int, acc_ascii_tolower) (int);ACCLIB_EXTERN(int, acc_ascii_toupper) (int);ACCLIB_EXTERN(int, acc_ascii_utolower) (int);ACCLIB_EXTERN(int, acc_ascii_utoupper) (int);#endif#define acc_ascii_isdigit(c) (((unsigned)(c) - 48) < 10)#define acc_ascii_islower(c) (((unsigned)(c) - 97) < 26)#define acc_ascii_isupper(c) (((unsigned)(c) - 65) < 26)#define acc_ascii_tolower(c) ((int)(c) + (acc_ascii_isupper(c) << 5))#define acc_ascii_toupper(c) ((int)(c) - (acc_ascii_islower(c) << 5))#define acc_ascii_utolower(c) acc_ascii_tolower((unsigned char)(c))#define acc_ascii_utoupper(c) acc_ascii_toupper((unsigned char)(c))/*************************************************************************// huge pointer layer**************************************************************************/#ifndef acc_hsize_t#if (ACC_HAVE_MM_HUGE_PTR)# define acc_hsize_t unsigned long# define acc_hvoid_p void __huge *# define acc_hchar_p char __huge *# define acc_hchar_pp char __huge * __huge *# define acc_hbyte_p unsigned char __huge *#else# define acc_hsize_t size_t# define acc_hvoid_p void *# define acc_hchar_p char *# define acc_hchar_pp char **# define acc_hbyte_p unsigned char *#endif#endif#ifndef ACC_FILE_P#define ACC_FILE_P FILE *#endif/* halloc */ACCLIB_EXTERN(acc_hvoid_p, acc_halloc) (acc_hsize_t);ACCLIB_EXTERN(void, acc_hfree) (acc_hvoid_p);/* dos_alloc */#if (ACC_OS_DOS16 || ACC_OS_OS216)ACCLIB_EXTERN(void __far*, acc_dos_alloc) (unsigned long);ACCLIB_EXTERN(int, acc_dos_free) (void __far*);#endif/* string */ACCLIB_EXTERN(int, acc_hmemcmp) (const acc_hvoid_p, const acc_hvoid_p, acc_hsize_t);ACCLIB_EXTERN(acc_hvoid_p, acc_hmemcpy) (acc_hvoid_p, const acc_hvoid_p, acc_hsize_t);ACCLIB_EXTERN(acc_hvoid_p, acc_hmemmove) (acc_hvoid_p, const acc_hvoid_p, acc_hsize_t);ACCLIB_EXTERN(acc_hvoid_p, acc_hmemset) (acc_hvoid_p, int, acc_hsize_t);/* string */ACCLIB_EXTERN(acc_hsize_t, acc_hstrlen) (const acc_hchar_p);ACCLIB_EXTERN(int, acc_hstrcmp) (const acc_hchar_p, const acc_hchar_p);ACCLIB_EXTERN(int, acc_hstrncmp)(const acc_hchar_p, const acc_hchar_p, acc_hsize_t);ACCLIB_EXTERN(int, acc_ascii_hstricmp) (const acc_hchar_p, const acc_hchar_p);ACCLIB_EXTERN(int, acc_ascii_hstrnicmp)(const acc_hchar_p, const acc_hchar_p, acc_hsize_t);ACCLIB_EXTERN(int, acc_ascii_hmemicmp) (const acc_hvoid_p, const acc_hvoid_p, acc_hsize_t);ACCLIB_EXTERN(acc_hchar_p, acc_hstrstr) (const acc_hchar_p, const acc_hchar_p);ACCLIB_EXTERN(acc_hchar_p, acc_ascii_hstristr) (const acc_hchar_p, const acc_hchar_p);ACCLIB_EXTERN(acc_hvoid_p, acc_hmemmem) (const acc_hvoid_p, acc_hsize_t, const acc_hvoid_p, acc_hsize_t);ACCLIB_EXTERN(acc_hvoid_p, acc_ascii_hmemimem) (const acc_hvoid_p, acc_hsize_t, const acc_hvoid_p, acc_hsize_t);ACCLIB_EXTERN(acc_hchar_p, acc_hstrcpy) (acc_hchar_p, const acc_hchar_p);ACCLIB_EXTERN(acc_hchar_p, acc_hstrcat) (acc_hchar_p, const acc_hchar_p);ACCLIB_EXTERN(acc_hsize_t, acc_hstrlcpy) (acc_hchar_p, const acc_hchar_p, acc_hsize_t);ACCLIB_EXTERN(acc_hsize_t, acc_hstrlcat) (acc_hchar_p, const acc_hchar_p, acc_hsize_t);ACCLIB_EXTERN(int, acc_hstrscpy) (acc_hchar_p, const acc_hchar_p, acc_hsize_t);ACCLIB_EXTERN(int, acc_hstrscat) (acc_hchar_p, const acc_hchar_p, acc_hsize_t);ACCLIB_EXTERN(acc_hchar_p, acc_hstrccpy) (acc_hchar_p, const acc_hchar_p, int);ACCLIB_EXTERN(acc_hvoid_p, acc_hmemccpy) (acc_hvoid_p, const acc_hvoid_p, int, acc_hsize_t);ACCLIB_EXTERN(acc_hchar_p, acc_hstrchr) (const acc_hchar_p, int);ACCLIB_EXTERN(acc_hchar_p, acc_hstrrchr) (const acc_hchar_p, int);ACCLIB_EXTERN(acc_hchar_p, acc_ascii_hstrichr) (const acc_hchar_p, int);ACCLIB_EXTERN(acc_hchar_p, acc_ascii_hstrrichr) (const acc_hchar_p, int);ACCLIB_EXTERN(acc_hvoid_p, acc_hmemchr) (const acc_hvoid_p, int, acc_hsize_t);ACCLIB_EXTERN(acc_hvoid_p, acc_hmemrchr) (const acc_hvoid_p, int, acc_hsize_t);ACCLIB_EXTERN(acc_hvoid_p, acc_ascii_hmemichr) (const acc_hvoid_p, int, acc_hsize_t);ACCLIB_EXTERN(acc_hvoid_p, acc_ascii_hmemrichr) (const acc_hvoid_p, int, acc_hsize_t);ACCLIB_EXTERN(acc_hsize_t, acc_hstrspn) (const acc_hchar_p, const acc_hchar_p);ACCLIB_EXTERN(acc_hsize_t, acc_hstrrspn) (const acc_hchar_p, const acc_hchar_p);ACCLIB_EXTERN(acc_hsize_t, acc_hstrcspn) (const acc_hchar_p, const acc_hchar_p);ACCLIB_EXTERN(acc_hsize_t, acc_hstrrcspn) (const acc_hchar_p, const acc_hchar_p);ACCLIB_EXTERN(acc_hchar_p, acc_hstrpbrk) (const acc_hchar_p, const acc_hchar_p);ACCLIB_EXTERN(acc_hchar_p, acc_hstrrpbrk) (const acc_hchar_p, const acc_hchar_p);ACCLIB_EXTERN(acc_hchar_p, acc_hstrsep) (acc_hchar_pp, const acc_hchar_p);ACCLIB_EXTERN(acc_hchar_p, acc_hstrrsep) (acc_hchar_pp, const acc_hchar_p);ACCLIB_EXTERN(acc_hchar_p, acc_ascii_hstrlwr) (acc_hchar_p);ACCLIB_EXTERN(acc_hchar_p, acc_ascii_hstrupr) (acc_hchar_p);ACCLIB_EXTERN(acc_hvoid_p, acc_ascii_hmemlwr) (acc_hvoid_p, acc_hsize_t);ACCLIB_EXTERN(acc_hvoid_p, acc_ascii_hmemupr) (acc_hvoid_p, acc_hsize_t);/* stdio */ACCLIB_EXTERN(acc_hsize_t, acc_hfread) (ACC_FILE_P, acc_hvoid_p, acc_hsize_t);ACCLIB_EXTERN(acc_hsize_t, acc_hfwrite) (ACC_FILE_P, const acc_hvoid_p, acc_hsize_t);/* io */#if (ACC_HAVE_MM_HUGE_PTR)ACCLIB_EXTERN(long, acc_hread) (int, acc_hvoid_p, long);ACCLIB_EXTERN(long, acc_hwrite) (int, const acc_hvoid_p, long);#endifACCLIB_EXTERN(long, acc_safe_hread) (int, acc_hvoid_p, long);ACCLIB_EXTERN(long, acc_safe_hwrite) (int, const acc_hvoid_p, long);/*************************************************************************// wrap filename limits**************************************************************************//* maximum length of full pathname (excl. '\0') */#if !defined(ACC_FN_PATH_MAX)#if (ACC_OS_DOS16 || ACC_OS_WIN16)# define ACC_FN_PATH_MAX 143#elif (ACC_OS_DOS32 || ACC_OS_OS2 || ACC_OS_OS216 || ACC_OS_WIN32 || ACC_OS_WIN64)# define ACC_FN_PATH_MAX 259#elif (ACC_OS_TOS)# define ACC_FN_PATH_MAX 259#endif#endif#if !defined(ACC_FN_PATH_MAX) /* arbitrary limit for acclib implementation */# define ACC_FN_PATH_MAX 1024#endif/* maximum length of a filename (a single path component) (excl. '\0') */#if !defined(ACC_FN_NAME_MAX)#if (ACC_OS_DOS16 || ACC_OS_WIN16)# define ACC_FN_NAME_MAX 12#elif (ACC_OS_TOS && (ACC_CC_PUREC || ACC_CC_TURBOC))# define ACC_FN_NAME_MAX 12#elif (ACC_OS_DOS32 && ACC_CC_GNUC) && defined(__DJGPP__)#elif (ACC_OS_DOS32)# define ACC_FN_NAME_MAX 12#endif#endif#if !defined(ACC_FN_NAME_MAX)# define ACC_FN_NAME_MAX ACC_FN_PATH_MAX#endif#define ACC_FNMATCH_NOESCAPE 1#define ACC_FNMATCH_PATHNAME 2#define ACC_FNMATCH_PATHSTAR 4#define ACC_FNMATCH_PERIOD 8#define ACC_FNMATCH_ASCII_CASEFOLD 16ACCLIB_EXTERN(int, acc_fnmatch) (const acc_hchar_p, const acc_hchar_p, int);/*************************************************************************// wrap <dirent.h>**************************************************************************/#undef __ACCLIB_USE_OPENDIR#if (HAVE_DIRENT_H || ACC_CC_WATCOMC)# define __ACCLIB_USE_OPENDIR 1# if (ACC_OS_DOS32 && defined(__BORLANDC__))# elif (ACC_OS_DOS32 && ACC_CC_GNUC) && defined(__DJGPP__)# elif (ACC_OS_OS2 || ACC_OS_OS216)# elif (ACC_OS_TOS && ACC_CC_GNUC)# elif (ACC_OS_WIN32 && !defined(ACC_HAVE_WINDOWS_H))# elif (ACC_OS_DOS16 || ACC_OS_DOS32 || ACC_OS_OS2 || ACC_OS_OS216 || ACC_OS_TOS || ACC_OS_WIN16 || ACC_OS_WIN32 || ACC_OS_WIN64)# undef __ACCLIB_USE_OPENDIR# endif#endiftypedef struct{#if defined(__ACCLIB_USE_OPENDIR) void *u_dirp; /* private */# if (ACC_CC_WATCOMC) unsigned short f_time; unsigned short f_date; unsigned long f_size;# endif char f_name[ACC_FN_NAME_MAX+1];#elif (ACC_OS_WIN32 || ACC_OS_WIN64) acclib_handle_t u_handle; /* private */ unsigned f_attr; unsigned f_size_low; unsigned f_size_high; char f_name[ACC_FN_NAME_MAX+1];#elif (ACC_OS_DOS16 || ACC_OS_DOS32 || ACC_OS_TOS || ACC_OS_WIN16) char u_dta[21]; /* private */ unsigned char f_attr; unsigned short f_time; unsigned short f_date; unsigned short f_size_low; unsigned short f_size_high; char f_name[ACC_FN_NAME_MAX+1]; char u_dirp; /* private */#else void *u_dirp; /* private */ char f_name[ACC_FN_NAME_MAX+1];#endif} acc_dir_t;#ifndef acc_dir_p#define acc_dir_p acc_dir_t *#endifACCLIB_EXTERN(int, acc_opendir) (acc_dir_p, const char*);ACCLIB_EXTERN(int, acc_readdir) (acc_dir_p);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -