📄 xmlrpc.h
字号:
/* Return type of i'th MethodCall/MethodResponse param: xr_scalar, xr_array or xr_struct * or -1 if no param */int xmlrpc_get_type_param(XMLRPCDocument *xrdoc, int i);/* Return content of i'th MethodCall/MethodResponse param: * XMLRPCScalar if xr_scalar, List of XMLRPCValues if xr_array * or Dict of XMLRPCValues if xr_struct (member names as keys) * or NULL if no param */void *xmlrpc_get_content_param(XMLRPCDocument *xrdoc, int i);/* Identify d_type of given XMLRPCDocument and add a scalar param. * type is scalar type: xr_string, xr_int, xr_bool, xr_double, xr_date or xr_base64 * arg is pointer to value of given type: Octstr*, long*, int*, double*, Octstr* or Octstr* * respectively * Return 0 if ok or -1 if something wrong. */#define xmlrpc_add_scalar_param(xrdoc, type, arg) \ xmlrpc_doc_add_scalar(xrdoc, xr_undefined, type, arg)/* Identify d_type of given XMLRPCDocument and add XMLRPCValue param. * Return 0 if ok or -1 if something wrong. * NOTE: value is NOT duplicated */#define xmlrpc_add_param(xrdoc, value) \ xmlrpc_doc_add_value(xrdoc, xr_undefined, value)/*** VALUES HANDLING ***//* Create a new XMLRPCValue object of undefined type */ XMLRPCValue *xmlrpc_value_create(void);/* Destroy given XMLRPCValue object */void xmlrpc_value_destroy(XMLRPCValue *val);/* Wrapper for destroy */void xmlrpc_value_destroy_item(void *val);/* Set type of XMLRPCValue: xr_scalar, xr_array or xr_struct * Return 0 if ok or -1 if something wrong. */int xmlrpc_value_set_type(XMLRPCValue *val, int v_type);/* Set XMLRPCValue content: * XMLRPCScalar if xr_scalar, List of XMLRPCValues if xr_array * or Dict of XMLRPCValues if xr_struct (member names as keys) * Return 0 if ok or -1 if something wrong. */int xmlrpc_value_set_content(XMLRPCValue *val, void *content);/* Return type of XMLRPCValue: xr_scalar, xr_array or xr_struct */int xmlrpc_value_get_type(XMLRPCValue *val);/* Return leaf type of XMLRPCValue: * as above, but if value is xr_scalar return type of scalar */int xmlrpc_value_get_type_smart(XMLRPCValue *val);/* Return XMLRPCValue content: * XMLRPCScalar if xr_scalar, List of XMLRPCValues if xr_array * or Dict of XMLRPCValues if xr_struct (member names as keys) * or NULL if something wrong. */void *xmlrpc_value_get_content(XMLRPCValue *val);/* Create Octstr (text/xml string) out of given XMLRPCValue. Caller * must free returned Octstr */Octstr *xmlrpc_value_print(XMLRPCValue *val, int level);/*** STRUCT VALUE HANDLING ***//* Create a new XMLRPCValue object of xr_struct type. * size is expected number of struct members */ XMLRPCValue *xmlrpc_create_struct_value(int size);/* Return -1 if not a struct or number of members */long xmlrpc_count_members(XMLRPCValue *xrstruct);/* Add member with given name and value to the struct */int xmlrpc_add_member(XMLRPCValue *xrstruct, Octstr *name, XMLRPCValue *value);/* Add member with given name and scalar value built with type and arg to the struct */int xmlrpc_add_member_scalar(XMLRPCValue *xrstruct, Octstr *name, int type, void *arg);/* Return value of member with given name or NULL if not found */XMLRPCValue *xmlrpc_get_member(XMLRPCValue *xrstruct, Octstr *name);/* Return type of member with given name (xr_scalar, xr_array or xr_struct) * or -1 if not found */int xmlrpc_get_member_type(XMLRPCValue *xrstruct, Octstr *name);/* Return content of member with given name: * XMLRPCScalar if xr_scalar, List of XMLRPCValues if xr_array * or Dict of XMLRPCValues if xr_struct (member names as keys) * or NULL if not found. */void *xmlrpc_get_member_content(XMLRPCValue *xrstruct, Octstr *name);/* Create Octstr (text/xml string) out of struct. Caller * must free returned Octstr. */Octstr *xmlrpc_print_struct(Dict *members, int level);/*** ARRAY VALUE HANDLING ***//* Create a new XMLRPCValue object of xr_array type. */ XMLRPCValue *xmlrpc_create_array_value(void);/* Return -1 if not an array or number of elements */int xmlrpc_count_elements(XMLRPCValue *xrarray);/* Add XMLRPCValue element to the end of array */int xmlrpc_add_element(XMLRPCValue *xrarray, XMLRPCValue *value);/* Build scalar XMLRPCValue with type and arg, *and add this element to the end of array */int xmlrpc_add_element_scalar(XMLRPCValue *xrarray, int type, void *arg);/* Return value of i'th element in array or NULL if something wrong*/XMLRPCValue *xmlrpc_get_element(XMLRPCValue *xrarray, int i);/* Return type of i'th element in array (xr_scalar, xr_array or xr_struct) * or -1 if not found */int xmlrpc_get_element_type(XMLRPCValue *xrarray, int i);/* Return content of i'th element: * XMLRPCScalar if xr_scalar, List of XMLRPCValues if xr_array * or Dict of XMLRPCValues if xr_struct (member names as keys) * or NULL if not found. */void *xmlrpc_get_element_content(XMLRPCValue *xrarray, int i);/* Create Octstr (text/xml string) out of array. Caller * must free returned Octstr. */Octstr *xmlrpc_print_array(List *elements, int level);/*** SCALAR HANDLING ***//* Create a new scalar of given type and value * (which must be in right format) * type is scalar type: xr_string, xr_int, xr_bool, xr_double, xr_date or xr_base64 * arg is pointer to value of given type: Octstr*, long*, int*, double*, Octstr* or Octstr* * respectively * Return NULL if something wrong. */XMLRPCScalar *xmlrpc_scalar_create(int type, void *arg);/* Destroy XMLRPCScalar */void xmlrpc_scalar_destroy(XMLRPCScalar *scalar);/* Return type of scalar or -1 if scalar is NULL */int xmlrpc_scalar_get_type(XMLRPCScalar *scalar);/* Return content of scalar * s_type is expected type of scalar */void *xmlrpc_scalar_get_content(XMLRPCScalar *scalar, int s_type);/* Create Octstr (text/xml string) out of scalar. Caller * must free returned Octstr. */Octstr *xmlrpc_scalar_print(XMLRPCScalar *scalar, int level);/* Wrappers to get scalar content of proper type * NOTE: returned values are copies, caller must free returned Octstr */#define xmlrpc_scalar_get_double(scalar) \ *(double *)xmlrpc_scalar_get_content(scalar, xr_double)#define xmlrpc_scalar_get_int(scalar) \ *(long *)xmlrpc_scalar_get_content(scalar, xr_int)#define xmlrpc_scalar_get_bool(scalar) \ *(int *)xmlrpc_scalar_get_content(scalar, xr_bool)#define xmlrpc_scalar_get_date(scalar) \ octstr_duplicate((Octstr *)xmlrpc_scalar_get_content(scalar, xr_date))#define xmlrpc_scalar_get_string(scalar) \ octstr_duplicate((Octstr *)xmlrpc_scalar_get_content(scalar, xr_string))#define xmlrpc_scalar_get_base64(scalar) \ octstr_duplicate((Octstr *)xmlrpc_scalar_get_content(scalar, xr_base64))/*** SCALAR VALUE HANDLING ***//* Create XMLRPCScalar with type and arg, * and then create XMLRPCValue with xr_scalar type and * created XMLRPCScalar as content */XMLRPCValue *xmlrpc_create_scalar_value(int type, void *arg);/* As above, but scalar is xr_double type */XMLRPCValue *xmlrpc_create_double_value(double val);/* As above, but scalar is xr_int type */XMLRPCValue *xmlrpc_create_int_value(long val);/* As above, but scalar is xr_string type */XMLRPCValue *xmlrpc_create_string_value(Octstr *val);/* Return type of scalar in given XMLRPCValue */#define xmlrpc_get_scalar_value_type(value) \ xmlrpc_scalar_get_type(xmlrpc_value_get_content(value)) /* Wrappers to get scalar content of proper type from XMLRPCValue */#define xmlrpc_get_double_value(value) \ xmlrpc_scalar_get_double(xmlrpc_value_get_content(value))#define xmlrpc_get_int_value(value) \ xmlrpc_scalar_get_int(xmlrpc_value_get_content(value))#define xmlrpc_get_string_value(value) \ xmlrpc_scalar_get_string(xmlrpc_value_get_content(value))#define xmlrpc_get_base64_value(value) \ xmlrpc_scalar_get_base64(xmlrpc_value_get_content(value))/*** FAULT HANDLING ***//* Return 1 if XMLRPCDocument is fault MethodResponse */int xmlrpc_is_fault(XMLRPCDocument *response);/* Return faultcode from fault MethodResponse * or -1 if XMLRPCDocument is not valid fault MethodResponse */long xmlrpc_get_faultcode(XMLRPCDocument *faultresponse);/* Return faultstring from fault MethodResponse * or NULL if XMLRPCDocument is not valid fault MethodResponse */Octstr *xmlrpc_get_faultstring(XMLRPCDocument *faultresponse);/*** PARSE STATUS HANDLING***//* * Check if parsing had any errors, return status code of parsing by * returning one of the following: * XMLRPC_COMPILE_OK, * XMLRPC_XMLPARSE_FAILED, * XMLRPC_PARSING_FAILED * -1 if call has been NULL */int xmlrpc_parse_status(XMLRPCDocument *xrdoc);/* Return parser error string if parse_status != XMLRPC_COMPILE_OK *//* return NULL if no error occured or no error string was available */Octstr *xmlrpc_parse_error(XMLRPCDocument *xrdoc);#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -