blob: eb1063cbb9ee3e6d2e8f0976dc1e3ccaef733b72 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>oscl: oscl_refcounter_memfrag.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="pages.html"><span>Related Pages</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<h1>oscl_refcounter_memfrag.h</h1><a href="oscl__refcounter__memfrag_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// -*- c++ -*-</span>
<a name="l00002"></a>00002 <span class="comment">// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =</span>
<a name="l00003"></a>00003
<a name="l00004"></a>00004 <span class="comment">// O S C L _ R E F C O U N T E R _ M E M F R A G</span>
<a name="l00005"></a>00005
<a name="l00006"></a>00006 <span class="comment">// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =</span>
<a name="l00007"></a>00007
<a name="l00023"></a>00023 <span class="preprocessor">#ifndef OSCL_REFCOUNTER_MEMFRAG_H_INCLUDED</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_REFCOUNTER_MEMFRAG_H_INCLUDED</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="preprocessor">#ifndef OSCL_BASE_H_INCLUDED</span>
<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__base_8h.html" title="The file oscl_base.h is the public header that should be included to pick up the...">oscl_base.h</a>"</span>
<a name="l00028"></a>00028 <span class="preprocessor">#endif</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span>
<a name="l00030"></a>00030 <span class="preprocessor">#ifndef OSCL_REFCOUNTER_H_INCLUDED</span>
<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__refcounter_8h.html" title="A general purpose reference counter to object lifetimes.">oscl_refcounter.h</a>"</span>
<a name="l00032"></a>00032 <span class="preprocessor">#endif</span>
<a name="l00033"></a>00033 <span class="preprocessor"></span>
<a name="l00034"></a>00034
<a name="l00039"></a><a class="code" href="classOsclRefCounterMemFrag.html">00039</a> <span class="keyword">class </span><a class="code" href="classOsclRefCounterMemFrag.html">OsclRefCounterMemFrag</a>
<a name="l00040"></a>00040 {
<a name="l00041"></a>00041 <span class="keyword">public</span>:
<a name="l00042"></a>00042
<a name="l00053"></a>00053 <a class="code" href="classOsclRefCounterMemFrag.html#a5af9dfeb79f994a1fe24c0886e4d47ea">OsclRefCounterMemFrag</a>(<a class="code" href="structOsclMemoryFragment.html">OsclMemoryFragment</a> &m, <a class="code" href="classOsclRefCounter.html">OsclRefCounter</a> *r,
<a name="l00054"></a><a class="code" href="classOsclRefCounterMemFrag.html#af092328bb9f4f7e9a0f31fb70083d7cc">00054</a> uint32 in_capacity) :
<a name="l00055"></a>00055 memfrag(m), refcnt(r), capacity(in_capacity)
<a name="l00056"></a>00056 <span class="comment">// no need to increment refcnt--it should already be done.</span>
<a name="l00057"></a>00057 {}
<a name="l00058"></a>00058
<a name="l00062"></a>00062 <a class="code" href="classOsclRefCounterMemFrag.html#a5af9dfeb79f994a1fe24c0886e4d47ea">OsclRefCounterMemFrag</a>(<span class="keyword">const</span> <a class="code" href="classOsclRefCounterMemFrag.html">OsclRefCounterMemFrag</a> &x) :
<a name="l00063"></a>00063 memfrag(x.memfrag), refcnt(x.refcnt), capacity(x.capacity)
<a name="l00064"></a>00064 {
<a name="l00065"></a>00065 <span class="keywordflow">if</span> (refcnt)
<a name="l00066"></a><a class="code" href="classOsclRefCounterMemFrag.html#a5af9dfeb79f994a1fe24c0886e4d47ea">00066</a> {
<a name="l00067"></a>00067 refcnt-><a class="code" href="classOsclRefCounter.html#a36656788a3ab2b554bc7e917bf6a4adb">addRef</a>();
<a name="l00068"></a>00068 }
<a name="l00069"></a>00069 }
<a name="l00070"></a>00070
<a name="l00074"></a>00074 <a class="code" href="classOsclRefCounterMemFrag.html#a5af9dfeb79f994a1fe24c0886e4d47ea">OsclRefCounterMemFrag</a>()
<a name="l00075"></a>00075 {
<a name="l00076"></a>00076 memfrag.<a class="code" href="structOsclMemoryFragment.html#a3374074fa288b1f307fcff0a047b6ac1">ptr</a> = 0;
<a name="l00077"></a>00077 memfrag.<a class="code" href="structOsclMemoryFragment.html#ab7432af4094176ee6ce7384f2da10a35">len</a> = 0;
<a name="l00078"></a><a class="code" href="classOsclRefCounterMemFrag.html#a57472e3f083c9cd207e60535e9bacf3b">00078</a> refcnt = 0;
<a name="l00079"></a>00079 capacity = 0;
<a name="l00080"></a>00080 }
<a name="l00081"></a>00081
<a name="l00082"></a>00082
<a name="l00086"></a>00086 <a class="code" href="classOsclRefCounterMemFrag.html">OsclRefCounterMemFrag</a>& <a class="code" href="classOsclRefCounterMemFrag.html#a57472e3f083c9cd207e60535e9bacf3b">operator= </a>(<span class="keyword">const</span> <a class="code" href="classOsclRefCounterMemFrag.html">OsclRefCounterMemFrag</a> &x)
<a name="l00087"></a>00087 {
<a name="l00088"></a>00088 <span class="keywordflow">if</span> (<span class="keyword">this</span> == &x)
<a name="l00089"></a>00089 {
<a name="l00090"></a>00090 <span class="comment">// protect against self-assignment</span>
<a name="l00091"></a>00091 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00092"></a>00092 }
<a name="l00093"></a>00093
<a name="l00094"></a>00094 <span class="comment">// remove ref for current memfrag</span>
<a name="l00095"></a>00095 <span class="keywordflow">if</span> (refcnt)
<a name="l00096"></a>00096 {
<a name="l00097"></a>00097 refcnt-><a class="code" href="classOsclRefCounter.html#aa7b138fd57f149a575356e51ee2d4451">removeRef</a>();
<a name="l00098"></a>00098 }
<a name="l00099"></a>00099
<a name="l00100"></a>00100 <span class="comment">// copy assigned object</span>
<a name="l00101"></a>00101 memfrag = x.memfrag;
<a name="l00102"></a>00102 refcnt = x.refcnt;
<a name="l00103"></a>00103 capacity = x.capacity;
<a name="l00104"></a>00104
<a name="l00105"></a>00105 <span class="comment">// add ref for new memfrag</span>
<a name="l00106"></a>00106 <span class="keywordflow">if</span> (refcnt)
<a name="l00107"></a>00107 {
<a name="l00108"></a>00108 refcnt-><a class="code" href="classOsclRefCounter.html#a36656788a3ab2b554bc7e917bf6a4adb">addRef</a>();
<a name="l00109"></a>00109 }
<a name="l00110"></a>00110
<a name="l00111"></a>00111 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00112"></a>00112 }
<a name="l00113"></a><a class="code" href="classOsclRefCounterMemFrag.html#ade700aa0752694cc80076de1510c65f9">00113</a>
<a name="l00121"></a>00121 <a class="code" href="classOsclRefCounterMemFrag.html#ade700aa0752694cc80076de1510c65f9">~OsclRefCounterMemFrag</a>()
<a name="l00122"></a>00122 {
<a name="l00123"></a>00123 <span class="keywordflow">if</span> (refcnt)
<a name="l00124"></a>00124 {
<a name="l00125"></a><a class="code" href="classOsclRefCounterMemFrag.html#a4bb8d64ecbc6b2eaabd09325e353eeec">00125</a> refcnt-><a class="code" href="classOsclRefCounter.html#aa7b138fd57f149a575356e51ee2d4451">removeRef</a>();
<a name="l00126"></a>00126 }
<a name="l00127"></a>00127 }
<a name="l00128"></a>00128
<a name="l00133"></a>00133 <a class="code" href="classOsclRefCounter.html">OsclRefCounter</a>* <a class="code" href="classOsclRefCounterMemFrag.html#a4bb8d64ecbc6b2eaabd09325e353eeec">getRefCounter</a>()
<a name="l00134"></a><a class="code" href="classOsclRefCounterMemFrag.html#a91b285b6b4f4fc95e60523f69226efe0">00134</a> {
<a name="l00135"></a>00135 <span class="keywordflow">return</span> refcnt;
<a name="l00136"></a>00136 }
<a name="l00137"></a>00137
<a name="l00142"></a><a class="code" href="classOsclRefCounterMemFrag.html#ab7dce101b26f7cd7f64553efaacbadb3">00142</a> <a class="code" href="structOsclMemoryFragment.html">OsclMemoryFragment</a>& <a class="code" href="classOsclRefCounterMemFrag.html#a91b285b6b4f4fc95e60523f69226efe0">getMemFrag</a>()
<a name="l00143"></a>00143 {
<a name="l00144"></a>00144 <span class="keywordflow">return</span> memfrag;
<a name="l00145"></a>00145 }
<a name="l00146"></a>00146
<a name="l00150"></a>00150 <a class="code" href="group__osclbase.html#ga3bac54662348f5e6c08b97ca97066b89" title="The OsclAny is meant to be used the context of a generic pointer (i.e., no specific...">OsclAny</a>* <a class="code" href="classOsclRefCounterMemFrag.html#ab7dce101b26f7cd7f64553efaacbadb3">getMemFragPtr</a>()
<a name="l00151"></a>00151 {
<a name="l00152"></a>00152 <span class="keywordflow">return</span> memfrag.<a class="code" href="structOsclMemoryFragment.html#a3374074fa288b1f307fcff0a047b6ac1">ptr</a>;
<a name="l00153"></a><a class="code" href="classOsclRefCounterMemFrag.html#ab1baab99d915ed52f5192da0c35d4ad1">00153</a> }
<a name="l00154"></a>00154
<a name="l00161"></a>00161 uint32 <a class="code" href="classOsclRefCounterMemFrag.html#ab1baab99d915ed52f5192da0c35d4ad1">getMemFragSize</a>()
<a name="l00162"></a>00162 {
<a name="l00163"></a><a class="code" href="classOsclRefCounterMemFrag.html#a36a2f6823ef9a01178621ea2d2dd9092">00163</a> <span class="keywordflow">return</span> memfrag.<a class="code" href="structOsclMemoryFragment.html#ab7432af4094176ee6ce7384f2da10a35">len</a>;
<a name="l00164"></a>00164 }
<a name="l00165"></a>00165
<a name="l00171"></a><a class="code" href="classOsclRefCounterMemFrag.html#a35d94ba86e29144522af28eae994f780">00171</a> uint32 <a class="code" href="classOsclRefCounterMemFrag.html#a36a2f6823ef9a01178621ea2d2dd9092">getCapacity</a>()
<a name="l00172"></a>00172 {
<a name="l00173"></a>00173 <span class="keywordflow">return</span> capacity;
<a name="l00174"></a>00174 }
<a name="l00175"></a>00175
<a name="l00179"></a>00179 uint32 <a class="code" href="classOsclRefCounterMemFrag.html#a35d94ba86e29144522af28eae994f780">getCount</a>()
<a name="l00180"></a>00180 {
<a name="l00181"></a>00181 <span class="keywordflow">return</span> (refcnt) ? refcnt-><a class="code" href="classOsclRefCounter.html#a647a4b140b695ad7f8e68e41cb3cc137">getCount</a>() : 0;
<a name="l00182"></a>00182 }
<a name="l00183"></a>00183
<a name="l00184"></a>00184
<a name="l00185"></a>00185
<a name="l00186"></a>00186 <span class="keyword">private</span>:
<a name="l00187"></a>00187
<a name="l00188"></a>00188 <a class="code" href="structOsclMemoryFragment.html">OsclMemoryFragment</a> memfrag;
<a name="l00189"></a>00189 <a class="code" href="classOsclRefCounter.html">OsclRefCounter</a> *refcnt;
<a name="l00190"></a>00190 uint32 capacity;
<a name="l00191"></a>00191 };
<a name="l00192"></a>00192
<a name="l00193"></a>00193
<a name="l00197"></a>00197 <span class="preprocessor">#endif // OSCL_REFCOUNTER_MEMFRAG_H</span>
</pre></div></div>
<hr size="1"><img src="pvlogo_small.jpg"><address style="align: right;"><small>OSCL API</small>
<address style="align: left;"><small>Posting Version: CORE_9.004.1.1 </small>
</small></address>
</body>
</html>
|