blob: 9c3c0c9de58a1917a62a8fa0d8fa3057265716c3 (
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
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>oscl_refcounter_memfrag.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.18 -->
<center>
<a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="modules.html">Modules</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="annotated.html">Data Structures</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Data Fields</a> <a class="qindex" href="globals.html">Globals</a> </center>
<hr><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>00001 <span class="comment">// -*- c++ -*-</span>
00002 <span class="comment">// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =</span>
00003
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>
00005
00006 <span class="comment">// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =</span>
00007
00023 <span class="preprocessor">#ifndef OSCL_REFCOUNTER_MEMFRAG_H_INCLUDED</span>
00024 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_REFCOUNTER_MEMFRAG_H_INCLUDED</span>
00025 <span class="preprocessor"></span>
00026 <span class="preprocessor">#ifndef OSCL_BASE_H_INCLUDED</span>
00027 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__base_8h.html">oscl_base.h</a>"</span>
00028 <span class="preprocessor">#endif</span>
00029 <span class="preprocessor"></span>
00030 <span class="preprocessor">#ifndef OSCL_REFCOUNTER_H_INCLUDED</span>
00031 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__refcounter_8h.html">oscl_refcounter.h</a>"</span>
00032 <span class="preprocessor">#endif</span>
00033 <span class="preprocessor"></span>
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>
00040 {
00041 <span class="keyword">public</span>:
00042
<a name="l00053"></a><a class="code" href="classOsclRefCounterMemFrag.html#a0">00053</a> <a class="code" href="classOsclRefCounterMemFrag.html#a2">OsclRefCounterMemFrag</a>(<a class="code" href="structOsclMemoryFragment.html">OsclMemoryFragment</a> &m, <a class="code" href="classOsclRefCounter.html">OsclRefCounter</a> *r,
00054 uint32 in_capacity) :
00055 memfrag(m), refcnt(r), capacity(in_capacity)
00056 <span class="comment">// no need to increment refcnt--it should already be done.</span>
00057 {}
00058
<a name="l00062"></a><a class="code" href="classOsclRefCounterMemFrag.html#a1">00062</a> <a class="code" href="classOsclRefCounterMemFrag.html#a2">OsclRefCounterMemFrag</a>(<span class="keyword">const</span> <a class="code" href="classOsclRefCounterMemFrag.html">OsclRefCounterMemFrag</a> &x) :
00063 memfrag(x.memfrag), refcnt(x.refcnt), capacity(x.capacity)
00064 {
00065 <span class="keywordflow">if</span> (refcnt)
00066 {
00067 refcnt-><a class="code" href="classOsclRefCounter.html#a0">addRef</a>();
00068 }
00069 }
00070
<a name="l00074"></a><a class="code" href="classOsclRefCounterMemFrag.html#a2">00074</a> <a class="code" href="classOsclRefCounterMemFrag.html#a2">OsclRefCounterMemFrag</a>()
00075 {
00076 memfrag.<a class="code" href="structOsclMemoryFragment.html#m1">ptr</a> = 0;
00077 memfrag.<a class="code" href="structOsclMemoryFragment.html#m0">len</a> = 0;
00078 refcnt = 0;
00079 capacity = 0;
00080 }
00081
00082
<a name="l00086"></a><a class="code" href="classOsclRefCounterMemFrag.html#a3">00086</a> <a class="code" href="classOsclRefCounterMemFrag.html">OsclRefCounterMemFrag</a>& <a class="code" href="classOsclRefCounterMemFrag.html#a3">operator= </a>(<span class="keyword">const</span> <a class="code" href="classOsclRefCounterMemFrag.html">OsclRefCounterMemFrag</a> &x)
00087 {
00088 <span class="keywordflow">if</span> (<span class="keyword">this</span> == &x)
00089 {
00090 <span class="comment">// protect against self-assignment</span>
00091 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00092 }
00093
00094 <span class="comment">// remove ref for current memfrag</span>
00095 <span class="keywordflow">if</span> (refcnt)
00096 {
00097 refcnt-><a class="code" href="classOsclRefCounter.html#a1">removeRef</a>();
00098 }
00099
00100 <span class="comment">// copy assigned object</span>
00101 memfrag = x.<a class="code" href="classOsclRefCounterMemFrag.html#o0">memfrag</a>;
00102 refcnt = x.<a class="code" href="classOsclRefCounterMemFrag.html#o1">refcnt</a>;
00103 capacity = x.<a class="code" href="classOsclRefCounterMemFrag.html#o2">capacity</a>;
00104
00105 <span class="comment">// add ref for new memfrag</span>
00106 <span class="keywordflow">if</span> (refcnt)
00107 {
00108 refcnt-><a class="code" href="classOsclRefCounter.html#a0">addRef</a>();
00109 }
00110
00111 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00112 }
00113
<a name="l00121"></a><a class="code" href="classOsclRefCounterMemFrag.html#a4">00121</a> <a class="code" href="classOsclRefCounterMemFrag.html#a4">~OsclRefCounterMemFrag</a>()
00122 {
00123 <span class="keywordflow">if</span> (refcnt)
00124 {
00125 refcnt-><a class="code" href="classOsclRefCounter.html#a1">removeRef</a>();
00126 }
00127 }
00128
<a name="l00133"></a><a class="code" href="classOsclRefCounterMemFrag.html#a5">00133</a> <a class="code" href="classOsclRefCounter.html">OsclRefCounter</a>* <a class="code" href="classOsclRefCounterMemFrag.html#a5">getRefCounter</a>()
00134 {
00135 <span class="keywordflow">return</span> refcnt;
00136 }
00137
<a name="l00142"></a><a class="code" href="classOsclRefCounterMemFrag.html#a6">00142</a> <a class="code" href="structOsclMemoryFragment.html">OsclMemoryFragment</a>& <a class="code" href="classOsclRefCounterMemFrag.html#a6">getMemFrag</a>()
00143 {
00144 <span class="keywordflow">return</span> memfrag;
00145 }
00146
<a name="l00150"></a><a class="code" href="classOsclRefCounterMemFrag.html#a7">00150</a> <a class="code" href="group__osclbase.html#a25">OsclAny</a>* <a class="code" href="classOsclRefCounterMemFrag.html#a7">getMemFragPtr</a>()
00151 {
00152 <span class="keywordflow">return</span> memfrag.<a class="code" href="structOsclMemoryFragment.html#m1">ptr</a>;
00153 }
00154
<a name="l00161"></a><a class="code" href="classOsclRefCounterMemFrag.html#a8">00161</a> uint32 <a class="code" href="classOsclRefCounterMemFrag.html#a8">getMemFragSize</a>()
00162 {
00163 <span class="keywordflow">return</span> memfrag.<a class="code" href="structOsclMemoryFragment.html#m0">len</a>;
00164 }
00165
<a name="l00171"></a><a class="code" href="classOsclRefCounterMemFrag.html#a9">00171</a> uint32 <a class="code" href="classOsclRefCounterMemFrag.html#a9">getCapacity</a>()
00172 {
00173 <span class="keywordflow">return</span> capacity;
00174 }
00175
<a name="l00179"></a><a class="code" href="classOsclRefCounterMemFrag.html#a10">00179</a> uint32 <a class="code" href="classOsclRefCounterMemFrag.html#a10">getCount</a>()
00180 {
00181 <span class="keywordflow">return</span> (refcnt) ? refcnt-><a class="code" href="classOsclRefCounter.html#a2">getCount</a>() : 0;
00182 }
00183
00184
00185
00186 <span class="keyword">private</span>:
00187
00188 <a class="code" href="structOsclMemoryFragment.html">OsclMemoryFragment</a> memfrag;
00189 <a class="code" href="classOsclRefCounter.html">OsclRefCounter</a> *refcnt;
00190 uint32 capacity;
00191 };
00192
00193
00197 <span class="preprocessor">#endif // OSCL_REFCOUNTER_MEMFRAG_H</span>
</pre></div><hr size="1"><img src="pvlogo_small.jpg"><address style="align: right;"><small>OSCL API</small>
<address style="align: left;"><small>Posting Version: OPENCORE_20090310 </small>
</small></address>
</body>
</html>
|