summaryrefslogtreecommitdiffstats
path: root/axiom/include/axiom_output.h
blob: 18b524baa39610ffc4178020acd7cac4d144dcca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef AXIOM_OUTPUT_H
#define AXIOM_OUTPUT_H

#include <axutil_utils_defines.h>
#include <axutil_utils.h>
#include <axutil_env.h>
#include <axiom_node.h>
#include <axiom_xml_writer.h>
#include <axutil_array_list.h>

#ifdef __cplusplus
extern "C"
{
#endif

    /**
     * @defgroup axiom_output output
     * @ingroup axiom_om
     * @{
     */

    /**
     * \brief output struct
     * The XML writer interface struct of om
     */
    typedef struct axiom_output axiom_output_t;
    struct axiom_text;

    /**
     * Creates AXIOM output struct 
     * @param env Environment. MUST NOT be NULL, .
     * @param xml_writer XML writer. OM output takes
     * ownership of the xml_writer. 
     * @return a pointer to newly created output struct.
     */
    AXIS2_EXTERN axiom_output_t *AXIS2_CALL
    axiom_output_create(
        const axutil_env_t * env,
        axiom_xml_writer_t * xml_writer);

    /**
     *  Performs xml writing.
     *  Accepts variable number of args depending on the on AXIOM type to be serialized
     *  @param om_output Output struct to be used 
     *  @param env Environment. MUST NOT be NULL, 
     *  @param type one of the AXIOM types
     *  @param no_of_args number of arguments passed in the variable parameter list
     *  @return satus of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
     */
    AXIS2_EXTERN axis2_status_t AXIS2_CALL
    axiom_output_write(
        axiom_output_t * om_output,
        const axutil_env_t * env,
        axiom_types_t type,
        int no_of_args,
        ...);

    AXIS2_EXTERN axis2_status_t AXIS2_CALL
    axiom_output_write_optimized(
        axiom_output_t * om_output,
        const axutil_env_t * env,
        struct axiom_text *om_text);

    /**
     * Free om_output 
     * @param om_output om_output struct
     * @param env environment
     * @return status code AXIS2_SUCCESS on success,
     *  AXIS2_FAILURE otherwise 
     */
    AXIS2_EXTERN void AXIS2_CALL
    axiom_output_free(
        axiom_output_t * om_output,
        const axutil_env_t * env);

    /**
     * If the xml to be serialized is soap 11, this property is set to true
     * @param om_output pointer to om_output struct
     * @param env environment must not be NULL
     * @returns the output soap version 
     */
    AXIS2_EXTERN axis2_bool_t AXIS2_CALL
    axiom_output_is_soap11(
        axiom_output_t * om_output,
        const axutil_env_t * env);

    /**
     * @returns true if the ignore_xml_declaration property is true   
     */
    AXIS2_EXTERN axis2_bool_t AXIS2_CALL

    axiom_output_is_ignore_xml_declaration(
        axiom_output_t * om_output,
        const axutil_env_t * env);

    /**
     * Sets the ignore_xml_declaration property is true
     */
    AXIS2_EXTERN axis2_status_t AXIS2_CALL

    axiom_output_set_ignore_xml_declaration(
        axiom_output_t * om_output,
        const axutil_env_t * env,
        axis2_bool_t ignore_xml_dec);

    /**
     * Sets the soap11  property to true
     */
    AXIS2_EXTERN axis2_status_t AXIS2_CALL
    axiom_output_set_soap11(
        axiom_output_t * om_output,
        const axutil_env_t * env,
        axis2_bool_t soap11);

    /**
     * Sets xml_version property
     */
    AXIS2_EXTERN axis2_status_t AXIS2_CALL
    axiom_output_set_xml_version(
        axiom_output_t * om_output,
        const axutil_env_t * env,
        axis2_char_t * xml_version);

    /**
     * @returns xml version property
     */
    AXIS2_EXTERN axis2_char_t *AXIS2_CALL
    axiom_output_get_xml_version(
        axiom_output_t * om_output,
        const axutil_env_t * env);

    /**
     * Sets the char set encoding property
     */
    AXIS2_EXTERN axis2_status_t AXIS2_CALL
    axiom_output_set_char_set_encoding(
        axiom_output_t * om_output,
        const axutil_env_t * env,
        axis2_char_t * char_set_encoding);

    /**
     * @returns the char set encoding property
     */
    AXIS2_EXTERN axis2_char_t *AXIS2_CALL
    axiom_output_get_char_set_encoding(
        axiom_output_t * om_output,
        const axutil_env_t * env);

    /**
     * Sets the do optimize property true
     */
    AXIS2_EXTERN axis2_status_t AXIS2_CALL
    axiom_output_set_do_optimize(
        axiom_output_t * om_output,
        const axutil_env_t * env,
        axis2_bool_t optimize);

    /**
     * Returns the xml writer
     */
    AXIS2_EXTERN axiom_xml_writer_t *AXIS2_CALL
    axiom_output_get_xml_writer(
        axiom_output_t * om_output,
        const axutil_env_t * env);

    /**
     *  Returns the content type
     *  for soap11 'text/xml' etc..
     *  @param om_output
     *  @param env environemnt
     *  @returns content id
     */
    AXIS2_EXTERN const axis2_char_t *AXIS2_CALL
    axiom_output_get_content_type(
        axiom_output_t * om_output,
        const axutil_env_t * env);

    /**
     * Writes the xml versio encoding 
     */
    AXIS2_EXTERN axis2_status_t AXIS2_CALL
    axiom_output_write_xml_version_encoding(
        axiom_output_t * om_output,
        const axutil_env_t * env);

    /**
     * @returns whether the output is to be optimized 
     */
    AXIS2_EXTERN axis2_bool_t AXIS2_CALL
    axiom_output_is_optimized(
        axiom_output_t * om_output,
        const axutil_env_t * env);

    /**
     * Returns the next content id
     */
    AXIS2_EXTERN axis2_char_t *AXIS2_CALL
    axiom_output_get_next_content_id(
        axiom_output_t * om_output,
        const axutil_env_t * env);

    /**
     * root content id
     */
    AXIS2_EXTERN axis2_char_t *AXIS2_CALL
    axiom_output_get_root_content_id(
        axiom_output_t * om_output,
        const axutil_env_t * env);
    /**
     *
     */
    AXIS2_EXTERN axis2_char_t *AXIS2_CALL
    axiom_output_get_mime_boundry(
        axiom_output_t * om_output,
        const axutil_env_t * env);
    /**
     *
     */
    AXIS2_EXTERN axis2_status_t AXIS2_CALL
        axiom_output_flush(
        axiom_output_t * om_output,
        const axutil_env_t * env);

    AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL
    axiom_output_get_mime_parts(
        axiom_output_t * om_output,
        const axutil_env_t * env);


    /** @} */

#ifdef __cplusplus
}
#endif

#endif                          /* AXIOM_OUTPUT_H */