You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ro...@apache.org on 2004/06/14 16:50:41 UTC

cvs commit: ws-axis/c/include/axis/server ComplexElement.h

roshan      2004/06/14 07:50:41

  Added:       c/include/axis/server ComplexElement.h
  Log:
  added the header file to this include directory
  
  Revision  Changes    Path
  1.1                  ws-axis/c/include/axis/server/ComplexElement.h
  
  Index: ComplexElement.h
  ===================================================================
  /*
   *   Copyright 2003-2004 The Apache Software Foundation.
   *
   *   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.
   *
   *
   */
  
  /*
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   *
   */
  
  /*
   * Revision 1.1  2004/05/25 samisa
   * Added copy constructure and clone for copy constructing derived classes
   */
  
  /*
   * Revision 1.2  2004/06/13 roshan
   * Added doxygen comments to help autobuild API docs
   */
  
  #if !defined(AXIS_COMPLEXELEMENT_H__OF_AXIS_INCLUDED_)
  #define AXIS_COMPLEXELEMENT_H__OF_AXIS_INCLUDED_
  
  #ifdef WIN32
  #pragma warning (disable : 4786)
  #endif
  
  #include <list>
  #include <axis/server/BasicNode.h>
  
  using namespace std;
  
  /**
   * @class ComplexElement
   * @brief interface for the ComplexElement class.
   *
   * @author Roshan Weerasuriya (roshan@opensource.lk, roshanw@jkcsworld.com)
   * @author Samisa Abeysinghe (sabeysinghe@virtusa.com)
  */
  
  class ComplexElement : public BasicNode
  {
  public:
      ComplexElement(AxisChar* pachLocalName, AxisChar* pachPrefix, AxisChar* pachUri);
  
      /**
        * Returns the number of child elements of this ComplexElement.
        *
        * @return The number of child elements of this ComplexElement.
        */
      int getNoOfChildren();
  
      /**
        * Get the Child Node of the given position.
        *
        * @param iChildPosition The child position.
        * @return The Child Node of the given position.
        */
      const BasicNode* getChild(int iChildPosition) const;
  
      /**
        * Gets the last Child Node of this Complex Element.
        *
        * @return The last Child Node of this Complex Element.
        */
      const BasicNode* getLastChild() const;
  
      /**
        * Gets the first Child Node of this Complex Element.
        *
        * @return The first Child Node of this Complex Element.
        */
      const BasicNode* getFirstChild() const;
  
      /**
        * Adds the given child node to this Complex Element.
        *
        * @param pBasicNode the child node to be added to this Complex Element.
        * @return AXIS_SUCCESS to indicate successfull operation.
        */
      int addChild(BasicNode* pBasicNode);
  
      /**
        * Gets the Node Type of the Complex Element which is ELEMENT_NODE.
        *
        * @return The Node Type of the Complex Element which is ELEMENT_NODE.
        */
      NODE_TYPE getNodeType() const;
  
      /**
        * Sets the namespace URI of this Complex Element.
        *
        * @param pachURI the namespace URI of this Complex Element.
        * @return AXIS_SUCCESS to indicate successfull operation.
        */
      int setURI(const AxisChar* pachURI);
  
      /**
        * Sets the local name of this Complex Element.
        *
        * @param pachLocalName the local name of this Complex Element.
        * @return AXIS_SUCCESS to indicate successfull operation.
        */
      int setLocalName(const AxisChar* pachLocalName);
  
      /**
        * Sets the prefix of this Complex Element.
        *
        * @param pachPrefix the prefix of this Complex Element.
        * @return AXIS_SUCCESS to indicate successfull operation.
        */
      int setPrefix(const AxisChar* pachPrefix);
  
      int serialize(SoapSerializer& pSZ);
  
      int serialize(SoapSerializer& pSZ, list<AxisChar*>& lstTmpNameSpaceStack);
  
      /**
        * The Constructor.
        */
      ComplexElement();
      ComplexElement(const ComplexElement& rCopy);
      BasicNode* clone();
  
      /**
        * The Destructor.
        */
      virtual ~ComplexElement();
  
      /*
       * This method is overridden to do nothing always because this is 
       *  a Complex Element. Instead of using this method, a user of a 
       *  ComplexElement must get the childeren of this ComplexElement and
       *  has to traverse through the childrean in a appropriate manner
       *  in order to set there values.
       *  A user of a ComplexElement should not use this method.
       * @param
       * @return Always return fail (AXIS_FAIL).
       */
      int setValue(const AxisChar* pachValue) {return AXIS_FAIL;}
  
      /*
       * This method is overridden to return NULL always because this is 
       *  a Complex Element. Instead of using this method, a user of a 
       *  ComplexElement must get the childeren of this ComplexElement and
       *  has to traverse through the childrean in a appropriate manner
       *  in order to get there values.
       *  A user of a ComplexElement should not use this method.
       * @param
       * @return Always return NULL to indicate unsuccessful.
       */
      const AxisChar* getValue() const {return NULL;}
  
  private:
      int iNoOfChildren;
      int serializeChildren(SoapSerializer& pSZ);
      int serializeChildren(SoapSerializer& pSZ, list<AxisChar*>& lstTmpNameSpaceStack);
      bool isSerializable();
      list<BasicNode*> m_children;
      AxisChar* m_pachPrefix;
      AxisChar* m_pachLocalName;
      AxisChar* m_pachURI;
  };
  
  #endif