(file) Return to ContentLanguageList.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

Diff for /pegasus/src/Pegasus/Common/ContentLanguageList.cpp between version 1.2 and 1.7

version 1.2, 2006/01/30 16:16:48 version 1.7, 2008/12/02 09:00:46
Line 1 
Line 1 
 //%2006////////////////////////////////////////////////////////////////////////  //%LICENSE////////////////////////////////////////////////////////////////
 // //
 // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development  // Licensed to The Open Group (TOG) under one or more contributor license
 // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.  // agreements.  Refer to the OpenPegasusNOTICE.txt file distributed with
 // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;  // this work for additional information regarding copyright ownership.
 // IBM Corp.; EMC Corporation, The Open Group.  // Each contributor licenses this file to you under the OpenPegasus Open
 // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;  // Source License; you may not use this file except in compliance with the
 // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.  // License.
 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;  //
 // EMC Corporation; VERITAS Software Corporation; The Open Group.  // Permission is hereby granted, free of charge, to any person obtaining a
 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;  // copy of this software and associated documentation files (the "Software"),
 // EMC Corporation; Symantec Corporation; The Open Group.  // to deal in the Software without restriction, including without limitation
 //  // the rights to use, copy, modify, merge, publish, distribute, sublicense,
 // Permission is hereby granted, free of charge, to any person obtaining a copy  // and/or sell copies of the Software, and to permit persons to whom the
 // of this software and associated documentation files (the "Software"), to  // Software is furnished to do so, subject to the following conditions:
 // deal in the Software without restriction, including without limitation the  //
 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or  // The above copyright notice and this permission notice shall be included
 // sell copies of the Software, and to permit persons to whom the Software is  // in all copies or substantial portions of the Software.
 // furnished to do so, subject to the following conditions:  //
 //  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT  // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR  // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT  // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN  // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION  
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  
 // //
 //==============================================================================  //////////////////////////////////////////////////////////////////////////
 //  
 // Author: Humberto Rivero (hurivero@us.ibm.com)  
 //  
 // Modified By: Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)  
 // //
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
Line 43 
Line 37 
  
 PEGASUS_NAMESPACE_BEGIN PEGASUS_NAMESPACE_BEGIN
  
 //////////////////////////////////////////////////////////////  
 // //
 // ContentLanguageListRep  // Implementation Notes:
   // =====================
   //
   // See the implemetnation notes in AcceptLanguageList.cpp for an explanation
   // of how we overlay the _rep pointer with the array class.
 // //
 //////////////////////////////////////////////////////////////  
  
 class ContentLanguageListRep  typedef Array<LanguageTag> LanguageTagArray;
   
   static inline LanguageTagArray& GetLanguageTagArray(
       ContentLanguageList* list)
 { {
 public:      return *reinterpret_cast<LanguageTagArray*>(list);
     Array<LanguageTag> container;  }
 };  
  
 //////////////////////////////////////////////////////////////  static inline const LanguageTagArray& GetLanguageTagArray(
 //      const ContentLanguageList* list)
 // ContentLanguageList  {
 //      return *reinterpret_cast<const LanguageTagArray*>(list);
 //////////////////////////////////////////////////////////////  }
  
 ContentLanguageList::ContentLanguageList() ContentLanguageList::ContentLanguageList()
 { {
     _rep = new ContentLanguageListRep();      LanguageTagArray& self = GetLanguageTagArray(this);
       new (&self) LanguageTagArray();
 } }
  
 ContentLanguageList::ContentLanguageList( ContentLanguageList::ContentLanguageList(
     const ContentLanguageList& contentLanguages)      const ContentLanguageList& x)
 { {
     _rep = new ContentLanguageListRep();      LanguageTagArray& self = GetLanguageTagArray(this);
     AutoPtr<ContentLanguageListRep> rep(_rep);      const LanguageTagArray& other = GetLanguageTagArray(&x);
       new (&self) LanguageTagArray(other);
     _rep->container = contentLanguages._rep->container;  
   
     rep.release();  
 } }
  
 ContentLanguageList::~ContentLanguageList() ContentLanguageList::~ContentLanguageList()
 { {
     delete _rep;      LanguageTagArray& self = GetLanguageTagArray(this);
       self.~LanguageTagArray();
 } }
  
 ContentLanguageList& ContentLanguageList::operator=( ContentLanguageList& ContentLanguageList::operator=(
     const ContentLanguageList& contentLanguages)      const ContentLanguageList& x)
 {  
     if (&contentLanguages != this)  
     {     {
         _rep->container = contentLanguages._rep->container;      LanguageTagArray& self = GetLanguageTagArray(this);
     }      const LanguageTagArray& other = GetLanguageTagArray(&x);
       self = other;
     return *this;     return *this;
 } }
  
 Uint32 ContentLanguageList::size() const Uint32 ContentLanguageList::size() const
 { {
     return _rep->container.size();      const LanguageTagArray& self = GetLanguageTagArray(this);
       return self.size();
 } }
  
 LanguageTag ContentLanguageList::getLanguageTag(Uint32 index) const LanguageTag ContentLanguageList::getLanguageTag(Uint32 index) const
 { {
     return LanguageTag(_rep->container[index]);      const LanguageTagArray& self = GetLanguageTagArray(this);
       return self[index];
 } }
  
 void ContentLanguageList::append(const LanguageTag& languageTag) void ContentLanguageList::append(const LanguageTag& languageTag)
 { {
       LanguageTagArray& self = GetLanguageTagArray(this);
   
     // Disallow "*" language tag     // Disallow "*" language tag
     if (languageTag.toString() == "*")     if (languageTag.toString() == "*")
     {     {
Line 113 
Line 113 
         throw InvalidContentLanguageHeader(MessageLoader::getMessage(parms));         throw InvalidContentLanguageHeader(MessageLoader::getMessage(parms));
     }     }
  
     _rep->container.append(languageTag);      self.append(languageTag);
 } }
  
 void ContentLanguageList::remove(Uint32 index) void ContentLanguageList::remove(Uint32 index)
 { {
     _rep->container.remove(index);      LanguageTagArray& self = GetLanguageTagArray(this);
       self.remove(index);
 } }
  
 Uint32 ContentLanguageList::find(const LanguageTag& languageTag) const Uint32 ContentLanguageList::find(const LanguageTag& languageTag) const
 { {
     for (Uint32 i = 0; i < _rep->container.size(); i++)      const LanguageTagArray& self = GetLanguageTagArray(this);
     {  
         if (languageTag == _rep->container[i])      for (Uint32 i = 0; i < self.size(); i++)
         {         {
           if (languageTag == self[i])
             return i;             return i;
         }         }
     }  
     return PEG_NOT_FOUND;     return PEG_NOT_FOUND;
 } }
  
 void ContentLanguageList::clear() void ContentLanguageList::clear()
 { {
     _rep->container.clear();      LanguageTagArray& self = GetLanguageTagArray(this);
       self.clear();
 } }
  
 Boolean ContentLanguageList::operator==(  Boolean ContentLanguageList::operator==(const ContentLanguageList& x) const
     const ContentLanguageList& contentLanguages) const  
 {  
     if (_rep->container.size() != contentLanguages._rep->container.size())  
     {     {
       const LanguageTagArray& self = GetLanguageTagArray(this);
       const LanguageTagArray& other = GetLanguageTagArray(&x);
   
       if (self.size() != other.size())
         return false;         return false;
     }  
  
     for (Uint32 i = 0; i < _rep->container.size(); i++)      for (Uint32 i = 0; i < self.size(); i++)
     {  
         if (_rep->container[i] != contentLanguages._rep->container[i])  
         {         {
           if (self[i] != other[i])
             return false;             return false;
         }         }
     }  
     return true;     return true;
 } }
  
 Boolean ContentLanguageList::operator!=(  Boolean ContentLanguageList::operator!=( const ContentLanguageList& x) const
     const ContentLanguageList& contentLanguages) const  
 { {
     return !(*this == contentLanguages);      return !operator==(x);
 } }
  
 PEGASUS_NAMESPACE_END PEGASUS_NAMESPACE_END


Legend:
Removed from v.1.2  
changed lines
  Added in v.1.7

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2