Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

HrefIdMap.h

Go to the documentation of this file.
00001 // /******************************************************************************\
00002 // *
00003 // * File:          HrefIdMap.h
00004 // * Creation date: June 11, 2001 11:05
00005 // * Author:        ClassBuilder
00006 // *                XXXX
00007 // * Purpose:       Declaration of class 'HrefIdMap'
00008 // *
00009 // * Modifications: @INSERT_MODIFICATIONS(* )
00010 // * June 12, 2001 09:22 WERS
00011 // *     Added method 'RealNode'
00012 // * June 11, 2001 11:41 WERS
00013 // *     Added method 'RealNode'
00014 // * June 11, 2001 11:09 WERS
00015 // *     Added method 'Build'
00016 // * June 11, 2001 11:05 WERS
00017 // *     Added method 'FindReverseHrefId'
00018 // *     Added method 'FindHrefId'
00019 // *     Added method 'FindEqualOrSmallerHrefId'
00020 // *     Added method 'FindEqualOrBiggerHrefId'
00021 // *     Added method 'DestructorInclude'
00022 // *     Added method 'ConstructorInclude'
00023 // *     Added method '~HrefIdMap'
00024 // *     Added method 'HrefIdMap'
00025 // *     Added relation 'HrefIdMap <>-->> HrefId'
00026 // *
00027 // *
00028 // \******************************************************************************/
00029 #ifndef _HREFIDMAP_H
00030 #define _HREFIDMAP_H
00031 
00032 //@START_USER1
00037 /* --------------------------------------------------------------
00038 Copyright (C) 2001 LifeLine Networks BV <soap2corba@lifeline.nl>
00039 
00040 This program is free software; you can redistribute it and/or
00041 modify it under the terms of the GNU General Public License
00042 as published by the Free Software Foundation; either
00043 version 2 of the License, or (at your option) any later
00044 version.
00045 
00046 This program is distributed in the hope that it will be useful,
00047 but WITHOUT ANY WARRANTY; without even the implied warranty of
00048 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00049 GNU General Public License for more details.
00050 
00051 You should have received a copy of the GNU General Public License
00052 along with this program; if not, write to the Free Software
00053 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00054 -------------------------------------------------------------- */
00055 //@END_USER1
00056 
00057 
00058 class HrefIdMap
00059 {
00060     // RELATION_AVLTREE_OWNED_ACTIVE(HrefIdMap, HrefIdMap, HrefId, HrefId)
00061 private:
00062     HrefId * _topHrefId;
00063     int _countHrefId;
00064 
00065 protected:
00066 
00067 public:
00068     void AddHrefId(HrefId* item);
00069     void RemoveHrefId(HrefId* item);
00070     void DeleteAllHrefId();
00071     void ReplaceHrefId(HrefId* item, HrefId* newItem);
00072     HrefId* GetFirstHrefId() const;
00073     HrefId* GetLastHrefId() const;
00074     HrefId* GetNextHrefId(HrefId* pos) const;
00075     HrefId* GetPrevHrefId(HrefId* pos) const;
00076     int GetHrefIdCount() const;
00077     
00078     class  HrefIdIterator
00079     {
00080     private:
00081         HrefId* _refHrefId;
00082         HrefId* _prevHrefId;
00083         HrefId* _nextHrefId;
00084         const HrefIdMap* _iterHrefIdMap;
00085         
00086         HrefIdIterator* _prev;
00087         HrefIdIterator* _next;
00088         
00089         int (HrefId::*_method)() const;
00090         
00091         static HrefIdIterator* _first;
00092         static HrefIdIterator* _last;
00093         
00094     public:
00095         HrefIdIterator(const HrefIdMap* iterHrefIdMap,
00096                          int (HrefId::*method)() const = 0,
00097                          HrefId* refHrefId = 0);
00098         HrefIdIterator(const HrefIdMap& iterHrefIdMap,
00099                          int (HrefId::*method)() const = 0,
00100                          HrefId* refHrefId = 0);
00101         HrefIdIterator(const HrefIdIterator& iterator,
00102                          int (HrefId::*method)() const = 0);
00103         ~HrefIdIterator();
00104         
00105         HrefIdIterator& operator= (const HrefIdIterator& iterator)
00106         {
00107             _iterHrefIdMap = iterator._iterHrefIdMap;
00108             _refHrefId = iterator._refHrefId;
00109             _prevHrefId = iterator._prevHrefId;
00110             _nextHrefId = iterator._nextHrefId;
00111             _method = iterator._method;
00112             return *this;
00113         }
00114         HrefId* operator++ ()
00115         {
00116             _nextHrefId = _iterHrefIdMap->GetNextHrefId(_nextHrefId);
00117             if (_method != 0)
00118             {
00119                 while (_nextHrefId && !(_nextHrefId->*_method)())
00120                     _nextHrefId = _iterHrefIdMap->GetNextHrefId(_nextHrefId);
00121             }
00122             _refHrefId = _prevHrefId = _nextHrefId;
00123             return _refHrefId;
00124         }
00125         HrefId* operator-- ()
00126         {
00127             _prevHrefId = _iterHrefIdMap->GetPrevHrefId(_prevHrefId);
00128             if (_method != 0)
00129             {
00130                 while (_prevHrefId && !(_prevHrefId->*_method)())
00131                     _prevHrefId = _iterHrefIdMap->GetPrevHrefId(_prevHrefId);
00132             }
00133             _refHrefId = _nextHrefId = _prevHrefId;
00134             return _refHrefId;
00135         }
00136         operator HrefId*() { return _refHrefId; }
00137         HrefId* operator-> () { return _refHrefId; }
00138         HrefId* Get() { return _refHrefId; }
00139         void Reset() { _refHrefId = _prevHrefId = _nextHrefId = (HrefId*)0; }
00140         
00141         int IsLast() { return (_iterHrefIdMap->GetLastHrefId() == _refHrefId); }
00142         int IsFirst() { return (_iterHrefIdMap->GetFirstHrefId() == _refHrefId); }
00143         
00144         static void Check(HrefId* itemHrefId);
00145         static void Check(HrefId* itemHrefId, HrefId* newItemHrefId);
00146     };
00147 
00148 //@START_USER2
00149 //@END_USER2
00150 
00151 // Members
00152 private:
00153 
00154 protected:
00155 
00156 public:
00157 
00158 // Methods
00159 private:
00160     void ConstructorInclude();
00161     void DestructorInclude();
00162 
00163 protected:
00164 
00165 public:
00166     HrefIdMap();
00167     virtual ~HrefIdMap();
00168     void Build(DOM_Node& rNode);
00169     void RealNode(DOM_Node& rRealNode, DOM_Node& rFakeNode);
00170     void RealNode(DOM_Element& rElement, DOM_Node& rFakeNode);
00171     HrefId* FindEqualOrBiggerHrefId(const CString& id);
00172     HrefId* FindEqualOrSmallerHrefId(const CString& id);
00173     HrefId* FindHrefId(const CString& id);
00174     HrefId* FindReverseHrefId(const CString& id);
00175 };
00176 
00177 #endif
00178 
00179 
00180 #ifdef CB_INLINES
00181 #ifndef _HREFIDMAP_H_INLINES
00182 #define _HREFIDMAP_H_INLINES
00183 
00184 //@START_USER3
00185 //@END_USER3
00186 
00187 #endif
00188 #endif
00189 

This documentation is part of the "SOAP to CORBA bridge" project
Copyright © 2000 by Lifeline Networks bv.
All rights are reserved.