aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
ticpprc.h
Go to the documentation of this file.
1/*
2http://code.google.com/p/ticpp/
3Copyright (c) 2006 Ryan Pusztai, Ryan Mulder
4
5Permission is hereby granted, free of charge, to any person obtaining a copy of
6this software and associated documentation files (the "Software"), to deal in
7the Software without restriction, including without limitation the rights to
8use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9the Software, and to permit persons to whom the Software is furnished to do so,
10subject to the following conditions:
11
12The above copyright notice and this permission notice shall be included in all
13copies or substantial portions of the Software.
14
15THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21*/
22#define TIXML_USE_TICPP
23#ifdef TIXML_USE_TICPP
24
25#ifndef TICPPRC_INCLUDED
26#define TICPPRC_INCLUDED
27
28#include <vector>
29
30// Forward declare ticpp::Node, so it can be made a friend of TiCppRC
31namespace ticpp {
32 class Base;
33}
34
35// Forward declare TiCppRCImp so TiCppRC can hold a pointer to it
36class TiCppRCImp;
37
41class TiCppRC {
42 // Allow ticpp::Node to directly modify reference count
43 friend class ticpp::Base;
44
45 private:
47
48 public:
53 TiCppRC();
54
60 virtual ~TiCppRC();
61
62 std::vector< ticpp::Base* >
67
72};
73
75 private:
76 int m_count;
77
79
80 public:
84 TiCppRCImp(TiCppRC* tiCppRC);
85
91 void Nullify();
92
96 void IncRef();
97
101 void DecRef();
102
107 void InitRef();
108
114 TiCppRC* Get();
115
119 bool IsNull();
120};
121
122#endif // TICPP_INCLUDED
123
124#endif // TIXML_USE_TICPP
TiCppRC * m_tiCppRC
Holds pointer to an object inheriting TiCppRC.
Definition ticpprc.h:78
void DecRef()
Decrement Reference Count.
Definition ticpp.cpp:958
int m_count
Holds reference count to me, and to the node I point to.
Definition ticpprc.h:76
TiCppRCImp(TiCppRC *tiCppRC)
Initializes m_tiCppRC pointer, and set reference count to 1.
Definition ticpp.cpp:952
void Nullify()
Allows the TiCppRC object to set the pointer to itself ( m_tiCppRc ) to nullptr when the TiCppRC obje...
Definition ticpp.cpp:969
bool IsNull()
Returns state of internal pointer - will be null if the object was deleted.
Definition ticpp.cpp:973
void IncRef()
Increment Reference Count.
Definition ticpp.cpp:956
void InitRef()
Set Reference Count to 1 - dangerous!
Definition ticpp.cpp:967
TiCppRC * Get()
Get internal pointer to the TiCppRC object - not reference counted, use at your own risk.
Definition ticpp.cpp:971
Base class for reference counting functionality.
Definition ticpprc.h:41
void DeleteSpawnedWrappers()
Delete all container objects we've spawned with 'new'.
Definition ticpp.cpp:929
TiCppRC()
Constructor Spawns new reference counter with a pointer to this.
Definition ticpp.cpp:924
TiCppRCImp * m_tiRC
Pointer to reference counter.
Definition ticpprc.h:46
virtual ~TiCppRC()
Destructor Nullifies the pointer to this held by the reference counter Decrements reference count.
Definition ticpp.cpp:940
std::vector< ticpp::Base * > m_spawnedWrappers
Remember all wrappers that we've created with 'new' - ( e.g.
Definition ticpprc.h:63
Wrapper around TiXmlBase.
Definition ticpp.h:161
ticpp is a TinyXML wrapper that uses a lot more C++ ideals.
Definition ticpp.h:70