Annotation of embedaddon/php/ext/xmlrpc/libxmlrpc/xmlrpc.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: #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>