blob: 8efb095fcb7b5a58663ea3c6092577e17b4a9aec [file] [log] [blame]
/*
* Copyright 2003-2004 The Apache Software Foundation.
// (c) Copyright IBM Corp. 2004, 2005 All Rights Reserved
*
* Licensed 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.
*/
/**
* @file BasicNode.hpp
*
*/
#ifndef BASICNODE_INCLUDED
#define BASICNODE_INCLUDED
/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
/* NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE */
/* ---------------------------------------------------------------- */
/* THIS HEADER FILE PATTERNED AFTER CORRESPONDING hpp HEADER FILE. */
/* CHANGES TO hpp HEADER FILE MAY NEED TO BE PROPAGATED HERE AND IN */
/* THE IMPLEMEMTATION OF THE C APIS. */
/* ---------------------------------------------------------------- */
/* NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE */
/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
#ifdef __cplusplus
extern "C" {
#endif
#include <axis/GDefine.h>
#include <axis/IAttribute.h>
/**
* @enum NODE_TYPE
*
* Enumeration of support node types.
*/
typedef enum {
/**
* An XML element node
*/
ELEMENT_NODE=1,
/**
* A text node
*/
CHARACTER_NODE
} AXISC_NODE_TYPE;
/**
* @class BasicNode
* @brief interface for the BasicNode class.
*
*
*/
/**
* Returns the Attribute of this node, corresponding to the given
* prefix/localname pair or the given namespace URI/localname pair.
* The users could get the attributes with the
* following combinations of pairs.
* 1. by prefix and localname pair (here the namespace URI(i.e pachURI
* has to be a empty string)) or
* 2. by namespace URI and localname pair (here the prefix
* (i.e pachPrefix has to be a empty string)).
* The operation behavior depends on the TYPE of the node.
*/
AXISC_STORAGE_CLASS_INFO
AXISCHANDLE axiscBasicNodeGetAttribute(AXISCHANDLE basicNode, AxiscChar * pachPrefix,
AxiscChar * pachURI,
AxiscChar * pachLocalname);
/**
* Returns the first Attribute of this node. The operation
* behavior depends on the TYPE of the node.
*/
AXISC_STORAGE_CLASS_INFO
AXISCHANDLE axiscBasicNodeGetFirstAttribute(AXISCHANDLE basicNode);
/**
* Returns the last Attribute of this node. The operation
* behavior depends on the TYPE of the node.
*/
AXISC_STORAGE_CLASS_INFO
AXISCHANDLE axiscBasicNodeGetLastAttribute(AXISCHANDLE basicNode);
/**
* Returns the next Attribute of this node. The operation
* behavior depends on the TYPE of the node.
*/
AXISC_STORAGE_CLASS_INFO
AXISCHANDLE axiscBasicNodeGetNextAttribute(AXISCHANDLE basicNode);
/**
* Returns the current Attribute of this node. The operation
* behavior depends on the TYPE of the node.
*/
AXISC_STORAGE_CLASS_INFO
AXISCHANDLE axiscBasicNodeGetCurrentAttribute(AXISCHANDLE basicNode);
/**
* Creates an Attribute and adds it to this Basic Node.
*
* @param localname The local name of the attribute.
* @param prefix The prefix of the attribute.
* @param uri The namespace uri of the attribute.
* @param value The value of the attribute.
*
* @return A pointer to the created Attribute will be returned.
*/
AXISC_STORAGE_CLASS_INFO
AXISCHANDLE axiscBasicNodeCreateAttribute(AXISCHANDLE basicNode, const AxiscChar * localname,
const AxiscChar * prefix,
const AxiscChar * uri,
const AxiscChar * value);
/**
* Returns the local name of this node. The operation
* behavior depends on the TYPE of the node.
*
* @return The localname of this element.
*/
AXISC_STORAGE_CLASS_INFO
const AxiscChar * axiscBasicNodeGetLocalName(AXISCHANDLE basicNode);
/**
* Returns the number of child elements of this element. The operation
* behavior depends on the TYPE of the node.
*
* @return The number of child elements of this element. The return value
* behavior depends on the TYPE of the node.
*/
AXISC_STORAGE_CLASS_INFO
int axiscBasicNodeGetNoOfChildren(AXISCHANDLE basicNode);
/**
* Gets the first Child Node of this Complex Element. The operation
* behavior depends on the TYPE of the node.
*
* @return The first Child Node of this Element.
*/
AXISC_STORAGE_CLASS_INFO
AXISCHANDLE axiscBasicNodeGetFirstChildBasicNode(AXISCHANDLE basicNode);
/**
* Gets the last Child Node of this Complex Element. The operation
* behavior depends on the TYPE of the node.
*
* @return The last Child Node of this Element.
*/
AXISC_STORAGE_CLASS_INFO
AXISCHANDLE axiscBasicNodeGetLastChildBasicNode(AXISCHANDLE basicNode);
/**
* Get the Child Node of the given position. The operation behavior
* depends on the TYPE of the node.
*
* @param iChildPosition The child position.
* @return The Child Node of the given position.
*/
AXISC_STORAGE_CLASS_INFO
AXISCHANDLE axiscBasicNodeGetChildBasicNode(AXISCHANDLE basicNode, int iChildPosition);
/**
* Adds the given child node to this Element. The operation behavior
* depends on the TYPE of the node.
*
* @param pBasicNode the child node to be added to this Element.
* @return AXIS_SUCCESS to indicate successfull operation.
*/
AXISC_STORAGE_CLASS_INFO
int axiscBasicNodeAddChild(AXISCHANDLE basicNode, AXISCHANDLE pBasicNode);
/**
* Gets the Node Type of the Element.
*
* @return The Node Type of the Element.
*/
AXISC_STORAGE_CLASS_INFO
AXISC_NODE_TYPE axiscBasicNodeGetNodeType(AXISCHANDLE basicNode);
/**
* Gets and return the value of this Element. The operation behavior
* depends on the TYPE of the node.
*
* @return The value of this Element.
*/
AXISC_STORAGE_CLASS_INFO
const AxiscChar * axiscBasicNodeGetValue(AXISCHANDLE basicNode);
/**
* Sets the value of this Element. The operation behavior
* depends on the TYPE of the node.
*
* @param pachValue The value to be set
* @return AXIS_SUCCESS to indicate success.
*/
AXISC_STORAGE_CLASS_INFO
int axiscBasicNodeSetValue(AXISCHANDLE basicNode, const AxiscChar * pachValue);
/**
* Sets the namespace URI of this Element. The operation behavior
* depends on the TYPE of the node.
*
* @param sURI the namespace URI of this Element.
* @return AXIS_SUCCESS to indicate successfull operation.
*/
AXISC_STORAGE_CLASS_INFO
int axiscBasicNodeSetURI(AXISCHANDLE basicNode, const AxiscChar * sURI);
/**
* Sets the local name of this Element. The operation behavior
* depends on the TYPE of the node.
*
* @param sLocalName the local name of this Element.
* @return AXIS_SUCCESS to indicate successfull operation.
*/
AXISC_STORAGE_CLASS_INFO
int axiscBasicNodeSetLocalName(AXISCHANDLE basicNode, const AxiscChar * sLocalName);
/**
* Sets the prefix of this Element. The operation behavior
* depends on the TYPE of the node.
*
* @param sPrefix the prefix of this Element.
* @return AXIS_SUCCESS to indicate successfull operation.
*/
AXISC_STORAGE_CLASS_INFO
int axiscBasicNodeSetPrefix(AXISCHANDLE basicNode, const AxiscChar * sPrefix);
/**
* Returns the namespace URI of this node. The operation behavior
* depends on the TYPE of the node.
*/
AXISC_STORAGE_CLASS_INFO
const AxiscChar * axiscBasicNodeGetURI(AXISCHANDLE basicNode);
/**
* Returns the prefix of this node. The operation behavior
* depends on the TYPE of the node.
*/
AXISC_STORAGE_CLASS_INFO
const AxiscChar * axiscBasicNodeGetPrefix(AXISCHANDLE basicNode);
/**
* Create a clone of the current BasicNode instance
* @return clone of the current BasicNode instance
*/
AXISC_STORAGE_CLASS_INFO
AXISCHANDLE axiscBasicNodeCloneBasicNode(AXISCHANDLE basicNode);
/**
* Destructor
*/
AXISC_STORAGE_CLASS_INFO
void axiscBasicNodeDestroy(AXISCHANDLE basicNode);
#ifdef __cplusplus
}
#endif
#endif /* BASICNODE_INCLUDED */