Annotation of embedaddon/php/ext/xmlrpc/libxmlrpc/xmlrpc_private.h, revision 1.1

1.1     ! misho       1: /*
        !             2:   This file is part of libXMLRPC - a C library for xml-encoded function calls.
        !             3: 
        !             4:   Author: Dan Libby (dan@libby.com)
        !             5:   Epinions.com may be contacted at feedback@epinions-inc.com
        !             6: */
        !             7: 
        !             8: /*  
        !             9:   Copyright 2000 Epinions, Inc. 
        !            10: 
        !            11:   Subject to the following 3 conditions, Epinions, Inc.  permits you, free 
        !            12:   of charge, to (a) use, copy, distribute, modify, perform and display this 
        !            13:   software and associated documentation files (the "Software"), and (b) 
        !            14:   permit others to whom the Software is furnished to do so as well.  
        !            15: 
        !            16:   1) The above copyright notice and this permission notice shall be included 
        !            17:   without modification in all copies or substantial portions of the 
        !            18:   Software.  
        !            19: 
        !            20:   2) THE SOFTWARE IS PROVIDED "AS IS", WITHOUT ANY WARRANTY OR CONDITION OF 
        !            21:   ANY KIND, EXPRESS, IMPLIED OR STATUTORY, INCLUDING WITHOUT LIMITATION ANY 
        !            22:   IMPLIED WARRANTIES OF ACCURACY, MERCHANTABILITY, FITNESS FOR A PARTICULAR 
        !            23:   PURPOSE OR NONINFRINGEMENT.  
        !            24: 
        !            25:   3) IN NO EVENT SHALL EPINIONS, INC. BE LIABLE FOR ANY DIRECT, INDIRECT, 
        !            26:   SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT 
        !            27:   OF OR IN CONNECTION WITH THE SOFTWARE (HOWEVER ARISING, INCLUDING 
        !            28:   NEGLIGENCE), EVEN IF EPINIONS, INC.  IS AWARE OF THE POSSIBILITY OF SUCH 
        !            29:   DAMAGES.    
        !            30: 
        !            31: */
        !            32: 
        !            33: /* only non-public things should be in this file.  It is fine for any .c file
        !            34:  * in xmlrpc/src to include it, but users of the public API should never
        !            35:  * include it, and thus *.h files that are part of the public API should
        !            36:  * never include it, or they would break if this file is not present.
        !            37:  */
        !            38: 
        !            39: #ifndef XMLRPC_PRIVATE_ALREADY_INCLUDED
        !            40: /*
        !            41:  * Avoid include redundancy.
        !            42:  */
        !            43: #define XMLRPC_PRIVATE_ALREADY_INCLUDED
        !            44: 
        !            45: #ifdef __cplusplus
        !            46: extern "C" {
        !            47: #endif
        !            48: 
        !            49: 
        !            50: /*----------------------------------------------------------------------------
        !            51:  * xmlrpc_private.h
        !            52:  *
        !            53:  * Purpose:
        !            54:  *   define non-public intra-library routines & data
        !            55:  * Comments:
        !            56:  */
        !            57: 
        !            58: /*----------------------------------------------------------------------------
        !            59:  * Constants
        !            60:  */
        !            61: 
        !            62: 
        !            63: /*----------------------------------------------------------------------------
        !            64:  * Includes
        !            65:  */
        !            66: 
        !            67: /*----------------------------------------------------------------------------
        !            68:  * Structures
        !            69:  */
        !            70:  
        !            71: /* Some of these are typedef'd in xmlrpc.h for public use */
        !            72: 
        !            73: typedef struct _xmlrpc_vector* XMLRPC_VECTOR;
        !            74: 
        !            75: /****s* VALUE/XMLRPC_VALUE
        !            76:  * NAME
        !            77:  *   XMLRPC_VALUE
        !            78:  * NOTES
        !            79:  *   A value of variable data type. The most important object in this API.  :)
        !            80:  *
        !            81:  *  This struct is opaque to callers and should be accessed only via accessor functions.
        !            82:  * SEE ALSO
        !            83:  *   XMLRPC_REQUEST
        !            84:  *   XMLRPC_CreateValueEmpty ()
        !            85:  *   XMLRPC_CleanupValue ()
        !            86:  * SOURCE
        !            87:  */
        !            88: typedef struct _xmlrpc_value {
        !            89:    XMLRPC_VALUE_TYPE type; /* data type of this value                        */
        !            90:    XMLRPC_VECTOR v;        /* vector type specific info                      */
        !            91:    simplestring str;       /* string value buffer                            */
        !            92:    simplestring id;        /* id of this value.  possibly empty.             */
        !            93:    int i;                  /* integer value.                                 */
        !            94:    double d;               /* double value                                   */
        !            95:    int iRefCount;          /* So we know when we can delete the value      . */
        !            96: } STRUCT_XMLRPC_VALUE;
        !            97: /******/
        !            98: 
        !            99: /****s* VALUE/XMLRPC_REQUEST
        !           100:  * NAME
        !           101:  *   XMLRPC_REQUEST
        !           102:  * NOTES
        !           103:  *   Internal representation of an XML request.
        !           104:  *
        !           105:  *  This struct is opaque to callers and should be accessed only via accessor functions.
        !           106:  *  
        !           107:  * SEE ALSO
        !           108:  *   XMLRPC_VALUE
        !           109:  *   XMLRPC_RequestNew ()
        !           110:  *   XMLRPC_RequestFree ()
        !           111:  * SOURCE
        !           112:  */
        !           113: typedef struct _xmlrpc_request {
        !           114:    XMLRPC_VALUE                         io;           /* data associated with this request */
        !           115:    simplestring                         methodName;   /* name of method being called       */
        !           116:    XMLRPC_REQUEST_TYPE                  request_type; /* type of request                   */
        !           117:    STRUCT_XMLRPC_REQUEST_OUTPUT_OPTIONS output;       /* xml output options                */
        !           118:    XMLRPC_VALUE                         error;        /* error codes                       */
        !           119: } STRUCT_XMLRPC_REQUEST;
        !           120: /******/
        !           121: 
        !           122: /* Vector type. Used by XMLRPC_VALUE.  Never visible to users of the API. */
        !           123: typedef struct _xmlrpc_vector {
        !           124:    XMLRPC_VECTOR_TYPE type;                           /* vector type                       */
        !           125:    queue *q;                                          /* list of child values              */
        !           126: } STRUCT_XMLRPC_VECTOR;
        !           127: /******/
        !           128: 
        !           129: /****s* VALUE/XMLRPC_SERVER
        !           130:  * NAME
        !           131:  *   XMLRPC_SERVER
        !           132:  * NOTES
        !           133:  *   internal representation of an xmlrpc server
        !           134:  *
        !           135:  *  This struct is opaque to callers and should be accessed only via accessor functions.
        !           136:  *  
        !           137:  * SEE ALSO
        !           138:  *   XMLRPC_ServerCreate ()
        !           139:  *   XMLRPC_ServerDestroy ()
        !           140:  * SOURCE
        !           141:  */
        !           142: typedef struct _xmlrpc_server {
        !           143:    queue methodlist;                                  /* list of callback methods          */
        !           144:    queue docslist;                                    /* list of introspection callbacks   */
        !           145:    XMLRPC_VALUE xIntrospection;
        !           146: } STRUCT_XMLRPC_SERVER;
        !           147: /******/
        !           148: 
        !           149: typedef struct _server_method {
        !           150:    char*                   name;
        !           151:    XMLRPC_VALUE            desc;
        !           152:    XMLRPC_Callback         method;
        !           153: } server_method;
        !           154: 
        !           155: 
        !           156: /*----------------------------------------------------------------------------
        !           157:  * Globals
        !           158:  */
        !           159: 
        !           160: /*----------------------------------------------------------------------------
        !           161:  * Functions
        !           162:  */
        !           163: server_method* find_method(XMLRPC_SERVER server, const char* name);
        !           164: const char* type_to_str(XMLRPC_VALUE_TYPE type, XMLRPC_VECTOR_TYPE vtype);
        !           165:  
        !           166: /*----------------------------------------------------------------------------
        !           167:  * Macros
        !           168:  */
        !           169: #define my_free(thing)  if(thing) {free(thing); thing = 0;}
        !           170:  
        !           171: 
        !           172: #ifdef __cplusplus
        !           173: }
        !           174: #endif
        !           175: 
        !           176: 
        !           177: #endif /* XMLRPC_PRIVATE_ALREADY_INCLUDED */
        !           178: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>