📄 decompile.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 + -