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

📄 ws.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.   */ /* * * ws.h * * Author: Markku Rossi <mtr@iki.fi> * * Copyright (c) 1999-2000 WAPIT OY LTD. *		 All rights reserved. * * Public header file for the WMLScript compiler library. * * The compiler is written for WMLScript version 1.1. * */#ifndef WS_H#define WS_H#include "wsutf8.h"/********************* Creating and destroying compiler *****************//* A callback function of this type is called to output compiler's   diagnostic, error, and warning messages.  The argument `data' has   `len' bytes of data that should be output somehow to user.  The   argument `context' is the user-specified context data for the   callback function. */typedef void (*WsIOProc)(const char *data, size_t len, void *context);/* A callback function of this type is called for each `use meta name'   and `use meta http equiv' pragma, found from the current   compilation unit.  The arguments `property_name', `content', and   `scheme' are the meta-body arguments of the pragma.  They can be   manipulated with the functions of the `wsutf8.h' module.  The   argument `scheme' can have the value NULL if the pragma did not   specify it.  The string arguments belong to the WMLScript compiler   and you should not modify or free them.  The argument `context' is   the user-specified context data for the callback function. */typedef void (*WsPragmaMetaProc)(const WsUtf8String *property_name,                                 const WsUtf8String *content,                                 const WsUtf8String *scheme,                                 void *context);/* Parameters for a WMLScript copiler. */struct WsCompilerParamsRec{    /* Features. */    /* Store string constants in ISO-8859/1 (ISO latin1) format.  The       default format is UTF-8.  This option makes a bit smaller       byte-code files but it loses information for non-latin1       languages. */    unsigned int use_latin1_strings : 1;    /* Warning flags. */    /* Warn if a standard library function is called with mismatching       argument types. */    unsigned int warn_stdlib_type_mismatch : 1;    /* Optimization flags. */    /* Do not perform constant folding. */    unsigned int no_opt_constant_folding : 1;    /* Do not sort byte-code functions by their usage counts. */    unsigned int no_opt_sort_bc_functions : 1;    /* Do not perform peephole optimization. */    unsigned int no_opt_peephole : 1;    /* Do not optimize jumps to jump instructions to jump directly to       the target label of the next instruction. */    unsigned int no_opt_jumps_to_jumps : 1;    /* Do not optimize jumps to the next instruction. */    unsigned int no_opt_jumps_to_next_instruction : 1;    /* Do not remove unreachable code. */    unsigned int no_opt_dead_code : 1;    /* Do not remove useless conversions */    unsigned int no_opt_conv : 1;    /* Perform expensive optimizations which require liveness       analyzation of the local variables. */    unsigned int opt_analyze_variable_liveness : 1;    /* Output flags. */    /* Print verbose progress messages. */    unsigned int verbose : 1;    /* Print symbolic assembler to the stdout. */    unsigned int print_symbolic_assembler : 1;    /* Disassemble the resulting byte-code instructions. */    unsigned int print_assembler : 1;    /* Function pointers to receive standard output and error messages.       If these are unset, the outputs are directed to the system's       standard output and error streams. */    /* Standard output. */    WsIOProc stdout_cb;    void *stdout_cb_context;    /* Standard error. */    WsIOProc stderr_cb;    void *stderr_cb_context;    /* A callback function which is called for each `use meta name'       pragma, found from the current compilation unit. */    WsPragmaMetaProc meta_name_cb;    void *meta_name_cb_context;    /* A callback function which is called for each `use meta http       equiv' pragma, found from the current compilation unit. */    WsPragmaMetaProc meta_http_equiv_cb;    void *meta_http_equiv_cb_context;};typedef struct WsCompilerParamsRec WsCompilerParams;/* A compiler handle. */typedef struct WsCompilerRec *WsCompilerPtr;/* Create a new WMLScript compiler.  The argument `params' specifies   initialization parameters for the compiler.  If the argument   `params' is NULL or any of its fiels have value 0 or NULL, the   default values will be used for those parameters.  The function   takes a copy of the value of the `params' argument.  You can free   it after this call.  The function returns NULL if the operation   fails (out of memory). */WsCompilerPtr ws_create(WsCompilerParams *params);/* Destroy the WMLScript compiler `compiler' and free all resources it   has allocated. */void ws_destroy(WsCompilerPtr compiler);/********************* Compiling WMLScript ******************************//* Returns codes for the compiler functions. */typedef enum{    /* Successful termination */    WS_OK,    /* The compiler ran out of memory. */    WS_ERROR_OUT_OF_MEMORY,    /* The input was not syntactically correct. */    WS_ERROR_SYNTAX,    /* The input was not semantically correct. */    WS_ERROR_SEMANTIC,    /* IO error. */    WS_ERROR_IO,    /* A generic `catch-all' error code.  This should not be used.  More       descriptive error messages should be generated instead. */    WS_ERROR} WsResult;/* Compile the WMLScript input file `input' with the compiler   `compiler' and save the generated byte-code output to the file   `output'.  The argument `input_name' is the name of the input file   `input'.  It is used in error messages. The function returns a   success code that describes the result of the compilation.  The   output file `output' is modified only if the result code is   `WS_OK'. */WsResult ws_compile_file(WsCompilerPtr compiler, const char *input_name,                         FILE *input, FILE *output);/* Compile the `input_len' bytes of WMLScript data in `input' with the   compiler `compiler'.  The data is assumed to be in the ISO-8859/1   (ISO latin1) format.  The resulting byte-code is returned in   `output_return' and its length is returned in `output_len_return'.   The argument `input_name' is the name of the input data   `input_data'.  It is used in error messages.  The function returns   a success code that describes the result of the compilation.  The   output in `output_return' is valid only if the result code is   `WS_OK'.  The byte-code, returned in `output_return', must be freed   with the ws_free_byte_code() function after it is not needed   anymore.  It is a fatal error to free it with any other function,   like free(). */WsResult ws_compile_data(WsCompilerPtr compiler, const char *input_name,                         const unsigned char *input, size_t input_len,                         unsigned char **output_return,                         size_t *output_len_return);/* Free the byte-code buffer `byte_code', returned by   ws_compiler_data() function.  The byte-code `byte_code' must not be   used after this function has been called. */void ws_free_byte_code(unsigned char *byte_code);/* Convert the result code `result' into human readable 7 bit ASCII   string. */const char *ws_result_to_string(WsResult result);#endif /* not WS_H */

⌨️ 快捷键说明

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