|
|
<!-- HTML header for doxygen 1.8.3.1-->
<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>Templates -- Meow: meow::Self< Data > Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="stylesheet.css" rel="stylesheet" type="text/css" />
<link href="custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">Templates -- Meow
 <span id="projectnumber">1.1.4</span>
</div>
<div id="projectbrief">A C++ template which is unable and also not allowed to compile to obj-file first.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classmeow_1_1Self.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> |
<a href="#pub-types">Public Types</a> |
<a href="#pub-methods">Public Member Functions</a> |
<a href="classmeow_1_1Self-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">meow::Self< Data > Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>A little class use for packing the data part of another class. With this technique, it can achieve Copy-On-Write(COR) mechanism at background and have a reference mechanism which much more flexible then the one C++ has.
<a href="classmeow_1_1Self.html#details">More...</a></p>
<p><code>#include "<a class="el" href="Self_8h_source.html">Self.h</a>"</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:aa7d169e9d20d590f3e571206084797f8"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="classmeow_1_1Self.html#aa7d169e9d20d590f3e571206084797f8">DuplicateType</a> { <a class="el" href="classmeow_1_1Self.html#aa7d169e9d20d590f3e571206084797f8adef1b0d02e1090b1b610a4ea91bd6730">COPY_FROM</a>,
<a class="el" href="classmeow_1_1Self.html#aa7d169e9d20d590f3e571206084797f8a40c8a3eba568e04a5ce09ee0fa881822">REFERENCE_FROM</a>
}</td></tr>
<tr class="memdesc:aa7d169e9d20d590f3e571206084797f8"><td class="mdescLeft"> </td><td class="mdescRight">Kind of ways of duplicating. <a href="classmeow_1_1Self.html#aa7d169e9d20d590f3e571206084797f8">More...</a><br/></td></tr>
<tr class="separator:aa7d169e9d20d590f3e571206084797f8"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a6b39fcc4b184809f9aeaeb1c9a0bac2d"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmeow_1_1Self.html#a6b39fcc4b184809f9aeaeb1c9a0bac2d">Self</a> ()</td></tr>
<tr class="memdesc:a6b39fcc4b184809f9aeaeb1c9a0bac2d"><td class="mdescLeft"> </td><td class="mdescRight">constructor with a real entity <a href="#a6b39fcc4b184809f9aeaeb1c9a0bac2d">More...</a><br/></td></tr>
<tr class="separator:a6b39fcc4b184809f9aeaeb1c9a0bac2d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:af3220c1e1d7966c6dbaf4ec62f8cbc2f"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmeow_1_1Self.html#af3220c1e1d7966c6dbaf4ec62f8cbc2f">Self</a> (Data const &d)</td></tr>
<tr class="memdesc:af3220c1e1d7966c6dbaf4ec62f8cbc2f"><td class="mdescLeft"> </td><td class="mdescRight">connstructor with a real entity with it using its copy constructor <a href="#af3220c1e1d7966c6dbaf4ec62f8cbc2f">More...</a><br/></td></tr>
<tr class="separator:af3220c1e1d7966c6dbaf4ec62f8cbc2f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:afee797a10c73a1c8e02c8e6315a2930b"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmeow_1_1Self.html#afee797a10c73a1c8e02c8e6315a2930b">Self</a> (<a class="el" href="classmeow_1_1Self.html">Self</a> const &b, <a class="el" href="classmeow_1_1Self.html#aa7d169e9d20d590f3e571206084797f8">DuplicateType</a> d)</td></tr>
<tr class="memdesc:afee797a10c73a1c8e02c8e6315a2930b"><td class="mdescLeft"> </td><td class="mdescRight">constructor with given another <a class="el" href="classmeow_1_1Self.html" title="A little class use for packing the data part of another class. With this technique, it can achieve Copy-On-Write(COR) mechanism at background and have a reference mechanism which much more flexible then the one C++ has. ">Self</a> <a href="#afee797a10c73a1c8e02c8e6315a2930b">More...</a><br/></td></tr>
<tr class="separator:afee797a10c73a1c8e02c8e6315a2930b"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a000ede7e217c31401cc0a4b1c6749ee5"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmeow_1_1Self.html#a000ede7e217c31401cc0a4b1c6749ee5">Self</a> (<a class="el" href="classmeow_1_1Self.html">Self</a> const &b)</td></tr>
<tr class="memdesc:a000ede7e217c31401cc0a4b1c6749ee5"><td class="mdescLeft"> </td><td class="mdescRight">Disallow copy constructor. <a href="#a000ede7e217c31401cc0a4b1c6749ee5">More...</a><br/></td></tr>
<tr class="separator:a000ede7e217c31401cc0a4b1c6749ee5"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ada16564a03665b10810a6342d61044bc"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmeow_1_1Self.html#ada16564a03665b10810a6342d61044bc">~Self</a> ()</td></tr>
<tr class="memdesc:ada16564a03665b10810a6342d61044bc"><td class="mdescLeft"> </td><td class="mdescRight">destructor <a href="#ada16564a03665b10810a6342d61044bc">More...</a><br/></td></tr>
<tr class="separator:ada16564a03665b10810a6342d61044bc"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a6063551c3e6ac647500e938ade8fbc99"><td class="memItemLeft" align="right" valign="top">Data const * </td><td class="memItemRight" valign="bottom"><a class="el" href="classmeow_1_1Self.html#a6063551c3e6ac647500e938ade8fbc99">operator-></a> () const </td></tr>
<tr class="memdesc:a6063551c3e6ac647500e938ade8fbc99"><td class="mdescLeft"> </td><td class="mdescRight">Return the constant pointer to the data. <a href="#a6063551c3e6ac647500e938ade8fbc99">More...</a><br/></td></tr>
<tr class="separator:a6063551c3e6ac647500e938ade8fbc99"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ace312355261c68ac7531767939f5c4c2"><td class="memItemLeft" align="right" valign="top">Data * </td><td class="memItemRight" valign="bottom"><a class="el" href="classmeow_1_1Self.html#ace312355261c68ac7531767939f5c4c2">operator-></a> ()</td></tr>
<tr class="memdesc:ace312355261c68ac7531767939f5c4c2"><td class="mdescLeft"> </td><td class="mdescRight">Return the non-constant pointer to the data (COR's clone might occure here. <a href="#ace312355261c68ac7531767939f5c4c2">More...</a><br/></td></tr>
<tr class="separator:ace312355261c68ac7531767939f5c4c2"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a5962339e9ee49312ab770f1119256ca6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmeow_1_1Self.html">Self</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classmeow_1_1Self.html#a5962339e9ee49312ab770f1119256ca6">operator()</a> () const </td></tr>
<tr class="memdesc:a5962339e9ee49312ab770f1119256ca6"><td class="mdescLeft"> </td><td class="mdescRight">Return the non-constant reference of <code>*this</code>. <a href="#a5962339e9ee49312ab770f1119256ca6">More...</a><br/></td></tr>
<tr class="separator:a5962339e9ee49312ab770f1119256ca6"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a9cd016a38a09f479fe2ed83eb1ebdae2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmeow_1_1Self.html">Self</a> const & </td><td class="memItemRight" valign="bottom"><a class="el" href="classmeow_1_1Self.html#a9cd016a38a09f479fe2ed83eb1ebdae2">copyFrom</a> (<a class="el" href="classmeow_1_1Self.html">Self</a> const &s)</td></tr>
<tr class="memdesc:a9cd016a38a09f479fe2ed83eb1ebdae2"><td class="mdescLeft"> </td><td class="mdescRight">Copy the gived <code><a class="el" href="classmeow_1_1Self.html" title="A little class use for packing the data part of another class. With this technique, it can achieve Copy-On-Write(COR) mechanism at background and have a reference mechanism which much more flexible then the one C++ has. ">Self</a></code> to myself. <a href="#a9cd016a38a09f479fe2ed83eb1ebdae2">More...</a><br/></td></tr>
<tr class="separator:a9cd016a38a09f479fe2ed83eb1ebdae2"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a63e1570c927c7fa3b95b71fe978e355d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmeow_1_1Self.html">Self</a> const & </td><td class="memItemRight" valign="bottom"><a class="el" href="classmeow_1_1Self.html#a63e1570c927c7fa3b95b71fe978e355d">referenceFrom</a> (<a class="el" href="classmeow_1_1Self.html">Self</a> const &s)</td></tr>
<tr class="memdesc:a63e1570c927c7fa3b95b71fe978e355d"><td class="mdescLeft"> </td><td class="mdescRight">Reference myself from given <code><a class="el" href="classmeow_1_1Self.html" title="A little class use for packing the data part of another class. With this technique, it can achieve Copy-On-Write(COR) mechanism at background and have a reference mechanism which much more flexible then the one C++ has. ">Self</a></code> object. <a href="#a63e1570c927c7fa3b95b71fe978e355d">More...</a><br/></td></tr>
<tr class="separator:a63e1570c927c7fa3b95b71fe978e355d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ae4256bfc598bb0db76141ffce506806e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmeow_1_1Self.html">Self</a> const & </td><td class="memItemRight" valign="bottom"><a class="el" href="classmeow_1_1Self.html#ae4256bfc598bb0db76141ffce506806e">duplicateFrom</a> (<a class="el" href="classmeow_1_1Self.html">Self</a> const &s, <a class="el" href="classmeow_1_1Self.html#aa7d169e9d20d590f3e571206084797f8">DuplicateType</a> t)</td></tr>
<tr class="memdesc:ae4256bfc598bb0db76141ffce506806e"><td class="mdescLeft"> </td><td class="mdescRight">call <code><a class="el" href="classmeow_1_1Self.html#a9cd016a38a09f479fe2ed83eb1ebdae2" title="Copy the gived Self to myself. ">copyFrom()</a></code> or <code><a class="el" href="classmeow_1_1Self.html#a63e1570c927c7fa3b95b71fe978e355d" title="Reference myself from given Self object. ">referenceFrom()</a></code> depend on your instruction <a href="#ae4256bfc598bb0db76141ffce506806e">More...</a><br/></td></tr>
<tr class="separator:ae4256bfc598bb0db76141ffce506806e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ab3671e44693b79e2f987f59652d46ca9"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmeow_1_1Self.html#ab3671e44693b79e2f987f59652d46ca9">same</a> (<a class="el" href="classmeow_1_1Self.html">Self</a> const &s) const </td></tr>
<tr class="memdesc:ab3671e44693b79e2f987f59652d46ca9"><td class="mdescLeft"> </td><td class="mdescRight">Compare tht if the gived <code><a class="el" href="classmeow_1_1Self.html" title="A little class use for packing the data part of another class. With this technique, it can achieve Copy-On-Write(COR) mechanism at background and have a reference mechanism which much more flexible then the one C++ has. ">Self</a></code> object is reference from the same object of me. <a href="#ab3671e44693b79e2f987f59652d46ca9">More...</a><br/></td></tr>
<tr class="separator:ab3671e44693b79e2f987f59652d46ca9"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a91098e2218c358470e81d64f35d6491d"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmeow_1_1Self.html#a91098e2218c358470e81d64f35d6491d">equal</a> (<a class="el" href="classmeow_1_1Self.html">Self</a> const &s) const </td></tr>
<tr class="memdesc:a91098e2218c358470e81d64f35d6491d"><td class="mdescLeft"> </td><td class="mdescRight">Compare that the data are the same. <a href="#a91098e2218c358470e81d64f35d6491d">More...</a><br/></td></tr>
<tr class="separator:a91098e2218c358470e81d64f35d6491d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a10f22a83c3afcf65f8f9680f2a2f945c"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmeow_1_1Self.html#a10f22a83c3afcf65f8f9680f2a2f945c">referenceLess</a> (<a class="el" href="classmeow_1_1Self.html">Self</a> const &s) const </td></tr>
<tr class="memdesc:a10f22a83c3afcf65f8f9680f2a2f945c"><td class="mdescLeft"> </td><td class="mdescRight">Order compare by reference pointer. <a href="#a10f22a83c3afcf65f8f9680f2a2f945c">More...</a><br/></td></tr>
<tr class="separator:a10f22a83c3afcf65f8f9680f2a2f945c"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:af3277e1109c59e5f81549889b344a675"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmeow_1_1Self.html#af3277e1109c59e5f81549889b344a675">operator=</a> (<a class="el" href="classmeow_1_1Self.html">Self</a> const &a)</td></tr>
<tr class="memdesc:af3277e1109c59e5f81549889b344a675"><td class="mdescLeft"> </td><td class="mdescRight">Disallow default <code>'operator='</code>. <a href="#af3277e1109c59e5f81549889b344a675">More...</a><br/></td></tr>
<tr class="separator:af3277e1109c59e5f81549889b344a675"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template<class Data><br/>
class meow::Self< Data ></h3>
<p>A little class use for packing the data part of another class. With this technique, it can achieve Copy-On-Write(COR) mechanism at background and have a reference mechanism which much more flexible then the one C++ has. </p>
<p>Sample code: </p>
<div class="fragment"><div class="line"><span class="keyword">class </span>A {</div>
<div class="line"><span class="keyword">private</span>:</div>
<div class="line"> <span class="keyword">struct </span>Myself {</div>
<div class="line"> <span class="keywordtype">int</span> data;</div>
<div class="line"></div>
<div class="line"> Myself() { <span class="comment">// Necessary</span></div>
<div class="line"> data = 0;</div>
<div class="line"> }</div>
<div class="line"></div>
<div class="line"> Myself(Myself <span class="keyword">const</span>& b): data(b.data) { <span class="comment">// Necessary, copy constructor</span></div>
<div class="line"> }</div>
<div class="line"></div>
<div class="line"> ~Myself() {</div>
<div class="line"> }</div>
<div class="line"></div>
<div class="line"> <span class="keywordtype">bool</span> operator==(Myself <span class="keyword">const</span>& b)<span class="keyword"> const </span>{ <span class="comment">// Optional (this method will</span></div>
<div class="line"> <span class="comment">// be called only if you use</span></div>
<div class="line"> <span class="comment">// Self::equal() method)</span></div>
<div class="line"> <span class="keywordflow">return</span> (data == b.data);</div>
<div class="line"> }</div>
<div class="line"> };</div>
<div class="line"></div>
<div class="line"> Self<Myself> <span class="keyword">const</span> <span class="keyword">self</span>; <span class="comment">// Here we use 'constant' data type in </span></div>
<div class="line"> <span class="comment">// order to have a coutious coding style</span></div>
<div class="line"> <span class="comment">// and allow the COR mechanism to clone</span></div>
<div class="line"> <span class="comment">// data only when we really want to</span></div>
<div class="line"> <span class="comment">// modify them.</span></div>
<div class="line"><span class="keyword">public</span>:</div>
<div class="line"> A(): self() { } <span class="comment">// Default constructor</span></div>
<div class="line"></div>
<div class="line"> A(A <span class="keyword">const</span>& a): self(a.self, <a class="code" href="classmeow_1_1Self.html#aa7d169e9d20d590f3e571206084797f8adef1b0d02e1090b1b610a4ea91bd6730">COPY_FROM</a>) { } <span class="comment">// Copy constructor. You must</span></div>
<div class="line"> <span class="comment">// tell me which way of</span></div>
<div class="line"> <span class="comment">// duplicating should I use.</span></div>
<div class="line"> <span class="comment">// It strongly recommended you</span></div>
<div class="line"> <span class="comment">// use COYP_FROM for keeping the</span></div>
<div class="line"> <span class="comment">// C++'s original behavior.</span></div>
<div class="line"> ~A() { }</div>
<div class="line"></div>
<div class="line"> <span class="keywordtype">int</span> getMemember(<span class="keywordtype">int</span> wh)<span class="keyword"> const </span>{</div>
<div class="line"> <span class="keywordflow">return</span> <span class="keyword">self</span>->data; <span class="comment">// Use 'operator->()' to get the pointer of the data</span></div>
<div class="line"> <span class="comment">// The pointer is constant or not will depend on</span></div>
<div class="line"> <span class="comment">// whether the left side variable of '->' is</span></div>
<div class="line"> <span class="comment">// constant or not.</span></div>
<div class="line"> <span class="comment">// If we just want to read the data, use</span></div>
<div class="line"> <span class="comment">// 'self' instead of 'self()'</span></div>
<div class="line"> }</div>
<div class="line"> <span class="keywordtype">void</span> setMemeber(<span class="keywordtype">int</span> k) {</div>
<div class="line"> <span class="keyword">self</span>()->data = k; <span class="comment">// As a result of 'self()' returning a non-constant</span></div>
<div class="line"> <span class="comment">// reference of itself, here we get the permission</span></div>
<div class="line"> <span class="comment">// for modiying data.</span></div>
<div class="line"> <span class="comment">// So now we can observe that if you type</span></div>
<div class="line"> <span class="comment">// 'Self<Myself> self' instead of the one above,</span></div>
<div class="line"> <span class="comment">// 'self' and 'self()' will become the same one and</span></div>
<div class="line"> <span class="comment">// both of them allow you using '->' for getting</span></div>
<div class="line"> <span class="comment">// writing permission. At the same time, the COR</span></div>
<div class="line"> <span class="comment">// machanism will become useless because everytime</span></div>
<div class="line"> <span class="comment">// you want to access the date, Self will copy the</span></div>
<div class="line"> <span class="comment">// data to prevent you to modify it no matter that</span></div>
<div class="line"> <span class="comment">// you might just want to read it.</span></div>
<div class="line"> }</div>
<div class="line"></div>
<div class="line"> A <a class="code" href="classmeow_1_1Self.html#a63e1570c927c7fa3b95b71fe978e355d">referenceFrom</a>(A <span class="keyword">const</span>& a) {</div>
<div class="line"> <span class="keyword">self</span>.<a class="code" href="classmeow_1_1Self.html#a63e1570c927c7fa3b95b71fe978e355d">referenceFrom</a>(a.self);</div>
<div class="line"> }</div>
<div class="line"></div>
<div class="line"> A <a class="code" href="classmeow_1_1Self.html#a9cd016a38a09f479fe2ed83eb1ebdae2">copyFrom</a>(A <span class="keyword">const</span>& a) {</div>
<div class="line"> <span class="keyword">self</span>.<a class="code" href="classmeow_1_1Self.html#a9cd016a38a09f479fe2ed83eb1ebdae2">copyFrom</a>(a.self);</div>
<div class="line"> }</div>
<div class="line"></div>
<div class="line"> A& <a class="code" href="classmeow_1_1Self.html#af3277e1109c59e5f81549889b344a675">operator=</a>(A <span class="keyword">const</span>& b) { <span class="comment">// If you really like to use operator=, it</span></div>
<div class="line"> <span class="comment">// strongly recommended you use 'copyFrom()' for</span></div>
<div class="line"> <span class="comment">// keeping C++'s original behavior.</span></div>
<div class="line"> <a class="code" href="classmeow_1_1Self.html#a9cd016a38a09f479fe2ed83eb1ebdae2">copyFrom</a>(b);</div>
<div class="line"> }</div>
<div class="line">};</div>
</div><!-- fragment --><p> Note that '<a class="el" href="classmeow_1_1Self.html#a63e1570c927c7fa3b95b71fe978e355d" title="Reference myself from given Self object. ">referenceFrom()</a>' will cause the two object become the same one, Which means that if you do something like '<code>a.referenceFrom(b)</code>; <code>a.copyFrom(c)</code>; ', the result is that the value of <code>a</code>,b,c will all the same one.</p>
<dl class="section author"><dt>Author</dt><dd>cathook</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>This class disabled the method <code>operator=</code> and copy constructor in order to prevent upexplicit default behavior, so if you want to have one of them (or both), you must implement yourself </dd></dl>
<p>Definition at line <a class="el" href="Self_8h_source.html#l00104">104</a> of file <a class="el" href="Self_8h_source.html">Self.h</a>.</p>
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a class="anchor" id="aa7d169e9d20d590f3e571206084797f8"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<class Data> </div>
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="classmeow_1_1Self.html#aa7d169e9d20d590f3e571206084797f8">meow::Self::DuplicateType</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Kind of ways of duplicating. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="aa7d169e9d20d590f3e571206084797f8adef1b0d02e1090b1b610a4ea91bd6730"></a>COPY_FROM</em> </td><td class="fielddoc">
<p>Normal copy operation. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="aa7d169e9d20d590f3e571206084797f8a40c8a3eba568e04a5ce09ee0fa881822"></a>REFERENCE_FROM</em> </td><td class="fielddoc">
<p>By reference, much like pointer's copy operation. </p>
</td></tr>
</table>
<p>Definition at line <a class="el" href="Self_8h_source.html#l00109">109</a> of file <a class="el" href="Self_8h_source.html">Self.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Constructor & Destructor Documentation</h2>
<a class="anchor" id="a6b39fcc4b184809f9aeaeb1c9a0bac2d"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<class Data> </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classmeow_1_1Self.html">meow::Self</a>< Data >::<a class="el" href="classmeow_1_1Self.html">Self</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>constructor with a real entity </p>
<p>Definition at line <a class="el" href="Self_8h_source.html#l00173">173</a> of file <a class="el" href="Self_8h_source.html">Self.h</a>.</p>
</div>
</div>
<a class="anchor" id="af3220c1e1d7966c6dbaf4ec62f8cbc2f"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<class Data> </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classmeow_1_1Self.html">meow::Self</a>< Data >::<a class="el" href="classmeow_1_1Self.html">Self</a> </td>
<td>(</td>
<td class="paramtype">Data const & </td>
<td class="paramname"><em>d</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>connstructor with a real entity with it using its copy constructor </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">d</td><td>Inital data </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="Self_8h_source.html#l00181">181</a> of file <a class="el" href="Self_8h_source.html">Self.h</a>.</p>
</div>
</div>
<a class="anchor" id="afee797a10c73a1c8e02c8e6315a2930b"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<class Data> </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classmeow_1_1Self.html">meow::Self</a>< Data >::<a class="el" href="classmeow_1_1Self.html">Self</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classmeow_1_1Self.html">Self</a>< Data > const & </td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classmeow_1_1Self.html#aa7d169e9d20d590f3e571206084797f8">DuplicateType</a> </td>
<td class="paramname"><em>d</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>constructor with given another <a class="el" href="classmeow_1_1Self.html" title="A little class use for packing the data part of another class. With this technique, it can achieve Copy-On-Write(COR) mechanism at background and have a reference mechanism which much more flexible then the one C++ has. ">Self</a> </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Another <a class="el" href="classmeow_1_1Self.html" title="A little class use for packing the data part of another class. With this technique, it can achieve Copy-On-Write(COR) mechanism at background and have a reference mechanism which much more flexible then the one C++ has. ">Self</a> object. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">d</td><td>To indicate type of way of duplicating </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="Self_8h_source.html#l00190">190</a> of file <a class="el" href="Self_8h_source.html">Self.h</a>.</p>
</div>
</div>
<a class="anchor" id="a000ede7e217c31401cc0a4b1c6749ee5"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<class Data> </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classmeow_1_1Self.html">meow::Self</a>< Data >::<a class="el" href="classmeow_1_1Self.html">Self</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classmeow_1_1Self.html">Self</a>< Data > const & </td>
<td class="paramname"><em>b</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Disallow copy constructor. </p>
</div>
</div>
<a class="anchor" id="ada16564a03665b10810a6342d61044bc"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<class Data> </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classmeow_1_1Self.html">meow::Self</a>< Data >::~<a class="el" href="classmeow_1_1Self.html">Self</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>destructor </p>
<p>Definition at line <a class="el" href="Self_8h_source.html#l00206">206</a> of file <a class="el" href="Self_8h_source.html">Self.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a9cd016a38a09f479fe2ed83eb1ebdae2"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<class Data> </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classmeow_1_1Self.html">Self</a> const& <a class="el" href="classmeow_1_1Self.html">meow::Self</a>< Data >::copyFrom </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classmeow_1_1Self.html">Self</a>< Data > const & </td>
<td class="paramname"><em>s</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Copy the gived <code><a class="el" href="classmeow_1_1Self.html" title="A little class use for packing the data part of another class. With this technique, it can achieve Copy-On-Write(COR) mechanism at background and have a reference mechanism which much more flexible then the one C++ has. ">Self</a></code> to myself. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">s</td><td>gived <code><a class="el" href="classmeow_1_1Self.html" title="A little class use for packing the data part of another class. With this technique, it can achieve Copy-On-Write(COR) mechanism at background and have a reference mechanism which much more flexible then the one C++ has. ">Self</a></code> </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>*this </dd></dl>
<p>Definition at line <a class="el" href="Self_8h_source.html#l00233">233</a> of file <a class="el" href="Self_8h_source.html">Self.h</a>.</p>
</div>
</div>
<a class="anchor" id="ae4256bfc598bb0db76141ffce506806e"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<class Data> </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classmeow_1_1Self.html">Self</a> const& <a class="el" href="classmeow_1_1Self.html">meow::Self</a>< Data >::duplicateFrom </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classmeow_1_1Self.html">Self</a>< Data > const & </td>
<td class="paramname"><em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classmeow_1_1Self.html#aa7d169e9d20d590f3e571206084797f8">DuplicateType</a> </td>
<td class="paramname"><em>t</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>call <code><a class="el" href="classmeow_1_1Self.html#a9cd016a38a09f479fe2ed83eb1ebdae2" title="Copy the gived Self to myself. ">copyFrom()</a></code> or <code><a class="el" href="classmeow_1_1Self.html#a63e1570c927c7fa3b95b71fe978e355d" title="Reference myself from given Self object. ">referenceFrom()</a></code> depend on your instruction </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">s</td><td>gived <code><a class="el" href="classmeow_1_1Self.html" title="A little class use for packing the data part of another class. With this technique, it can achieve Copy-On-Write(COR) mechanism at background and have a reference mechanism which much more flexible then the one C++ has. ">Self</a></code> object </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">t</td><td>instruction </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>*this </dd></dl>
<p>Definition at line <a class="el" href="Self_8h_source.html#l00262">262</a> of file <a class="el" href="Self_8h_source.html">Self.h</a>.</p>
</div>
</div>
<a class="anchor" id="a91098e2218c358470e81d64f35d6491d"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<class Data> </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classmeow_1_1Self.html">meow::Self</a>< Data >::equal </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classmeow_1_1Self.html">Self</a>< Data > const & </td>
<td class="paramname"><em>s</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Compare that the data are the same. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">s</td><td>another <code><a class="el" href="classmeow_1_1Self.html" title="A little class use for packing the data part of another class. With this technique, it can achieve Copy-On-Write(COR) mechanism at background and have a reference mechanism which much more flexible then the one C++ has. ">Self</a></code> object </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if the data are same.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This will need the method 'Data::equal()' </dd></dl>
<p>Definition at line <a class="el" href="Self_8h_source.html#l00289">289</a> of file <a class="el" href="Self_8h_source.html">Self.h</a>.</p>
</div>
</div>
<a class="anchor" id="a5962339e9ee49312ab770f1119256ca6"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<class Data> </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classmeow_1_1Self.html">Self</a>& <a class="el" href="classmeow_1_1Self.html">meow::Self</a>< Data >::operator() </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the non-constant reference of <code>*this</code>. </p>
<p>Definition at line <a class="el" href="Self_8h_source.html#l00223">223</a> of file <a class="el" href="Self_8h_source.html">Self.h</a>.</p>
</div>
</div>
<a class="anchor" id="a6063551c3e6ac647500e938ade8fbc99"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<class Data> </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Data const* <a class="el" href="classmeow_1_1Self.html">meow::Self</a>< Data >::operator-> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the constant pointer to the data. </p>
<p>Definition at line <a class="el" href="Self_8h_source.html#l00211">211</a> of file <a class="el" href="Self_8h_source.html">Self.h</a>.</p>
</div>
</div>
<a class="anchor" id="ace312355261c68ac7531767939f5c4c2"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<class Data> </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Data* <a class="el" href="classmeow_1_1Self.html">meow::Self</a>< Data >::operator-> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the non-constant pointer to the data (COR's clone might occure here. </p>
<p>Definition at line <a class="el" href="Self_8h_source.html#l00218">218</a> of file <a class="el" href="Self_8h_source.html">Self.h</a>.</p>
</div>
</div>
<a class="anchor" id="af3277e1109c59e5f81549889b344a675"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<class Data> </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classmeow_1_1Self.html">meow::Self</a>< Data >::operator= </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classmeow_1_1Self.html">Self</a>< Data > const & </td>
<td class="paramname"><em>a</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Disallow default <code>'operator='</code>. </p>
</div>
</div>
<a class="anchor" id="a63e1570c927c7fa3b95b71fe978e355d"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<class Data> </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classmeow_1_1Self.html">Self</a> const& <a class="el" href="classmeow_1_1Self.html">meow::Self</a>< Data >::referenceFrom </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classmeow_1_1Self.html">Self</a>< Data > const & </td>
<td class="paramname"><em>s</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reference myself from given <code><a class="el" href="classmeow_1_1Self.html" title="A little class use for packing the data part of another class. With this technique, it can achieve Copy-On-Write(COR) mechanism at background and have a reference mechanism which much more flexible then the one C++ has. ">Self</a></code> object. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">s</td><td>given <code><a class="el" href="classmeow_1_1Self.html" title="A little class use for packing the data part of another class. With this technique, it can achieve Copy-On-Write(COR) mechanism at background and have a reference mechanism which much more flexible then the one C++ has. ">Self</a></code> </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>*this </dd></dl>
<p>Definition at line <a class="el" href="Self_8h_source.html#l00246">246</a> of file <a class="el" href="Self_8h_source.html">Self.h</a>.</p>
</div>
</div>
<a class="anchor" id="a10f22a83c3afcf65f8f9680f2a2f945c"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<class Data> </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classmeow_1_1Self.html">meow::Self</a>< Data >::referenceLess </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classmeow_1_1Self.html">Self</a>< Data > const & </td>
<td class="paramname"><em>s</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Order compare by reference pointer. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">s</td><td>another <code><a class="el" href="classmeow_1_1Self.html" title="A little class use for packing the data part of another class. With this technique, it can achieve Copy-On-Write(COR) mechanism at background and have a reference mechanism which much more flexible then the one C++ has. ">Self</a></code> object </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="Self_8h_source.html#l00299">299</a> of file <a class="el" href="Self_8h_source.html">Self.h</a>.</p>
</div>
</div>
<a class="anchor" id="ab3671e44693b79e2f987f59652d46ca9"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<class Data> </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classmeow_1_1Self.html">meow::Self</a>< Data >::same </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classmeow_1_1Self.html">Self</a>< Data > const & </td>
<td class="paramname"><em>s</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Compare tht if the gived <code><a class="el" href="classmeow_1_1Self.html" title="A little class use for packing the data part of another class. With this technique, it can achieve Copy-On-Write(COR) mechanism at background and have a reference mechanism which much more flexible then the one C++ has. ">Self</a></code> object is reference from the same object of me. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">s</td><td>gived <code><a class="el" href="classmeow_1_1Self.html" title="A little class use for packing the data part of another class. With this technique, it can achieve Copy-On-Write(COR) mechanism at background and have a reference mechanism which much more flexible then the one C++ has. ">Self</a></code> object </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if we are referenced to the same object. </dd></dl>
<p>Definition at line <a class="el" href="Self_8h_source.html#l00277">277</a> of file <a class="el" href="Self_8h_source.html">Self.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>meowpp/<a class="el" href="Self_8h_source.html">Self.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.3.1-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespacemeow.html">meow</a></li><li class="navelem"><a class="el" href="classmeow_1_1Self.html">Self</a></li>
<li class="footer">Generated on Mon Jun 23 2014 17:02:08 for Templates -- Meow by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
</div>
</body>
</html>
|