reSIProcate/stack  9694
Public Types | Public Member Functions | Static Public Attributes | Private Attributes | Friends
resip::HeaderFieldValue Class Reference

#include <HeaderFieldValue.hxx>

Collaboration diagram for resip::HeaderFieldValue:
Collaboration graph
[legend]

List of all members.

Public Types

enum  CopyPaddingEnum { CopyPadding }
enum  NoOwnershipEnum { NoOwnership }

Public Member Functions

 HeaderFieldValue ()
 HeaderFieldValue (const char *field, unsigned int fieldLength)
 HeaderFieldValue (const HeaderFieldValue &hfv)
 HeaderFieldValue (const HeaderFieldValue &hfv, CopyPaddingEnum)
 HeaderFieldValue (const HeaderFieldValue &hfv, NoOwnershipEnum)
HeaderFieldValueoperator= (const HeaderFieldValue &)
HeaderFieldValuecopyWithPadding (const HeaderFieldValue &rhs)
 ~HeaderFieldValue ()
EncodeStreamencode (EncodeStream &str) const
void init (const char *field, size_t length, bool own)
const char * getBuffer () const
unsigned int getLength () const
void clear ()
void toShareData (Data &data) const
void toBorrowData (Data &data)

Static Public Attributes

static const HeaderFieldValue Empty

Private Attributes

const char * mField
unsigned int mFieldLength
bool mMine

Friends

EncodeStreamoperator<< (EncodeStream &, HeaderFieldValue &)

Detailed Description

Definition at line 20 of file HeaderFieldValue.hxx.


Member Enumeration Documentation

Enumerator:
CopyPadding 

Definition at line 25 of file HeaderFieldValue.hxx.

Enumerator:
NoOwnership 

Definition at line 30 of file HeaderFieldValue.hxx.


Constructor & Destructor Documentation

resip::HeaderFieldValue::HeaderFieldValue ( ) [inline]

Definition at line 35 of file HeaderFieldValue.hxx.

         : mField(0), //this must be initialized to 0 or ParserCategory will parse
           mFieldLength(0),
           mMine(false)
      {}
HeaderFieldValue::HeaderFieldValue ( const char *  field,
unsigned int  fieldLength 
)

Definition at line 25 of file HeaderFieldValue.cxx.

   : mField(field),
     mFieldLength(fieldLength),
     mMine(false)
{}
HeaderFieldValue::HeaderFieldValue ( const HeaderFieldValue hfv)

Definition at line 31 of file HeaderFieldValue.cxx.

References mField, and mFieldLength.

   : mField(0),
     mFieldLength(hfv.mFieldLength),
     mMine(true)
{
   if(mFieldLength)
   {
      char* newField = new char[mFieldLength];
      memcpy(newField, hfv.mField, mFieldLength);
      mField=newField;
   }
}
HeaderFieldValue::HeaderFieldValue ( const HeaderFieldValue hfv,
CopyPaddingEnum  e 
)

Definition at line 90 of file HeaderFieldValue.cxx.

References resip::MsgHeaderScanner::allocateBuffer(), mField, and mFieldLength.

   : mField(0),
     mFieldLength(hfv.mFieldLength),
     mMine(true)
{
   char* newField = MsgHeaderScanner::allocateBuffer(mFieldLength);
   memcpy(newField, hfv.mField, mFieldLength);
   mField=newField;
}

Here is the call graph for this function:

HeaderFieldValue::HeaderFieldValue ( const HeaderFieldValue hfv,
NoOwnershipEnum  n 
)

Definition at line 100 of file HeaderFieldValue.cxx.

   : mField(hfv.mField),
     mFieldLength(hfv.mFieldLength),
     mMine(false)
{
   // ?bwc? assert(!hfv.mMine); ?
}
HeaderFieldValue::~HeaderFieldValue ( )

Definition at line 108 of file HeaderFieldValue.cxx.

References mField, and mMine.

{
  if (mMine)
  {
     delete[] mField;
  }
}

Member Function Documentation

void resip::HeaderFieldValue::clear ( void  ) [inline]

Definition at line 65 of file HeaderFieldValue.hxx.

References mField, mFieldLength, and mMine.

Referenced by resip::LazyParser::clear(), and resip::SipMessage::clear().

      {
         if (mMine)
         {
           delete[] mField;
           mMine=false;
         }
        mField=0;
        mFieldLength=0;
      }
HeaderFieldValue & HeaderFieldValue::copyWithPadding ( const HeaderFieldValue rhs)

Definition at line 68 of file HeaderFieldValue.cxx.

References resip::MsgHeaderScanner::allocateBuffer(), mField, mFieldLength, and mMine.

Referenced by resip::SipMessage::init().

{
   if(this!=&rhs)
   {
      mFieldLength=rhs.mFieldLength;
      if(mMine) delete [] mField;
      mMine=true;
      if(mFieldLength)
      {
         char* newField = MsgHeaderScanner::allocateBuffer(mFieldLength);
         memcpy(newField, rhs.mField, mFieldLength);
         mField=newField;
      }
      else
      {
         mField=0;
      }
   }
   
   return *this;
}

Here is the call graph for this function:

EncodeStream & HeaderFieldValue::encode ( EncodeStream str) const
const char* resip::HeaderFieldValue::getBuffer ( ) const [inline]
unsigned int resip::HeaderFieldValue::getLength ( ) const [inline]

Definition at line 64 of file HeaderFieldValue.hxx.

References mFieldLength.

Referenced by resip::LazyParser::doParse(), and resip::SipMessage::encode().

{return mFieldLength;}
void resip::HeaderFieldValue::init ( const char *  field,
size_t  length,
bool  own 
) [inline]

Definition at line 51 of file HeaderFieldValue.hxx.

References mField, mFieldLength, and mMine.

Referenced by resip::SipMessage::setBody().

      {
         if(mMine)
         {
            delete [] mField;
         }
         
         mField=field;
         mFieldLength=(unsigned int)length;
         mMine=own;
      }
HeaderFieldValue & HeaderFieldValue::operator= ( const HeaderFieldValue rhs)

Definition at line 45 of file HeaderFieldValue.cxx.

References mField, mFieldLength, and mMine.

{
   if(this!=&rhs)
   {
      mFieldLength=rhs.mFieldLength;
      if(mMine) delete [] mField;
      mMine=true;
      if(mFieldLength)
      {
         char* newField = new char[mFieldLength];
         memcpy(newField, rhs.mField, mFieldLength);
         mField=newField;
      }
      else
      {
         mField=0;
      }
   }
   
   return *this;
}
void resip::HeaderFieldValue::toBorrowData ( Data data) [inline]

Definition at line 83 of file HeaderFieldValue.hxx.

References resip::Data::Borrow, mField, mFieldLength, and resip::Data::setBuf().

      {
         data.setBuf(Data::Borrow, mField, mFieldLength);
      }

Here is the call graph for this function:

void resip::HeaderFieldValue::toShareData ( Data data) const [inline]

Definition at line 77 of file HeaderFieldValue.hxx.

References mField, mFieldLength, resip::Data::setBuf(), and resip::Data::Share.

Referenced by resip::SipMessage::encode(), and resip::SipMessage::encodeEmbedded().

      {
         data.setBuf(Data::Share, mField, mFieldLength);
      }

Here is the call graph for this function:


Friends And Related Function Documentation

EncodeStream& operator<< ( EncodeStream ,
HeaderFieldValue  
) [friend]

Member Data Documentation

Definition at line 23 of file HeaderFieldValue.hxx.

Referenced by resip::HeaderFieldValueList::push_back().

const char* resip::HeaderFieldValue::mField [private]
unsigned int resip::HeaderFieldValue::mFieldLength [private]

Definition at line 92 of file HeaderFieldValue.hxx.

Referenced by clear(), copyWithPadding(), init(), operator=(), and ~HeaderFieldValue().


The documentation for this class was generated from the following files: