Annotation of embedaddon/php/ext/xmlrpc/libxmlrpc/xmlrpc.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: #ifndef XMLRPC_ALREADY_INCLUDED
                     34: #define XMLRPC_ALREADY_INCLUDED 1
                     35: 
                     36: /* includes */
                     37: #include "xml_element.h"
                     38: #include <time.h> /* for time_t */
                     39: 
                     40: #ifdef __cplusplus
                     41: extern "C" {
                     42: #endif
                     43: 
                     44: /* allow version to be specified via compile line define */
                     45: #ifndef XMLRPC_LIB_VERSION
                     46:  #define XMLRPC_LIB_VERSION "0.51"
                     47: #endif
                     48: 
                     49: /* this number, representing the date, must be increased each time the API changes */
                     50: #define XMLRPC_API_NO 20020623
                     51: 
                     52: /* this string should be changed with each packaged release */
                     53: #define XMLRPC_VERSION_STR "xmlrpc-epi v. " XMLRPC_LIB_VERSION
                     54: 
                     55: /* where to find more info. shouldn't need to change much */
                     56: #define XMLRPC_HOME_PAGE_STR "http://xmlprc-epi.sourceforge.net/"
                     57: 
                     58: 
                     59: /****d* VALUE/XMLRPC_VALUE_TYPE
                     60:  * NAME
                     61:  *   XMLRPC_VALUE_TYPE
                     62:  * NOTES
                     63:  *   Defines data types for XMLRPC_VALUE
                     64:  *   Deprecated for public use.  See XMLRPC_VALUE_TYPE_EASY
                     65:  * SEE ALSO
                     66:  *   XMLRPC_VECTOR_TYPE
                     67:  *   XMLRPC_REQUEST_TYPE
                     68:  * SOURCE
                     69:  */
                     70: typedef enum _XMLRPC_VALUE_TYPE {
                     71:    xmlrpc_none,                   /* not a value                    */
                     72:    xmlrpc_empty,                  /* empty value, eg NULL           */
                     73:    xmlrpc_base64,                 /* base64 value, eg binary data   */
                     74:    xmlrpc_boolean,                /* boolean  [0 | 1]               */
                     75:    xmlrpc_datetime,               /* datetime [ISO8601 | time_t]    */
                     76:    xmlrpc_double,                 /* double / floating point        */
                     77:    xmlrpc_int,                    /* integer                        */
                     78:    xmlrpc_string,                 /* string                         */
                     79:    xmlrpc_vector                  /* vector, aka list, array        */
                     80: } XMLRPC_VALUE_TYPE;
                     81: /*******/
                     82: 
                     83: /****d* VALUE/XMLRPC_VECTOR_TYPE
                     84:  * NAME
                     85:  *   XMLRPC_VECTOR_TYPE
                     86:  * NOTES
                     87:  *   Defines data types for XMLRPC_VECTOR.
                     88:  *   Deprecated for public use.  See XMLRPC_VALUE_TYPE_EASY
                     89:  * SEE ALSO
                     90:  *   XMLRPC_VALUE_TYPE
                     91:  *   XMLRPC_REQUEST_TYPE
                     92:  * SOURCE
                     93:  */
                     94: typedef enum _XMLRPC_VECTOR_TYPE {
                     95:    xmlrpc_vector_none,            /* not an array                   */
                     96:    xmlrpc_vector_array,           /* no values may have key names   */
                     97:    xmlrpc_vector_mixed,           /* some values may have key names */
                     98:    xmlrpc_vector_struct           /* all values must have key names */
                     99: } XMLRPC_VECTOR_TYPE;
                    100: /*******/
                    101: 
                    102: /****d* VALUE/XMLRPC_VALUE_TYPE_EASY
                    103:  * NAME
                    104:  *   XMLRPC_VALUE_TYPE_EASY
                    105:  * NOTES
                    106:  *   Defines data types for XMLRPC_VALUE, including vector types.
                    107:  * SEE ALSO
                    108:  *   XMLRPC_VECTOR_TYPE
                    109:  *   XMLRPC_REQUEST_TYPE
                    110:  * SOURCE
                    111:  */
                    112: typedef enum _XMLRPC_VALUE_TYPE_EASY {
                    113:    xmlrpc_type_none,               /* not a value                    */
                    114:    xmlrpc_type_empty,              /* empty value, eg NULL           */
                    115:    xmlrpc_type_base64,             /* base64 value, eg binary data   */
                    116:    xmlrpc_type_boolean,            /* boolean  [0 | 1]               */
                    117:    xmlrpc_type_datetime,           /* datetime [ISO8601 | time_t]    */
                    118:    xmlrpc_type_double,             /* double / floating point        */
                    119:    xmlrpc_type_int,                /* integer                        */
                    120:    xmlrpc_type_string,             /* string                         */
                    121: /* -- IMPORTANT: identical to XMLRPC_VALUE_TYPE to this point. --   */
                    122:        xmlrpc_type_array,              /* vector array                   */
                    123:        xmlrpc_type_mixed,              /* vector mixed                   */
                    124:        xmlrpc_type_struct              /* vector struct                  */
                    125: } XMLRPC_VALUE_TYPE_EASY;
                    126: /*******/
                    127: 
                    128: 
                    129: /****d* VALUE/XMLRPC_REQUEST_TYPE
                    130:  * NAME
                    131:  *   XMLRPC_REQUEST_TYPE
                    132:  * NOTES
                    133:  *   Defines data types for XMLRPC_REQUEST
                    134:  * SEE ALSO
                    135:  *   XMLRPC_VALUE_TYPE
                    136:  *   XMLRPC_VECTOR_TYPE
                    137:  * SOURCE
                    138:  */
                    139: typedef enum _xmlrpc_request_type {
                    140:    xmlrpc_request_none,          /* not a valid request            */
                    141:    xmlrpc_request_call,          /* calling/invoking a method      */
                    142:    xmlrpc_request_response,      /* responding to a method call    */
                    143: } XMLRPC_REQUEST_TYPE;
                    144: /*******/
                    145: 
                    146: /****d* VALUE/XMLRPC_ERROR_CODE
                    147:  * NAME
                    148:  *   XMLRPC_ERROR_CODE
                    149:  * NOTES
                    150:  *   All existing error codes
                    151:  * SEE ALSO
                    152:  *   XMLRPC_REQUEST_ERROR
                    153:  * SOURCE
                    154:  */
                    155: typedef enum _xmlrpc_error_code {
                    156:    xmlrpc_error_none                      = 0,              /* not an error                                      */
                    157:    xmlrpc_error_parse_xml_syntax          = -32700,
                    158:    xmlrpc_error_parse_unknown_encoding    = -32701,
                    159:    xmlrpc_error_parse_bad_encoding        = -32702,
                    160:    xmlrpc_error_invalid_xmlrpc            = -32600,
                    161:    xmlrpc_error_unknown_method            = -32601,
                    162:    xmlrpc_error_invalid_params            = -32602,
                    163:    xmlrpc_error_internal_server           = -32603,
                    164:    xmlrpc_error_application               = -32500,
                    165:    xmlrpc_error_system                    = -32400,
                    166:    xmlrpc_error_transport                 = -32300
                    167: } XMLRPC_ERROR_CODE;
                    168: /******/
                    169: 
                    170: #define xmlrpc_error_parse_xml_syntax_str       "parse error. not well formed."
                    171: #define xmlrpc_error_parse_unknown_encoding_str "parse error. unknown encoding"
                    172: #define xmlrpc_error_parse_bad_encoding_str     "parse error. invalid character for encoding"
                    173: #define xmlrpc_error_invalid_xmlrpc_str         "server error. xml-rpc not conforming to spec"
                    174: #define xmlrpc_error_unknown_method_str         "server error. method not found."
                    175: #define xmlrpc_error_invalid_params_str         "server error. invalid method parameters"
                    176: #define xmlrpc_error_internal_server_str        "server error. internal xmlrpc library error"
                    177: #define xmlrpc_error_application_str            "application error."
                    178: #define xmlrpc_error_system_str                 "system error."
                    179: #define xmlrpc_error_transport_str              "transport error."
                    180: 
                    181: 
                    182: 
                    183: /****d* VALUE/XMLRPC_VERSION
                    184:  * NAME
                    185:  *   XMLRPC_VERSION
                    186:  * NOTES
                    187:  *   Defines xml vocabulary used for generated xml
                    188:  * SEE ALSO
                    189:  *   XMLRPC_REQUEST_OUTPUT_OPTIONS
                    190:  *   XMLRPC_REQUEST_To_XML ()
                    191:  * SOURCE
                    192:  */
                    193: typedef enum _xmlrpc_version {
                    194:    xmlrpc_version_none = 0,      /* not a recognized vocabulary    */ 
                    195:    xmlrpc_version_1_0 = 1,       /* xmlrpc 1.0 standard vocab      */ 
                    196:    xmlrpc_version_simple = 2,    /* alt more readable vocab        */ 
                    197:    xmlrpc_version_danda = 2,     /* same as simple. legacy         */
                    198:        xmlrpc_version_soap_1_1 = 3     /* SOAP. version 1.1              */
                    199: } XMLRPC_VERSION;
                    200: /******/
                    201: 
                    202: /****s* VALUE/XMLRPC_REQUEST_OUTPUT_OPTIONS
                    203:  * NAME
                    204:  *   XMLRPC_REQUEST_OUTPUT_OPTIONS
                    205:  * NOTES
                    206:  *   Defines output options for generated xml
                    207:  * SEE ALSO
                    208:  *   XMLRPC_VERSION
                    209:  *   XML_ELEM_OUTPUT_OPTIONS
                    210:  *   XMLRPC_REQUEST_To_XML ()
                    211:  * SOURCE
                    212:  */
                    213: typedef struct _xmlrpc_request_output_options {
                    214:    STRUCT_XML_ELEM_OUTPUT_OPTIONS xml_elem_opts;  /* xml_element specific output options */
                    215:    XMLRPC_VERSION                 version;        /* xml vocabulary to use               */
                    216: } STRUCT_XMLRPC_REQUEST_OUTPUT_OPTIONS, *XMLRPC_REQUEST_OUTPUT_OPTIONS;
                    217: /******/
                    218: 
                    219: /****s* VALUE/XMLRPC_REQUEST_INPUT_OPTIONS
                    220:  * NAME
                    221:  *   XMLRPC_REQUEST_INPUT_OPTIONS
                    222:  * NOTES
                    223:  *   Defines options for reading in xml data
                    224:  * SEE ALSO
                    225:  *   XMLRPC_VERSION
                    226:  *   XML_ELEM_INPUT_OPTIONS
                    227:  *   XMLRPC_REQUEST_From_XML ()
                    228:  * SOURCE
                    229:  */
                    230: typedef struct _xmlrpc_request_input_options {
                    231:    STRUCT_XML_ELEM_INPUT_OPTIONS  xml_elem_opts;  /* xml_element specific output options */
                    232: } STRUCT_XMLRPC_REQUEST_INPUT_OPTIONS, *XMLRPC_REQUEST_INPUT_OPTIONS;
                    233: /******/
                    234: 
                    235: /****s* VALUE/XMLRPC_ERROR
                    236:  * NAME
                    237:  *   XMLRPC_ERROR
                    238:  * NOTES
                    239:  *   For the reporting and handling of errors
                    240:  * SOURCE
                    241:  */
                    242: typedef struct _xmlrpc_error {
                    243:    XMLRPC_ERROR_CODE      code;
                    244:    STRUCT_XML_ELEM_ERROR  xml_elem_error;  /* xml_element errors (parser errors) */
                    245: } STRUCT_XMLRPC_ERROR, *XMLRPC_ERROR;
                    246: /******/
                    247: 
                    248: 
                    249: /****d* VALUE/XMLRPC_CASE_COMPARISON
                    250:  * NAME
                    251:  *   XMLRPC_CASE_COMPARISON
                    252:  * NOTES
                    253:  *   Defines case comparison options for XMLRPC_VALUE/VECTOR API's
                    254:  * SEE ALSO
                    255:  *   XMLRPC_CASE
                    256:  *   XMLRPC_VALUE
                    257:  * SOURCE
                    258:  */
                    259: typedef enum _xmlrpc_case_comparison {
                    260:    xmlrpc_case_insensitive,      /* use case-insensitive compare */
                    261:    xmlrpc_case_sensitive         /* use case-sensitive compare   */
                    262: } XMLRPC_CASE_COMPARISON;
                    263: /******/
                    264: 
                    265: /****d* VALUE/XMLRPC_CASE
                    266:  * NAME
                    267:  *   XMLRPC_CASE
                    268:  * NOTES
                    269:  *   Defines case behavior when setting IDs in XMLRPC_VALUE API's
                    270:  * SEE ALSO
                    271:  *   XMLRPC_CASE_COMPARISON
                    272:  *   XMLRPC_VALUE
                    273:  * SOURCE
                    274:  */
                    275: typedef enum _xmlrpc_case {
                    276:    xmlrpc_case_exact,            /* leave case alone             */
                    277:    xmlrpc_case_lower,            /* lower-case id                */
                    278:    xmlrpc_case_upper             /* upper-case id                */
                    279: } XMLRPC_CASE;
                    280: /******/
                    281: 
                    282: /* if you don't like these defaults, you can set them with XMLRPC_SetDefaultIdCase*() */
                    283: #define XMLRPC_DEFAULT_ID_CASE              XMLRPC_GetDefaultIdCase()
                    284: #define XMLRPC_DEFAULT_ID_CASE_SENSITIVITY  XMLRPC_GetDefaultIdCaseComparison()
                    285: 
                    286: /* opaque (non-public) types. defined locally in xmlrpc.c */
                    287: typedef struct _xmlrpc_request* XMLRPC_REQUEST;
                    288: typedef struct _xmlrpc_server* XMLRPC_SERVER;
                    289: typedef struct _xmlrpc_value* XMLRPC_VALUE;
                    290: 
                    291: /****d* VALUE/XMLRPC_Callback
                    292:  * NAME
                    293:  *   XMLRPC_Callback
                    294:  * NOTES
                    295:  *   Function prototype for user defined method handlers (callbacks).
                    296:  * SEE ALSO
                    297:  *   XMLRPC_ServerRegisterMethod ()
                    298:  *   XMLRPC_ServerCallMethod ()
                    299:  *   XMLRPC_REQUEST
                    300:  *   XMLRPC_VALUE
                    301:  * SOURCE
                    302:  */
                    303: typedef XMLRPC_VALUE (*XMLRPC_Callback)(XMLRPC_SERVER server, XMLRPC_REQUEST input, void* userData);
                    304: /******/
                    305: 
                    306: /* ID Case Defaults */
                    307: XMLRPC_CASE XMLRPC_GetDefaultIdCase(void);
                    308: XMLRPC_CASE XMLRPC_SetDefaultIdCase(XMLRPC_CASE id_case);
                    309: XMLRPC_CASE_COMPARISON XMLRPC_GetDefaultIdCaseComparison(void);
                    310: XMLRPC_CASE_COMPARISON XMLRPC_SetDefaultIdCaseComparison(XMLRPC_CASE_COMPARISON id_case);
                    311: 
                    312: /* Vector manipulation */
                    313: int XMLRPC_VectorSize(XMLRPC_VALUE value);
                    314: XMLRPC_VALUE XMLRPC_VectorRewind(XMLRPC_VALUE value);
                    315: XMLRPC_VALUE XMLRPC_VectorNext(XMLRPC_VALUE value);
                    316: int XMLRPC_SetIsVector(XMLRPC_VALUE value, XMLRPC_VECTOR_TYPE type);
                    317: int XMLRPC_AddValueToVector(XMLRPC_VALUE target, XMLRPC_VALUE source);
                    318: int XMLRPC_AddValuesToVector(XMLRPC_VALUE target, ...);
                    319: int XMLRPC_VectorRemoveValue(XMLRPC_VALUE vector, XMLRPC_VALUE value);
                    320: XMLRPC_VALUE XMLRPC_VectorGetValueWithID_Case(XMLRPC_VALUE vector, const char* id, XMLRPC_CASE_COMPARISON id_case);
                    321: 
                    322: 
                    323: /* Create values */
                    324: XMLRPC_VALUE XMLRPC_CreateValueBoolean(const char* id, int truth);
                    325: XMLRPC_VALUE XMLRPC_CreateValueBase64(const char* id, const char* s, int len);
                    326: XMLRPC_VALUE XMLRPC_CreateValueDateTime(const char* id, time_t time);
                    327: XMLRPC_VALUE XMLRPC_CreateValueDateTime_ISO8601(const char* id, const char *s);
                    328: XMLRPC_VALUE XMLRPC_CreateValueDouble(const char* id, double f);
                    329: XMLRPC_VALUE XMLRPC_CreateValueInt(const char* id, int i);
                    330: XMLRPC_VALUE XMLRPC_CreateValueString(const char* id, const char* s, int len);
                    331: XMLRPC_VALUE XMLRPC_CreateValueEmpty(void);
                    332: XMLRPC_VALUE XMLRPC_CreateVector(const char* id, XMLRPC_VECTOR_TYPE type);
                    333: 
                    334: /* Cleanup values */
                    335: void XMLRPC_CleanupValue(XMLRPC_VALUE value);
                    336: 
                    337: /* Request error */
                    338: XMLRPC_VALUE XMLRPC_RequestSetError (XMLRPC_REQUEST request, XMLRPC_VALUE error);
                    339: XMLRPC_VALUE XMLRPC_RequestGetError (XMLRPC_REQUEST request);
                    340: 
                    341: /* Copy values */
                    342: XMLRPC_VALUE XMLRPC_CopyValue(XMLRPC_VALUE value);
                    343: XMLRPC_VALUE XMLRPC_DupValueNew(XMLRPC_VALUE xSource);
                    344: 
                    345: /* Set Values */
                    346: void XMLRPC_SetValueDateTime(XMLRPC_VALUE value, time_t time);
                    347: void XMLRPC_SetValueDateTime_ISO8601(XMLRPC_VALUE value, const char* s);
                    348: void XMLRPC_SetValueDouble(XMLRPC_VALUE value, double val);
                    349: void XMLRPC_SetValueInt(XMLRPC_VALUE value, int val);
                    350: void XMLRPC_SetValueBoolean(XMLRPC_VALUE value, int val);
                    351: const char *XMLRPC_SetValueString(XMLRPC_VALUE value, const char* s, int len);
                    352: void XMLRPC_SetValueBase64(XMLRPC_VALUE value, const char* s, int len);
                    353: const char *XMLRPC_SetValueID_Case(XMLRPC_VALUE value, const char* id, int len, XMLRPC_CASE id_case);
                    354: #define XMLRPC_SetValueID(value, id, len) XMLRPC_SetValueID_Case(value, id, len, XMLRPC_DEFAULT_ID_CASE)
                    355: 
                    356: /* Get Values */
                    357: const char* XMLRPC_GetValueString(XMLRPC_VALUE value);
                    358: int XMLRPC_GetValueStringLen(XMLRPC_VALUE value);
                    359: int XMLRPC_GetValueInt(XMLRPC_VALUE value);
                    360: int XMLRPC_GetValueBoolean(XMLRPC_VALUE value);
                    361: double XMLRPC_GetValueDouble(XMLRPC_VALUE value);
                    362: const char* XMLRPC_GetValueBase64(XMLRPC_VALUE value);
                    363: time_t XMLRPC_GetValueDateTime(XMLRPC_VALUE value);
                    364: const char* XMLRPC_GetValueDateTime_ISO8601(XMLRPC_VALUE value);
                    365: const char* XMLRPC_GetValueID(XMLRPC_VALUE value);
                    366: 
                    367: /* Type introspection */
                    368: XMLRPC_VALUE_TYPE XMLRPC_GetValueType(XMLRPC_VALUE v);
                    369: XMLRPC_VALUE_TYPE_EASY XMLRPC_GetValueTypeEasy(XMLRPC_VALUE v);
                    370: XMLRPC_VECTOR_TYPE XMLRPC_GetVectorType(XMLRPC_VALUE v);
                    371: 
                    372: /* Parsing and Creating XML */
                    373: XMLRPC_REQUEST XMLRPC_REQUEST_FromXML(const char* in_buf, int len, XMLRPC_REQUEST_INPUT_OPTIONS in_options);
                    374: XMLRPC_VALUE XMLRPC_VALUE_FromXML(const char* in_buf, int len, XMLRPC_REQUEST_INPUT_OPTIONS in_options);
                    375: char* XMLRPC_REQUEST_ToXML(XMLRPC_REQUEST request, int *buf_len);
                    376: char* XMLRPC_VALUE_ToXML(XMLRPC_VALUE val, int* buf_len);
                    377: 
                    378: /* Request manipulation funcs */
                    379: const char* XMLRPC_RequestSetMethodName(XMLRPC_REQUEST request, const char* methodName);
                    380: const char* XMLRPC_RequestGetMethodName(XMLRPC_REQUEST request);
                    381: XMLRPC_REQUEST XMLRPC_RequestNew(void);
                    382: void XMLRPC_RequestFree(XMLRPC_REQUEST request, int bFreeIO);
                    383: XMLRPC_REQUEST_OUTPUT_OPTIONS XMLRPC_RequestSetOutputOptions(XMLRPC_REQUEST request, XMLRPC_REQUEST_OUTPUT_OPTIONS output);
                    384: XMLRPC_REQUEST_OUTPUT_OPTIONS XMLRPC_RequestGetOutputOptions(XMLRPC_REQUEST request);
                    385: XMLRPC_VALUE XMLRPC_RequestSetData(XMLRPC_REQUEST request, XMLRPC_VALUE data);
                    386: XMLRPC_VALUE XMLRPC_RequestGetData(XMLRPC_REQUEST request);
                    387: XMLRPC_REQUEST_TYPE XMLRPC_RequestSetRequestType(XMLRPC_REQUEST request, XMLRPC_REQUEST_TYPE type);
                    388: XMLRPC_REQUEST_TYPE XMLRPC_RequestGetRequestType(XMLRPC_REQUEST request);
                    389: 
                    390: /* Server Creation/Destruction; Method Registration and Invocation */
                    391: XMLRPC_SERVER XMLRPC_ServerCreate(void);
                    392: XMLRPC_SERVER XMLRPC_GetGlobalServer(void);   /* better to use XMLRPC_ServerCreate if you can */
                    393: void XMLRPC_ServerDestroy(XMLRPC_SERVER server);
                    394: int XMLRPC_ServerRegisterMethod(XMLRPC_SERVER server, const char *name, XMLRPC_Callback cb);
                    395: XMLRPC_Callback XMLRPC_ServerFindMethod(XMLRPC_SERVER server, const char* callName);
                    396: XMLRPC_VALUE XMLRPC_ServerCallMethod(XMLRPC_SERVER server, XMLRPC_REQUEST request, void* userData);
                    397: 
                    398: #include "xmlrpc_introspection.h"
                    399: 
                    400: /* Fault interrogation funcs */
                    401: int XMLRPC_ValueIsFault (XMLRPC_VALUE value);
                    402: int XMLRPC_ResponseIsFault(XMLRPC_REQUEST response);
                    403: int XMLRPC_GetValueFaultCode (XMLRPC_VALUE value);
                    404: int XMLRPC_GetResponseFaultCode(XMLRPC_REQUEST response);
                    405: const char* XMLRPC_GetValueFaultString (XMLRPC_VALUE value);
                    406: const char* XMLRPC_GetResponseFaultString (XMLRPC_REQUEST response);
                    407: 
                    408: 
                    409: /* Public Utility funcs */
                    410: XMLRPC_VALUE XMLRPC_UtilityCreateFault(int fault_code, const char* fault_string);
                    411: void XMLRPC_Free(void* mem);
                    412: const char*  XMLRPC_GetVersionString(void);
                    413: 
                    414: /****d* VALUE/XMLRPC_MACROS
                    415:  * NAME
                    416:  *   Some Helpful Macros
                    417:  * NOTES
                    418:  *   Some macros for making life easier.  Should be self-explanatory.
                    419:  * SEE ALSO
                    420:  *   XMLRPC_AddValueToVector ()
                    421:  *   XMLRPC_VectorGetValueWithID_Case ()
                    422:  *   XMLRPC_VALUE
                    423:  * SOURCE
                    424:  */
                    425: 
                    426: /* Append values to vector */
                    427: #define XMLRPC_VectorAppendString(vector, id, s, len) XMLRPC_AddValueToVector(vector, XMLRPC_CreateValueString(id, s, len))
                    428: #define XMLRPC_VectorAppendBase64(vector, id, s, len) XMLRPC_AddValueToVector(vector, XMLRPC_CreateValueBase64(id, s, len))
                    429: #define XMLRPC_VectorAppendDateTime(vector, id, time) XMLRPC_AddValueToVector(vector, XMLRPC_CreateValueDateTime(id, time))
                    430: #define XMLRPC_VectorAppendDateTime_ISO8601(vector, id, s) XMLRPC_AddValueToVector(vector, XMLRPC_CreateValueDateTime_ISO8601(id, s))
                    431: #define XMLRPC_VectorAppendDouble(vector, id, f) XMLRPC_AddValueToVector(vector, XMLRPC_CreateValueDouble(id, f))
                    432: #define XMLRPC_VectorAppendInt(vector, id, i) XMLRPC_AddValueToVector(vector, XMLRPC_CreateValueInt(id, i))
                    433: #define XMLRPC_VectorAppendBoolean(vector, id, i) XMLRPC_AddValueToVector(vector, XMLRPC_CreateValueBoolean(id, i))
                    434: 
                    435: /* Get named values from vector */
                    436: #define XMLRPC_VectorGetValueWithID(vector, id) XMLRPC_VectorGetValueWithID_Case(vector, id, XMLRPC_DEFAULT_ID_CASE_SENSITIVITY)
                    437: #define XMLRPC_VectorGetStringWithID(vector, id) XMLRPC_GetValueString(XMLRPC_VectorGetValueWithID(vector, id))
                    438: #define XMLRPC_VectorGetBase64WithID(vector, id) XMLRPC_GetValueBase64(XMLRPC_VectorGetValueWithID(vector, id))
                    439: #define XMLRPC_VectorGetDateTimeWithID(vector, id) XMLRPC_GetValueDateTime(XMLRPC_VectorGetValueWithID(vector, id))
                    440: #define XMLRPC_VectorGetDoubleWithID(vector, id) XMLRPC_GetValueDouble(XMLRPC_VectorGetValueWithID(vector, id))
                    441: #define XMLRPC_VectorGetIntWithID(vector, id) XMLRPC_GetValueInt(XMLRPC_VectorGetValueWithID(vector, id))
                    442: #define XMLRPC_VectorGetBooleanWithID(vector, id) XMLRPC_GetValueBoolean(XMLRPC_VectorGetValueWithID(vector, id))
                    443: 
                    444: /******/
                    445: 
                    446: 
                    447: #ifdef __cplusplus
                    448: }
                    449: #endif
                    450: 
                    451: #endif /* not XMLRPC_ALREADY_INCLUDED */
                    452: 
                    453: 
                    454: 

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