summaryrefslogtreecommitdiffstats
path: root/axiom/include/axiom_processing_instruction.h
blob: 24fcdc952082cdc80e07598c36d2a1cff49547b0 (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
/*
 * 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_PI_H
#define AXIOM_PI_H

#include <axiom_node.h>
#include <axiom_output.h>

#ifdef __cplusplus
extern "C"
{
#endif

    /**
     * @defgroup axiom_processing_instruction pocessing instruction
     * @ingroup axiom_om
     * @{
     */

    typedef struct axiom_processing_instruction
                axiom_processing_instruction_t;

    /**
      * Creates a processing instruction 
      * @param environment Environment. MUST NOT be NULL.
      * @param parent parent of the element node to be created. Optional, can be NULL.
      * @param target target of the processing instruction.cannot be NULL.
      * @param value value of the processing instruction.cannot be NULL.
      * @param node This is an out parameter. cannot be NULL.
      *     Returns the node corresponding to the comment created.
      *     Node type will be set to AXIOM_PROCESSING_INSTRUCTION
      * @return a pointer tonewly created processing instruction struct 
      */
    AXIS2_EXTERN axiom_processing_instruction_t *AXIS2_CALL
    axiom_processing_instruction_create(
        const axutil_env_t * env,
        axiom_node_t * parent,
        const axis2_char_t * target,
        const axis2_char_t * value,
        axiom_node_t ** node);

    /**
     * Frees an instance of axiom_processing_instruction
     * @param om_pi processing instruction to be freed.
     * @param env Environment. MUST NOT be NULL, .
     * @return satus of the op. AXIS2_SUCCESS on success else AXIS2_FAILURE
     */
    AXIS2_EXTERN void AXIS2_CALL
    axiom_processing_instruction_free(
        struct axiom_processing_instruction *om_pi,
        const axutil_env_t * env);

    /**
     * Set processing instruction data
     * @param om_pi
     * @param env Environment. MUST NOT be NULL, .
     * @param value 
     */
    AXIS2_EXTERN axis2_status_t AXIS2_CALL
    axiom_processing_instruction_set_value(
        struct axiom_processing_instruction *om_pi,
        const axutil_env_t * env,
        const axis2_char_t * value);

    /**
     * Set processing instruction target
     * @param om_pi processing_instruction struct
     * @param env environment, MUST NOT be NULL.
     * @param target 
     * @return status of the op AXIS2_SUCCESS on success,
     *     AXIS2_FAILURE on error.
     */
    AXIS2_EXTERN axis2_status_t AXIS2_CALL
    axiom_processing_instruction_set_target(
        struct axiom_processing_instruction *om_pi,
        const axutil_env_t * env,
        const axis2_char_t * target);

    /**
     * Get PI target
     * @param om_pi processing_instruction struct
     * @param env Environment. MUST NOT be NULL, .
     * @return target text , NULL on error or if target is null
     */
    AXIS2_EXTERN axis2_char_t *AXIS2_CALL
    axiom_processing_instruction_get_target(
        struct axiom_processing_instruction *om_pi,
        const axutil_env_t * env);

    /**
     * Get data part of processing_instruction
     * @param om_pi processing instruction 
     * @param env environment , MUST NOT be NULL.
     * @return data text , NULL if there is no data,
     */
    AXIS2_EXTERN axis2_char_t *AXIS2_CALL
    axiom_processing_instruction_get_value(
        struct axiom_processing_instruction *om_pi,
        const axutil_env_t * env);

    /**
     * Serialize function
     * @param om_pi processing_instruction struct
     * @param env environment, MUST NOT be NULL.
     * @param om_output om_output handler struct
     * @return status of the op, AXIS2_SUCCESS on success,
     *     AXIS2_FAILURE on error 
     */
    AXIS2_EXTERN axis2_status_t AXIS2_CALL
    axiom_processing_instruction_serialize(
        struct axiom_processing_instruction *om_pi,
        const axutil_env_t * env,
        axiom_output_t * om_output);

    /** @} */
#ifdef __cplusplus
}
#endif

#endif                          /* AXIOM_PI_H */