root/ext/xmlrpc/libxmlrpc/xmlrpc.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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 

/* [<][>][^][v][top][bottom][index][help] */