Public Member Functions | Private Attributes

ACEXML_AttributesImpl Class Reference

ACEXML_AttributesImpl provides the default implementation of interface ACEXML_Attributes. More...

#include <ACEXML/common/AttributesImpl.h>

Inheritance diagram for ACEXML_AttributesImpl:
Inheritance graph
[legend]
Collaboration diagram for ACEXML_AttributesImpl:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 ACEXML_AttributesImpl (int size=ACEXML_AttributesImpl_Default_Size)
 ACEXML_AttributesImpl (const ACEXML_AttributesImpl &attrs)
virtual ~ACEXML_AttributesImpl (void)
virtual int addAttribute (const ACEXML_Char *uri, const ACEXML_Char *localName, const ACEXML_Char *qName, const ACEXML_Char *type, const ACEXML_Char *value)
virtual int addAttribute (const ACEXML_Attribute &att)
virtual int isDuplicate (const ACEXML_Char *uri, const ACEXML_Char *localName, const ACEXML_Char *qName)
virtual int removeAttribute (size_t index)
virtual int getIndex (const ACEXML_Char *qName)
virtual int getIndex (const ACEXML_Char *uri, const ACEXML_Char *localPart)
virtual size_t getLength (void)
virtual const ACEXML_ChargetLocalName (size_t index)
virtual const ACEXML_ChargetQName (size_t index)
virtual const ACEXML_ChargetType (size_t index)
virtual const ACEXML_ChargetType (const ACEXML_Char *qName)
virtual const ACEXML_ChargetType (const ACEXML_Char *uri, const ACEXML_Char *localPart)
virtual const ACEXML_ChargetURI (size_t index)
virtual const ACEXML_ChargetValue (size_t index)
virtual const ACEXML_ChargetValue (const ACEXML_Char *qName)
virtual const ACEXML_ChargetValue (const ACEXML_Char *uri, const ACEXML_Char *localPart)
virtual int setAttribute (size_t index, const ACEXML_Char *uri, const ACEXML_Char *localName, const ACEXML_Char *qName, const ACEXML_Char *type, const ACEXML_Char *value)
virtual int setLocalName (size_t index, const ACEXML_Char *localName)
virtual int setQName (size_t index, const ACEXML_Char *qName)
virtual int setURI (size_t index, const ACEXML_Char *uri)
virtual int setType (size_t index, const ACEXML_Char *type)
virtual int setValue (size_t index, const ACEXML_Char *value)

Private Attributes

ACEXML_Attribute_Array attrs_
 Container for all attributes.

Detailed Description

ACEXML_AttributesImpl provides the default implementation of interface ACEXML_Attributes.

This class provides a default implementation of the SAX2 Attributes interface, with the addition of manipulators so that the list can be modified or reused.

There are two typical uses of this class:

This class replaces the now-deprecated SAX1 AttributeListImpl class; in addition to supporting the updated Attributes interface rather than the deprecated AttributeList interface, it also includes a much more efficient implementation using a single array rather than a set of Vectors.

See also:
ACEXML_Attributes

Definition at line 143 of file AttributesImpl.h.


Constructor & Destructor Documentation

ACEXML_AttributesImpl::ACEXML_AttributesImpl ( int  size = ACEXML_AttributesImpl_Default_Size  ) 

Initialize an AttributesImpl that holds size attributes.

Definition at line 9 of file AttributesImpl.cpp.

  : attrs_ (size)
{
  this->attrs_.size (0);        // attrs array contains nothing
}

ACEXML_AttributesImpl::ACEXML_AttributesImpl ( const ACEXML_AttributesImpl attrs  ) 

Definition at line 15 of file AttributesImpl.cpp.

  : ACEXML_Attributes (attrs),
    attrs_ (attrs.attrs_.size ())
{
  for (size_t i = 0; i < attrs.attrs_.size (); i++)
    this->attrs_[i] = attrs.attrs_[i];
}

ACEXML_AttributesImpl::~ACEXML_AttributesImpl ( void   )  [virtual]

Definition at line 24 of file AttributesImpl.cpp.

{
}


Member Function Documentation

int ACEXML_AttributesImpl::addAttribute ( const ACEXML_Char uri,
const ACEXML_Char localName,
const ACEXML_Char qName,
const ACEXML_Char type,
const ACEXML_Char value 
) [virtual]

Add a new attribute using the argument(s) supplied. Return -1 if an attribute with the same name already exists.

Definition at line 29 of file AttributesImpl.cpp.

{
  if (this->isDuplicate (uri, localName, qName))
    return -1;
  size_t length = this->attrs_.size ();
  this->attrs_.size (length+1);
  this->setAttribute (length,
                      uri,
                      localName,
                      qName,
                      type,
                      value);
  return static_cast<int> (length);
}

int ACEXML_AttributesImpl::addAttribute ( const ACEXML_Attribute att  )  [virtual]

Definition at line 49 of file AttributesImpl.cpp.

{
  if (this->isDuplicate (att.uri(), att.localName(), att.qName()))
    return -1;
  size_t length = this->attrs_.size ();
  this->attrs_.size (length+1);
  this->attrs_[length] = att;
  return static_cast<int> (length);
}

int ACEXML_AttributesImpl::getIndex ( const ACEXML_Char qName  )  [virtual]

Look up the index of an attribute by XML 1.0 qualified name. Return -1 if we fail to find a match.

Implements ACEXML_Attributes.

Definition at line 96 of file AttributesImpl.cpp.

{
  for (size_t i = 0; i < this->attrs_.size (); i++)
    if (ACE_OS::strcmp (qName, this->attrs_[i].qName ()) == 0)
      return static_cast<int> (i);

  return -1;
}

int ACEXML_AttributesImpl::getIndex ( const ACEXML_Char uri,
const ACEXML_Char localPart 
) [virtual]

Look up the index of an attribute by Namespace name. Return -1 if we fail to find a match.

Implements ACEXML_Attributes.

Definition at line 106 of file AttributesImpl.cpp.

{
  for (size_t i = 0; i < this->attrs_.size (); i++)
    if (ACE_OS::strcmp (uri, this->attrs_[i].uri ()) == 0 &&
        ACE_OS::strcmp (localPart, this->attrs_[i].localName ()) == 0)
      return static_cast<int> (i);

  return -1;
}

size_t ACEXML_AttributesImpl::getLength ( void   )  [virtual]

Return the number of attributes in the list.

Implements ACEXML_Attributes.

Definition at line 118 of file AttributesImpl.cpp.

{
  return this->attrs_.size ();
}

const ACEXML_Char * ACEXML_AttributesImpl::getLocalName ( size_t  index  )  [virtual]

Look up an attribute's local name by index. Return 0 if index is out of range.

Implements ACEXML_Attributes.

Definition at line 124 of file AttributesImpl.cpp.

{
  if (index < this->attrs_.size ())
    return this->attrs_[index].localName ();
  return 0;
}

const ACEXML_Char * ACEXML_AttributesImpl::getQName ( size_t  index  )  [virtual]

Look up an attribute's XML 1.0 qualified name by index. Return 0 if index is out of range.

Implements ACEXML_Attributes.

Definition at line 133 of file AttributesImpl.cpp.

{
  if (index < this->attrs_.size ())
    return this->attrs_[index].qName ();
  return 0;
}

const ACEXML_Char * ACEXML_AttributesImpl::getType ( size_t  index  )  [virtual]

Look up an attribute's type by index. Return 0 if index is out of range.

Implements ACEXML_Attributes.

Definition at line 141 of file AttributesImpl.cpp.

{
  if (index < this->attrs_.size ())
    return this->attrs_[index].type ();
  return 0;
}

const ACEXML_Char * ACEXML_AttributesImpl::getType ( const ACEXML_Char qName  )  [virtual]

Look up an attribute's type by XML 1.0 qualified name. Return 0 if we fail to find a match.

Implements ACEXML_Attributes.

Definition at line 150 of file AttributesImpl.cpp.

{
  for (size_t i = 0; i < this->attrs_.size (); i++)
    if (ACE_OS::strcmp (qName, this->attrs_[i].qName ()) == 0)
      return this->attrs_[i].type ();

  return 0;
}

const ACEXML_Char * ACEXML_AttributesImpl::getType ( const ACEXML_Char uri,
const ACEXML_Char localPart 
) [virtual]

Look up an attribute's type by Namespace name. Return 0 if we fail to find a match.

Implements ACEXML_Attributes.

Definition at line 160 of file AttributesImpl.cpp.

{
  for (size_t i = 0; i < this->attrs_.size (); i++)
    if (ACE_OS::strcmp (uri, this->attrs_[i].uri ()) == 0 &&
        ACE_OS::strcmp (localPart, this->attrs_[i].localName ()) == 0)
      return this->attrs_[i].type ();

  return 0;
}

const ACEXML_Char * ACEXML_AttributesImpl::getURI ( size_t  index  )  [virtual]

Look up an attribute's Namespace URI by index. Return 0 if index is out of range.

Implements ACEXML_Attributes.

Definition at line 173 of file AttributesImpl.cpp.

{
  if (index < this->attrs_.size ())
    return this->attrs_[index].uri ();
  return 0;
}

const ACEXML_Char * ACEXML_AttributesImpl::getValue ( const ACEXML_Char qName  )  [virtual]

Look up an attribute's value by XML 1.0 qualified name. Return 0 if we fail to find a match.

Implements ACEXML_Attributes.

Definition at line 190 of file AttributesImpl.cpp.

{
  for (size_t i = 0; i < this->attrs_.size (); i++)
    if (ACE_OS::strcmp (qName, this->attrs_[i].qName ()) == 0)
      return this->attrs_[i].value ();

  return 0;
}

const ACEXML_Char * ACEXML_AttributesImpl::getValue ( const ACEXML_Char uri,
const ACEXML_Char localPart 
) [virtual]

Look up an attribute's value by Namespace name. Return 0 if we fail to find a match.

Implements ACEXML_Attributes.

Definition at line 200 of file AttributesImpl.cpp.

{
  for (size_t i = 0; i < this->attrs_.size (); i++)
    if (ACE_OS::strcmp (uri, this->attrs_[i].uri ()) == 0 &&
        ACE_OS::strcmp (localPart, this->attrs_[i].localName ()) == 0)
      return this->attrs_[i].value ();

  return 0;
}

const ACEXML_Char * ACEXML_AttributesImpl::getValue ( size_t  index  )  [virtual]

Look up an attribute's value by index. Return 0 if index is out of range.

Implements ACEXML_Attributes.

Definition at line 182 of file AttributesImpl.cpp.

{
  if (index < this->attrs_.size ())
    return this->attrs_[index].value ();
  return 0;
}

int ACEXML_AttributesImpl::isDuplicate ( const ACEXML_Char uri,
const ACEXML_Char localName,
const ACEXML_Char qName 
) [virtual]

Check for duplicate attributes.

Definition at line 60 of file AttributesImpl.cpp.

{
  for (size_t i = 0; i < this->attrs_.size(); ++i)
    {
      if (ACE_OS::strcmp (this->attrs_[i].localName(), localName) == 0)
        {
          if (qName != 0 && this->attrs_[i].qName() != 0
              && ACE_OS::strcmp (this->attrs_[i].qName(), qName) == 0)
            {
              if (uri != 0 && this->attrs_[i].uri() != 0
                  && ACE_OS::strcmp (this->attrs_[i].uri(), uri) == 0)
                return 1;
            }
        }
    }
  return 0;
}

int ACEXML_AttributesImpl::removeAttribute ( size_t  index  )  [virtual]

Remove an attribute from the array. Notice that this operation can invalidate previously acquired index value. (It will repack the array.)

Definition at line 81 of file AttributesImpl.cpp.

{
  size_t length = this->attrs_.size ();

  if (index >= length)
    return -1;

  this->attrs_[index] = this->attrs_[length - 1];
  this->attrs_.size (length - 1);

  return 0;
}

int ACEXML_AttributesImpl::setAttribute ( size_t  index,
const ACEXML_Char uri,
const ACEXML_Char localName,
const ACEXML_Char qName,
const ACEXML_Char type,
const ACEXML_Char value 
) [virtual]

Set an attribute at index. Return -1 if index is out of range.

Definition at line 212 of file AttributesImpl.cpp.

{
  if (index < this->attrs_.size ())
    {
      this->attrs_[index].setAttribute (uri,
                                        localName,
                                        qName,
                                        type,
                                        value);
      return 0;
    }

  return -1;
}

int ACEXML_AttributesImpl::setLocalName ( size_t  index,
const ACEXML_Char localName 
) [virtual]

Set the localName of the attribute at index. return -1 if index is out of range.

Definition at line 234 of file AttributesImpl.cpp.

{
  if (index < this->attrs_.size ())
    {
      this->attrs_[index].localName (localName);
      return 0;
    }
  return -1;
}

int ACEXML_AttributesImpl::setQName ( size_t  index,
const ACEXML_Char qName 
) [virtual]

Set the qName of the attribute at index. return -1 if index is out of range.

Definition at line 246 of file AttributesImpl.cpp.

{
  if (index < this->attrs_.size ())
    {
      this->attrs_[index].qName (qName);
      return 0;
    }
  return -1;
}

int ACEXML_AttributesImpl::setType ( size_t  index,
const ACEXML_Char type 
) [virtual]

Set the type of the attribute at index. return -1 if index is out of range.

Definition at line 271 of file AttributesImpl.cpp.

{
  if (index < this->attrs_.size ())
    {
      this->attrs_[index].type (type);
      return 0;
    }
  return -1;
}

int ACEXML_AttributesImpl::setURI ( size_t  index,
const ACEXML_Char uri 
) [virtual]

Set the URI of the attribute at index. return -1 if index is out of range.

Definition at line 259 of file AttributesImpl.cpp.

{
  if (index < this->attrs_.size ())
    {
      this->attrs_[index].uri (uri);
      return 0;
    }
  return -1;
}

int ACEXML_AttributesImpl::setValue ( size_t  index,
const ACEXML_Char value 
) [virtual]

Set the value of the attribute at index. return -1 if index is out of range.

Definition at line 283 of file AttributesImpl.cpp.

{
  if (index < this->attrs_.size ())
    {
      this->attrs_[index].value (value);
      return 0;
    }
  return -1;
}


Member Data Documentation

Container for all attributes.

Definition at line 300 of file AttributesImpl.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines