aboutsummaryrefslogtreecommitdiff
path: root/doc/oscl_html/oscl__refcounter__memfrag_8h-source.html
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> &nbsp; <a class="qindex" href="modules.html">Modules</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </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> &amp;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> &amp;x) :
00063                 memfrag(x.memfrag), refcnt(x.refcnt), capacity(x.capacity)
00064         {
00065             <span class="keywordflow">if</span> (refcnt)
00066             {
00067                 refcnt-&gt;<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>&amp; <a class="code" href="classOsclRefCounterMemFrag.html#a3">operator= </a>(<span class="keyword">const</span> <a class="code" href="classOsclRefCounterMemFrag.html">OsclRefCounterMemFrag</a> &amp;x)
00087         {
00088             <span class="keywordflow">if</span> (<span class="keyword">this</span> == &amp;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-&gt;<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-&gt;<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-&gt;<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>&amp; <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-&gt;<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>