⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 otlayout.h

📁 下载来的一个看图软件的源代码
💻 H
字号:
#ifndef __OT_LAYOUT_H__#define __OT_LAYOUT_H__#include "otlconf.h"OTL_BEGIN_HEADER /************************************************************************/ /************************************************************************/ /*****                                                              *****/ /*****                       BASE DATA TYPES                        *****/ /*****                                                              *****/ /************************************************************************/ /************************************************************************/  typedef unsigned char     OTL_Byte;  typedef const OTL_Byte*   OTL_Bytes;  typedef int               OTL_Error;  typedef void*             OTL_Pointer;  typedef int               OTL_Int;  typedef unsigned int      OTL_UInt;  typedef long              OTL_Long;  typedef unsigned long     OTL_ULong;  typedef short             OTL_Int16;  typedef unsigned short    OTL_UInt16;#if OTL_SIZEOF_INT == 4  typedef int               OTL_Int32;  typedef unsigned int      OTL_UInt32;#elif OTL_SIZEOF_LONG == 4  typedef long              OTL_Int32;  typedef unsigned long     OTL_UInt32;#else#  error "no 32-bits type found"#endif  typedef OTL_UInt32        OTL_Tag; /************************************************************************/ /************************************************************************/ /*****                                                              *****/ /*****                       ERROR CODES                            *****/ /*****                                                              *****/ /************************************************************************/ /************************************************************************/  typedef enum  {    OTL_Err_Ok = 0,    OTL_Err_InvalidArgument,    OTL_Err_InvalidFormat,    OTL_Err_InvalidOffset,    OTL_Err_Max  } OTL_Error; /************************************************************************/ /************************************************************************/ /*****                                                              *****/ /*****                     MEMORY MANAGEMENT                        *****/ /*****                                                              *****/ /************************************************************************/ /************************************************************************/  typedef OTL_Pointer  (*OTL_AllocFunc)( OTL_ULong    size,                                         OTL_Pointer  data );  typedef OTL_Pointer  (*OTL_ReallocFunc)( OTL_Pointer   block,                                           OTL_ULong     size,                                           OTL_Pointer   data );  typedef void         (*OTL_FreeFunc)( OTL_Pointer  block,                                        OTL_Pointer  data );  typedef struct OTL_MemoryRec_  {    OTL_Pointer      mem_data;    OTL_AllocFunc    mem_alloc;    OTL_ReallocFunc  mem_realloc;    OTL_FreeFunc     mem_free;  } OTL_MemoryRec, *OTL_Memory; /************************************************************************/ /************************************************************************/ /*****                                                              *****/ /*****                        ENUMERATIONS                          *****/ /*****                                                              *****/ /************************************************************************/ /************************************************************************//* re-define OTL_MAKE_TAG to something different if you're not *//* using an ASCII-based character set (Vaxes anyone ?)         */#ifndef  OTL_MAKE_TAG#define  OTL_MAKE_TAG(c1,c2,c3,c4)         \           ( ( (OTL_UInt32)(c1) << 24 ) |  \               (OTL_UInt32)(c2) << 16 ) |  \               (OTL_UInt32)(c3) <<  8 ) |  \               (OTL_UInt32)(c4)         )#endif  typedef enum OTL_ScriptTag_  {    OTL_SCRIPT_NONE = 0,#define OTL_SCRIPT_TAG(c1,c2,c3,c4,s,n)  OTL_SCRIPT_TAG_ ## n = OTL_MAKE_TAG(c1,c2,c3,c4),#include "otltags.h"    OTL_SCRIPT_MAX  } OTL_ScriptTag;  typedef enum OTL_LangTag_  {    OTL_LANG_DEFAULT = 0,#define OTL_LANG_TAG(c1,c2,c3,c4,s,n)  OTL_LANG_TAG_ ## n = OTL_MAKE_TAG(c1,c2,c3,c4),#include "otltags.h"    OTL_LANG_MAX  } OTL_LangTag; /************************************************************************/ /************************************************************************/ /*****                                                              *****/ /*****                       MEMORY READS                           *****/ /*****                                                              *****/ /************************************************************************/ /************************************************************************/#define  OTL_PEEK_USHORT(p)  ( ((OTL_UInt)((p)[0]) << 8) |  \                               ((OTL_UInt)((p)[1])     ) )#define  OTL_PEEK_ULONG(p)   ( ((OTL_UInt32)((p)[0]) << 24) |  \                               ((OTL_UInt32)((p)[1]) << 16) |  \                               ((OTL_UInt32)((p)[2]) <<  8) |  \                               ((OTL_UInt32)((p)[3])      ) )#define  OTL_PEEK_SHORT(p)     ((OTL_Int16)OTL_PEEK_USHORT(p))#define  OTL_PEEK_LONG(p)      ((OTL_Int32)OTL_PEEK_ULONG(p))#define  OTL_NEXT_USHORT(p)  ( (p) += 2, OTL_PEEK_USHORT((p)-2) )#define  OTL_NEXT_ULONG(p)   ( (p) += 4, OTL_PEEK_ULONG((p)-4) )#define  OTL_NEXT_SHORT(p)   ((OTL_Int16)OTL_NEXT_USHORT(p))#define  OTL_NEXT_LONG(p)    ((OTL_Int32)OTL_NEXT_ULONG(p)) /************************************************************************/ /************************************************************************/ /*****                                                              *****/ /*****                        VALIDATION                            *****/ /*****                                                              *****/ /************************************************************************/ /************************************************************************/  typedef struct OTL_ValidatorRec_*  OTL_Validator;  typedef struct OTL_ValidatorRec_  {    OTL_Bytes    limit;    OTL_Bytes    base;    OTL_Error    error;    OTL_jmp_buf  jump_buffer;  } OTL_ValidatorRec;  typedef void  (*OTL_ValidateFunc)( OTL_Bytes  table,                                     OTL_Valid  valid );  OTL_API( void )  otl_validator_error( OTL_Validator  validator,                       OTL_Error      error );#define  OTL_INVALID(e)  otl_validator_error( valid, e )#define  OTL_INVALID_TOO_SHORT  OTL_INVALID( OTL_Err_InvalidOffset )#define  OTL_INVALID_DATA       OTL_INVALID( OTL_Err_InvalidFormat )#define  OTL_CHECK(_count)   OTL_BEGIN_STMNT                       \                               if ( p + (_count) > valid->limit )  \                                 OTL_INVALID_TOO_SHORT;            \                             OTL_END_STMNT /* */OTL_END_HEADER#endif /* __OPENTYPE_LAYOUT_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -