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>