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

📄 decompile.h

📁 The Kannel Open Source WAP and SMS gateway works as both an SMS gateway, for implementing keyword b
💻 H
字号:
/* ====================================================================  * The Kannel Software License, Version 1.0  *  * Copyright (c) 2001-2004 Kannel Group   * Copyright (c) 1998-2001 WapIT Ltd.    * All rights reserved.  *  * Redistribution and use in source and binary forms, with or without  * modification, are permitted provided that the following conditions  * are met:  *  * 1. Redistributions of source code must retain the above copyright  *    notice, this list of conditions and the following disclaimer.  *  * 2. Redistributions in binary form must reproduce the above copyright  *    notice, this list of conditions and the following disclaimer in  *    the documentation and/or other materials provided with the  *    distribution.  *  * 3. The end-user documentation included with the redistribution,  *    if any, must include the following acknowledgment:  *       "This product includes software developed by the  *        Kannel Group (http://www.kannel.org/)."  *    Alternately, this acknowledgment may appear in the software itself,  *    if and wherever such third-party acknowledgments normally appear.  *  * 4. The names "Kannel" and "Kannel Group" must not be used to  *    endorse or promote products derived from this software without  *    prior written permission. For written permission, please   *    contact org@kannel.org.  *  * 5. Products derived from this software may not be called "Kannel",  *    nor may "Kannel" appear in their name, without prior written  *    permission of the Kannel Group.  *  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE  * DISCLAIMED.  IN NO EVENT SHALL THE KANNEL GROUP OR ITS CONTRIBUTORS  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,   * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT   * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR   * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,   * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE   * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,   * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  * ====================================================================  *  * This software consists of voluntary contributions made by many  * individuals on behalf of the Kannel Group.  For more information on   * the Kannel Group, please see <http://www.kannel.org/>.  *  * Portions of this software are based upon software originally written at   * WapIT Ltd., Helsinki, Finland for the Kannel project.   */ /* * decompile.h - Declarations and types used by decompile.c * * Author: Chris Wulff, Vanteon (cwulff@vanteon.com) * */#ifndef DECOMPILE_H_INCLUDED#define DECOMPILE_H_INCLUDED/* Global Tags */#define TAG_SWITCH_PAGE 0x00#define TAG_END         0x01#define TAG_ENTITY      0x02#define TAG_STR_I       0x03#define TAG_LITERAL     0x04#define TAG_EXT_I_0     0x40#define TAG_EXT_I_1     0x41#define TAG_EXT_I_2     0x42#define TAG_PI          0x43#define TAG_LITERAL_C   0x44#define TAG_EXT_T_0     0x80#define TAG_EXT_T_1     0x81#define TAG_EXT_T_2     0x82#define TAG_STR_T       0x83#define TAG_LITERAL_A   0x84#define TAG_EXT_0       0xc0#define TAG_EXT_1       0xc1#define TAG_EXT_2       0xc2#define TAG_OPAQUE      0xc3#define TAG_LITERAL_AC  0xc4/* Codepage tag masks */#define CODEPAGE_TAG_MASK        ((WBXML_TAG) 0x3f)#define CODEPAGE_TAG_HAS_CONTENT ((WBXML_TAG) 0x40)#define CODEPAGE_TAG_HAS_ATTRS   ((WBXML_TAG) 0x80)/* Sizes */#define SWITCHPAGE_SIZE 2/* Codepage Tag Types */typedef enum tagCP_TYPES{	CP_TAG_TAG,	CP_TAG_ATTRSTART,	CP_TAG_ATTRVALUE} CP_TAG_TYPE;/* Datatypes */typedef int               BOOL;#define FALSE 0#define TRUE 1typedef unsigned char     WBXML;typedef WBXML*            P_WBXML;typedef P_WBXML*          PP_WBXML;typedef unsigned char     WBXML_TAG;typedef WBXML_TAG*        P_WBXML_TAG;typedef unsigned char     WBXML_CODEPAGE;typedef unsigned long     WBXML_LENGTH;typedef enum{	NODE_CODEPAGE_TAG,	NODE_CODEPAGE_LITERAL_TAG,	NODE_ATTRSTART,	NODE_ATTRSTART_LITERAL,	NODE_ATTRVALUE,	NODE_ATTREND,	NODE_STRING,	NODE_DTD_TYPE,	NODE_STRING_TABLE,	NODE_VARIABLE_STRING,	NODE_VARIABLE_INDEX} WBXML_NODE_TYPE;typedef struct tagWBXML_NODE{	void*           m_prev;   /* (P_WBXML_NODE) the previous sibling */	void*           m_next;   /* (P_WBXML_NODE) the next sibling */	void*           m_child;  /* (P_WBXML_NODE) the first child */	void*           m_parent; /* (P_WBXML_NODE) the parent */	WBXML_NODE_TYPE m_type;   /* type of this node */	WBXML_CODEPAGE  m_page;   /* the codepage for this node */	void*           m_data;   /* type specific node data */} WBXML_NODE;typedef WBXML_NODE* P_WBXML_NODE;typedef enum{	VAR_ESCAPED,	VAR_UNESCAPED,	VAR_UNCHANGED} WBXML_VARIABLE_TYPE;typedef unsigned char       WBXML_U_INT8;typedef WBXML_U_INT8*       P_WBXML_U_INT8;#define MAX_MB_U_INT32_BYTES 4typedef unsigned char       WBXML_MB_U_INT32[MAX_MB_U_INT32_BYTES];typedef WBXML_MB_U_INT32*   P_WBXML_MB_U_INT32;extern const WBXML_MB_U_INT32 ZERO_WBXML_MB_U_INT32;typedef WBXML_MB_U_INT32    WBXML_STRING_INDEX;typedef WBXML_STRING_INDEX* P_WBXML_STRING_INDEX;typedef unsigned char*      WBXML_BYTES;typedef WBXML_BYTES*        P_WBXML_BYTES;typedef WBXML_MB_U_INT32 WBXML_DTD_TYPE;typedef struct tagDTD_NODE_DATA{	WBXML_DTD_TYPE   m_dtdnum; /* DTD number */	WBXML_MB_U_INT32 m_index;  /* DTD string table index (for DTD# 0) */} DTD_NODE_DATA;typedef struct tagWBXML_INFO{  P_WBXML        m_start;   /* Beginning of the binary buffer */  P_WBXML        m_curpos;  /* Current binary buffer position */  WBXML_LENGTH   m_length;  /* Length of the binary data */  P_WBXML_NODE   m_tree;    /* WBXML parse tree */  P_WBXML_NODE   m_curnode; /* current parse tree node */  WBXML_CODEPAGE m_curpage; /* the current codepage */} WBXML_INFO;typedef WBXML_INFO*         P_WBXML_INFO;typedef struct tagWBXML_STRING_TABLE{  WBXML_MB_U_INT32 m_length;  WBXML_BYTES      m_strings;} WBXML_STRING_TABLE;typedef WBXML_STRING_TABLE* P_WBXML_STRING_TABLE;typedef enum tagWBXML_PARSE_ERROR{  ERR_END_OF_DATA,  ERR_INTERNAL_BAD_PARAM,  ERR_TAG_NOT_FOUND,  ERR_FILE_NOT_FOUND,  ERR_FILE_NOT_READ,  ERR_NOT_ENOUGH_MEMORY} WBXML_PARSE_ERROR;typedef enum tagWBXML_PARSE_WARNING{  WARN_FUTURE_EXPANSION_EXT_0,  WARN_FUTURE_EXPANSION_EXT_1,  WARN_FUTURE_EXPANSION_EXT_2} WBXML_PARSE_WARNING;typedef struct tagDTD_TYPE_LIST{	long  m_id;	char* m_name;} DTD_TYPE_LIST;typedef struct tagCODEPAGE_TAG_NAME_LIST{	long           m_dtd_id;	char*          m_name;	WBXML_CODEPAGE m_page;	WBXML_TAG      m_tag;} CODEPAGE_TAG_NAME_LIST;typedef CODEPAGE_TAG_NAME_LIST* P_CODEPAGE_TAG_NAME_LIST;typedef struct tagCODEPAGE_ATTRSTART_NAME_LIST{	long           m_dtd_id;	char*          m_name;	char*          m_valueprefix;	WBXML_CODEPAGE m_page;	WBXML_TAG      m_tag;} CODEPAGE_ATTRSTART_NAME_LIST;typedef CODEPAGE_ATTRSTART_NAME_LIST* P_CODEPAGE_ATTRSTART_NAME_LIST;typedef struct tagCODEPAGE_ATTRVALUE_NAME_LIST{	long           m_dtd_id;	char*          m_name;	WBXML_CODEPAGE m_page;	WBXML_TAG      m_tag;} CODEPAGE_ATTRVALUE_NAME_LIST;typedef CODEPAGE_ATTRVALUE_NAME_LIST* P_CODEPAGE_ATTRVALUE_NAME_LIST;/* Flow Control Prototypes */void Message(char* msg);void ParseError(WBXML_PARSE_ERROR error);void ParseWarning(WBXML_PARSE_WARNING warning);WBXML_LENGTH BytesLeft(P_WBXML_INFO buffer);BOOL IsTag(P_WBXML_INFO buffer, WBXML_TAG tag);BOOL IsCodepageTag(P_WBXML_INFO buffer, CP_TAG_TYPE type);BOOL Is_attrValue  (P_WBXML_INFO buffer);BOOL Is_extension  (P_WBXML_INFO buffer);BOOL Is_string     (P_WBXML_INFO buffer);BOOL Is_switchPage (P_WBXML_INFO buffer);BOOL Is_inline     (P_WBXML_INFO buffer);BOOL Is_tableref   (P_WBXML_INFO buffer);BOOL Is_entity     (P_WBXML_INFO buffer);BOOL Is_pi         (P_WBXML_INFO buffer);BOOL Is_opaque     (P_WBXML_INFO buffer);BOOL Is_zero       (P_WBXML_INFO buffer);/* Basic Type Decoder Prototypes */void Read_u_int8     (P_WBXML_INFO buffer, P_WBXML_U_INT8 result);void Read_mb_u_int32 (P_WBXML_INFO buffer, P_WBXML_MB_U_INT32 result);void Read_bytes      (P_WBXML_INFO buffer, WBXML_LENGTH length, P_WBXML_BYTES result);void ReadFixedTag    (P_WBXML_INFO buffer, WBXML_TAG tag);WBXML_TAG ReadCodepageTag (P_WBXML_INFO buffer, CP_TAG_TYPE type);/* Basic Type Conversion Prototypes */long mb_u_int32_to_long(P_WBXML_MB_U_INT32 value);/* Document Structure Decoder Prototypes */void Read_start      (P_WBXML_INFO buffer);void Read_strtbl     (P_WBXML_INFO buffer);void Read_body       (P_WBXML_INFO buffer);void Read_element    (P_WBXML_INFO buffer);void Read_content    (P_WBXML_INFO buffer);WBXML_TAG Read_stag  (P_WBXML_INFO buffer);void Read_attribute  (P_WBXML_INFO buffer);void Read_attrStart  (P_WBXML_INFO buffer);void Read_attrValue  (P_WBXML_INFO buffer);void Read_extension  (P_WBXML_INFO buffer);void Read_string     (P_WBXML_INFO buffer);void Read_switchPage (P_WBXML_INFO buffer);void Read_inline     (P_WBXML_INFO buffer);void Read_tableref   (P_WBXML_INFO buffer);void Read_entity     (P_WBXML_INFO buffer);void Read_entcode    (P_WBXML_INFO buffer);void Read_pi         (P_WBXML_INFO buffer);void Read_opaque     (P_WBXML_INFO buffer);void Read_version    (P_WBXML_INFO buffer);void Read_publicid   (P_WBXML_INFO buffer);void Read_charset    (P_WBXML_INFO buffer);void Read_termstr    (P_WBXML_INFO buffer);void Read_termstr_rtn(P_WBXML_INFO buffer, char** result);void Read_index      (P_WBXML_INFO buffer, P_WBXML_MB_U_INT32 result);void Read_length     (P_WBXML_INFO buffer, P_WBXML_MB_U_INT32 result);void Read_zero       (P_WBXML_INFO buffer);void Read_pageindex  (P_WBXML_INFO buffer, P_WBXML_U_INT8 result);#endif /* _DECOMPILE_H_INCLUDED_ */

⌨️ 快捷键说明

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