Annotation of embedaddon/php/ext/xmlrpc/libxmlrpc/xmlrpc_private.h, revision 1.1.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>