source: NonGTP/Xerces/xerces-c_2_8_0/include/xercesc/util/CountedPointer.hpp @ 2674

Revision 2674, 2.2 KB checked in by mattausch, 16 years ago (diff)
Line 
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements.  See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License.  You may obtain a copy of the License at
8 *
9 *      http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18/*
19 * $Id: CountedPointer.hpp 568078 2007-08-21 11:43:25Z amassari $
20 */
21
22
23#if !defined(COUNTEDPOINTERTO_HPP)
24#define COUNTEDPOINTERTO_HPP
25
26#include <xercesc/util/NullPointerException.hpp>
27
28XERCES_CPP_NAMESPACE_BEGIN
29
30template <class T> class CountedPointerTo : public XMemory
31{
32public:
33    // -----------------------------------------------------------------------
34    //  Constructors and Destructor
35    // -----------------------------------------------------------------------
36    CountedPointerTo(const CountedPointerTo<T>& toCopy);
37    CountedPointerTo(T* p = 0);
38    ~CountedPointerTo();
39
40
41    // -----------------------------------------------------------------------
42    //  Operators
43    // -----------------------------------------------------------------------
44    CountedPointerTo<T>& operator=(const CountedPointerTo<T>& other);
45    operator T*();
46    const T* operator->() const;
47    T* operator->();
48    const T& operator*() const;
49    T& operator*();
50
51
52private:
53    // -----------------------------------------------------------------------
54    //  Data members
55    //
56    //  fPtr
57    //      The pointer that we are counting. The T type must implement the
58    //      addRef() and removeRef() APIs but it doesn't have to derive from
59    //      any particular type.
60    // -----------------------------------------------------------------------
61    T*  fPtr;
62};
63
64XERCES_CPP_NAMESPACE_END
65
66#if !defined(XERCES_TMPLSINC)
67#include <xercesc/util/CountedPointer.c>
68#endif
69
70#endif
Note: See TracBrowser for help on using the repository browser.