aboutsummaryrefslogtreecommitdiffstats
path: root/doc/html/classmeow_1_1Self.html
diff options
context:
space:
mode:
Diffstat (limited to 'doc/html/classmeow_1_1Self.html')
-rw-r--r--doc/html/classmeow_1_1Self.html247
1 files changed, 199 insertions, 48 deletions
diff --git a/doc/html/classmeow_1_1Self.html b/doc/html/classmeow_1_1Self.html
index d753e2b..d8e34ad 100644
--- a/doc/html/classmeow_1_1Self.html
+++ b/doc/html/classmeow_1_1Self.html
@@ -56,6 +56,7 @@ $(document).ready(function(){initNavTree('classmeow_1_1Self.html','');});
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
+<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classmeow_1_1Self-members.html">List of all members</a> </div>
<div class="headertitle">
@@ -68,13 +69,27 @@ $(document).ready(function(){initNavTree('classmeow_1_1Self.html','');});
<p><code>#include &quot;<a class="el" href="Self_8h_source.html">Self.h</a>&quot;</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 &#160;</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">&#160;</td><td class="mdescRight">複製資料的方法 <a href="classmeow_1_1Self.html#aa7d169e9d20d590f3e571206084797f8">More...</a><br/></td></tr>
+<tr class="separator:aa7d169e9d20d590f3e571206084797f8"><td class="memSeparator" colspan="2">&#160;</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:a0db7c98f250aeee3b06a49ebe0f16937"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmeow_1_1Self.html#a0db7c98f250aeee3b06a49ebe0f16937">Self</a> (bool create_body)</td></tr>
-<tr class="memdesc:a0db7c98f250aeee3b06a49ebe0f16937"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructor <a href="#a0db7c98f250aeee3b06a49ebe0f16937">More...</a><br/></td></tr>
-<tr class="separator:a0db7c98f250aeee3b06a49ebe0f16937"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6b39fcc4b184809f9aeaeb1c9a0bac2d"><td class="memItemLeft" align="right" valign="top">&#160;</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">&#160;</td><td class="mdescRight">constructor, 並宣告一個實體 <a href="#a6b39fcc4b184809f9aeaeb1c9a0bac2d">More...</a><br/></td></tr>
+<tr class="separator:a6b39fcc4b184809f9aeaeb1c9a0bac2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af3220c1e1d7966c6dbaf4ec62f8cbc2f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmeow_1_1Self.html#af3220c1e1d7966c6dbaf4ec62f8cbc2f">Self</a> (Data const &amp;d)</td></tr>
+<tr class="memdesc:af3220c1e1d7966c6dbaf4ec62f8cbc2f"><td class="mdescLeft">&#160;</td><td class="mdescRight">connstructor, 宣告一個實體, 其中該實體的constructor用copy constructor <a href="#af3220c1e1d7966c6dbaf4ec62f8cbc2f">More...</a><br/></td></tr>
+<tr class="separator:af3220c1e1d7966c6dbaf4ec62f8cbc2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af98a65e83bb96c0860d91a5013b269ef"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmeow_1_1Self.html#af98a65e83bb96c0860d91a5013b269ef">Self</a> (<a class="el" href="classmeow_1_1Self.html">Self</a> const &amp;b, <a class="el" href="classmeow_1_1Self.html#aa7d169e9d20d590f3e571206084797f8">DuplicateType</a> d=<a class="el" href="classmeow_1_1Self.html#aa7d169e9d20d590f3e571206084797f8adef1b0d02e1090b1b610a4ea91bd6730">COPY_FROM</a>)</td></tr>
+<tr class="memdesc:af98a65e83bb96c0860d91a5013b269ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructor, 使用給定的Self當作init value, 並且可以指定要用 reference還是copy <a href="#af98a65e83bb96c0860d91a5013b269ef">More...</a><br/></td></tr>
+<tr class="separator:af98a65e83bb96c0860d91a5013b269ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a000ede7e217c31401cc0a4b1c6749ee5"><td class="memItemLeft" align="right" valign="top">&#160;</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 &amp;b)</td></tr>
-<tr class="memdesc:a000ede7e217c31401cc0a4b1c6749ee5"><td class="mdescLeft">&#160;</td><td class="mdescRight">不允許copy constructor <a href="#a000ede7e217c31401cc0a4b1c6749ee5">More...</a><br/></td></tr>
+<tr class="memdesc:a000ede7e217c31401cc0a4b1c6749ee5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disallow copy constructor. <a href="#a000ede7e217c31401cc0a4b1c6749ee5">More...</a><br/></td></tr>
<tr class="separator:a000ede7e217c31401cc0a4b1c6749ee5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada16564a03665b10810a6342d61044bc"><td class="memItemLeft" align="right" valign="top">&#160;</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">&#160;</td><td class="mdescRight">解構子 <a href="#ada16564a03665b10810a6342d61044bc">More...</a><br/></td></tr>
@@ -88,12 +103,15 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:a5962339e9ee49312ab770f1119256ca6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmeow_1_1Self.html">Self</a> &amp;&#160;</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">&#160;</td><td class="mdescRight">回傳非const型態的自己 <a href="#a5962339e9ee49312ab770f1119256ca6">More...</a><br/></td></tr>
<tr class="separator:a5962339e9ee49312ab770f1119256ca6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7ae7da730705bf2330a259308e5a6828"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmeow_1_1Self.html#a7ae7da730705bf2330a259308e5a6828">copyFrom</a> (<a class="el" href="classmeow_1_1Self.html">Self</a> const &amp;s)</td></tr>
-<tr class="memdesc:a7ae7da730705bf2330a259308e5a6828"><td class="mdescLeft">&#160;</td><td class="mdescRight">將給定的 <code><a class="el" href="classmeow_1_1Self.html" title="具有copy on write, 且擁有比C++更靈活的reference機制">Self</a></code> 的資料複製到自己這裡 <a href="#a7ae7da730705bf2330a259308e5a6828">More...</a><br/></td></tr>
-<tr class="separator:a7ae7da730705bf2330a259308e5a6828"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a576e99ba0ba6e8263b4d2cfd9238440f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmeow_1_1Self.html#a576e99ba0ba6e8263b4d2cfd9238440f">referenceFrom</a> (<a class="el" href="classmeow_1_1Self.html">Self</a> const &amp;s)</td></tr>
-<tr class="memdesc:a576e99ba0ba6e8263b4d2cfd9238440f"><td class="mdescLeft">&#160;</td><td class="mdescRight">將自己reference 到給定的 <code><a class="el" href="classmeow_1_1Self.html" title="具有copy on write, 且擁有比C++更靈活的reference機制">Self</a></code> <a href="#a576e99ba0ba6e8263b4d2cfd9238440f">More...</a><br/></td></tr>
-<tr class="separator:a576e99ba0ba6e8263b4d2cfd9238440f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9cd016a38a09f479fe2ed83eb1ebdae2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmeow_1_1Self.html">Self</a> const &amp;&#160;</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 &amp;s)</td></tr>
+<tr class="memdesc:a9cd016a38a09f479fe2ed83eb1ebdae2"><td class="mdescLeft">&#160;</td><td class="mdescRight">將給定的 <code><a class="el" href="classmeow_1_1Self.html" title="具有copy on write, 且擁有比C++更靈活的reference機制">Self</a></code> 的資料複製到自己這裡 <a href="#a9cd016a38a09f479fe2ed83eb1ebdae2">More...</a><br/></td></tr>
+<tr class="separator:a9cd016a38a09f479fe2ed83eb1ebdae2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a63e1570c927c7fa3b95b71fe978e355d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmeow_1_1Self.html">Self</a> const &amp;&#160;</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 &amp;s)</td></tr>
+<tr class="memdesc:a63e1570c927c7fa3b95b71fe978e355d"><td class="mdescLeft">&#160;</td><td class="mdescRight">將自己reference 到給定的 <code><a class="el" href="classmeow_1_1Self.html" title="具有copy on write, 且擁有比C++更靈活的reference機制">Self</a></code> <a href="#a63e1570c927c7fa3b95b71fe978e355d">More...</a><br/></td></tr>
+<tr class="separator:a63e1570c927c7fa3b95b71fe978e355d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae4256bfc598bb0db76141ffce506806e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmeow_1_1Self.html">Self</a> const &amp;&#160;</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 &amp;s, <a class="el" href="classmeow_1_1Self.html#aa7d169e9d20d590f3e571206084797f8">DuplicateType</a> t)</td></tr>
+<tr class="memdesc:ae4256bfc598bb0db76141ffce506806e"><td class="mdescLeft">&#160;</td><td class="mdescRight">依據給定DuplicateType選擇要呼叫copyFrom還是referenceFrom <a href="#ae4256bfc598bb0db76141ffce506806e">More...</a><br/></td></tr>
+<tr class="separator:ae4256bfc598bb0db76141ffce506806e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3671e44693b79e2f987f59652d46ca9"><td class="memItemLeft" align="right" valign="top">bool&#160;</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 &amp;s) const </td></tr>
<tr class="memdesc:ab3671e44693b79e2f987f59652d46ca9"><td class="mdescLeft">&#160;</td><td class="mdescRight">比對兩個 <code><a class="el" href="classmeow_1_1Self.html" title="具有copy on write, 且擁有比C++更靈活的reference機制">Self</a></code> 是否指向同一個reference <a href="#ab3671e44693b79e2f987f59652d46ca9">More...</a><br/></td></tr>
<tr class="separator:ab3671e44693b79e2f987f59652d46ca9"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -118,53 +136,129 @@ class meow::Self&lt; Data &gt;</h3>
<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"> Myself(){</div>
+<div class="line"> Myself() { <span class="comment">// 必要</span></div>
<div class="line"> data = 0;</div>
<div class="line"> }</div>
+<div class="line"> Myself(Myself <span class="keyword">const</span>&amp; b): data(b.data) { <span class="comment">// 必要, copy constructor</span></div>
+<div class="line"> }</div>
<div class="line"> ~Myself() {</div>
<div class="line"> }</div>
-<div class="line"> Myself <a class="code" href="classmeow_1_1Self.html#a7ae7da730705bf2330a259308e5a6828" title="將給定的 Self 的資料複製到自己這裡">copyFrom</a>(Myself <span class="keyword">const</span>&amp; ms)<span class="keyword"> const </span>{</div>
-<div class="line"> data = ms.data;</div>
+<div class="line"> <span class="keywordtype">bool</span> operator==(Myself <span class="keyword">const</span>&amp; b)<span class="keyword"> const </span>{ <span class="comment">// 不一定需要(有用到equal()才要)</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&lt;Myself&gt; <span class="keyword">const</span> <span class="keyword">self</span>;</div>
<div class="line"><span class="keyword">public</span>:</div>
-<div class="line"> A(): self(true) { <span class="comment">// self(true) 表示要建立實體, 即struct Myself</span></div>
-<div class="line"> }</div>
-<div class="line"> A(A <span class="keyword">const</span>&amp; a): self(false) { <span class="comment">// for std::swap</span></div>
-<div class="line"> <a class="code" href="classmeow_1_1Self.html#a7ae7da730705bf2330a259308e5a6828" title="將給定的 Self 的資料複製到自己這裡">copyFrom</a>(a);</div>
-<div class="line"> }</div>
-<div class="line"> <span class="comment">// A(A const&amp; a); // disable 模糊用法, 與上者二選一</span></div>
-<div class="line"> A(A <span class="keyword">const</span>&amp; a, <span class="keywordtype">bool</span> reference): self(false) {</div>
-<div class="line"> <span class="keywordflow">if</span> (reference) {</div>
-<div class="line"> <a class="code" href="classmeow_1_1Self.html#a576e99ba0ba6e8263b4d2cfd9238440f" title="將自己reference 到給定的 Self ">referenceFrom</a>(a);</div>
-<div class="line"> } <span class="keywordflow">else</span> {</div>
-<div class="line"> <a class="code" href="classmeow_1_1Self.html#a7ae7da730705bf2330a259308e5a6828" title="將給定的 Self 的資料複製到自己這裡">copyFrom</a>(a);</div>
-<div class="line"> }</div>
-<div class="line"> }</div>
-<div class="line"> ~A() {</div>
-<div class="line"> }</div>
+<div class="line"> A(): self() { } <span class="comment">// 預設呼叫Myself()</span></div>
+<div class="line"> A(A <span class="keyword">const</span>&amp; a): self(a.self, <a class="code" href="classmeow_1_1Self.html#aa7d169e9d20d590f3e571206084797f8adef1b0d02e1090b1b610a4ea91bd6730" title="跟一般的複製一樣">COPY_FROM</a>) { } <span class="comment">// 用Myself(b)做到copyFrom</span></div>
+<div class="line"> ~A() { }</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>()-&gt;data = k; <span class="comment">// self()-&gt;?? 可以有write權限</span></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>-&gt;data; <span class="comment">// self-&gt;?? 只有const</span></div>
<div class="line"> }</div>
-<div class="line"> A <a class="code" href="classmeow_1_1Self.html#a576e99ba0ba6e8263b4d2cfd9238440f" title="將自己reference 到給定的 Self ">referenceFrom</a>(A <span class="keyword">const</span>&amp; a) {</div>
-<div class="line"> <span class="keyword">self</span>.referenceFrom(a.self);</div>
+<div class="line"> A <a class="code" href="classmeow_1_1Self.html#a63e1570c927c7fa3b95b71fe978e355d" title="將自己reference 到給定的 Self ">referenceFrom</a>(A <span class="keyword">const</span>&amp; a) {</div>
+<div class="line"> <span class="keyword">self</span>.<a class="code" href="classmeow_1_1Self.html#a63e1570c927c7fa3b95b71fe978e355d" title="將自己reference 到給定的 Self ">referenceFrom</a>(a.self);</div>
<div class="line"> }</div>
-<div class="line"> A <a class="code" href="classmeow_1_1Self.html#a7ae7da730705bf2330a259308e5a6828" title="將給定的 Self 的資料複製到自己這裡">copyFrom</a>(A <span class="keyword">const</span>&amp; a) {</div>
-<div class="line"> <span class="keyword">self</span>.copyFrom(a.self);</div>
+<div class="line"> A <a class="code" href="classmeow_1_1Self.html#a9cd016a38a09f479fe2ed83eb1ebdae2" title="將給定的 Self 的資料複製到自己這裡">copyFrom</a>(A <span class="keyword">const</span>&amp; a) {</div>
+<div class="line"> <span class="keyword">self</span>.<a class="code" href="classmeow_1_1Self.html#a9cd016a38a09f479fe2ed83eb1ebdae2" title="將給定的 Self 的資料複製到自己這裡">copyFrom</a>(a.self);</div>
<div class="line"> }</div>
<div class="line"> A&amp; <a class="code" href="classmeow_1_1Self.html#af3277e1109c59e5f81549889b344a675" title="將 operator= 給disable掉">operator=</a>(A <span class="keyword">const</span>&amp; b) { <span class="comment">// for std::swap</span></div>
-<div class="line"> <a class="code" href="classmeow_1_1Self.html#a7ae7da730705bf2330a259308e5a6828" title="將給定的 Self 的資料複製到自己這裡">copyFrom</a>(b);</div>
+<div class="line"> <a class="code" href="classmeow_1_1Self.html#a9cd016a38a09f479fe2ed83eb1ebdae2" title="將給定的 Self 的資料複製到自己這裡">copyFrom</a>(b);</div>
<div class="line"> }</div>
-<div class="line"> A&amp; <a class="code" href="classmeow_1_1Self.html#af3277e1109c59e5f81549889b344a675" title="將 operator= 給disable掉">operator=</a>(A <span class="keyword">const</span>&amp; b); <span class="comment">// 避免諢亂用法</span></div>
<div class="line">};</div>
</div><!-- fragment --><dl class="section author"><dt>Author</dt><dd>cathook</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd><code><a class="el" href="classmeow_1_1Self.html" title="具有copy on write, 且擁有比C++更靈活的reference機制">Self</a></code> 這個class會把<code>operator=</code> 給disable掉, 所以使用它當 kernel的class預設的 <code>operator=</code> 都會無法使用 </dd></dl>
-</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
-<a class="anchor" id="a0db7c98f250aeee3b06a49ebe0f16937"></a>
+</div><h2 class="groupheader">Member Enumeration Documentation</h2>
+<a class="anchor" id="aa7d169e9d20d590f3e571206084797f8"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class Data&gt; </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>複製資料的方法 </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>&nbsp;</td><td class="fielddoc">
+<p>跟一般的複製一樣 </p>
+</td></tr>
+<tr><td class="fieldname"><em><a class="anchor" id="aa7d169e9d20d590f3e571206084797f8a40c8a3eba568e04a5ce09ee0fa881822"></a>REFERENCE_FROM</em>&nbsp;</td><td class="fielddoc">
+<p>參照, 執行完兩個Self會完全等效 </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a6b39fcc4b184809f9aeaeb1c9a0bac2d"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class Data&gt; </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>&lt; Data &gt;::<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, 並宣告一個實體 </p>
+
+</div>
+</div>
+<a class="anchor" id="af3220c1e1d7966c6dbaf4ec62f8cbc2f"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class Data&gt; </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>&lt; Data &gt;::<a class="el" href="classmeow_1_1Self.html">Self</a> </td>
+ <td>(</td>
+ <td class="paramtype">Data const &amp;&#160;</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, 宣告一個實體, 其中該實體的constructor用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>
+
+</div>
+</div>
+<a class="anchor" id="af98a65e83bb96c0860d91a5013b269ef"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -176,9 +270,19 @@ template&lt;class Data&gt; </div>
<tr>
<td class="memname"><a class="el" href="classmeow_1_1Self.html">meow::Self</a>&lt; Data &gt;::<a class="el" href="classmeow_1_1Self.html">Self</a> </td>
<td>(</td>
- <td class="paramtype">bool&#160;</td>
- <td class="paramname"><em>create_body</em></td><td>)</td>
+ <td class="paramtype"><a class="el" href="classmeow_1_1Self.html">Self</a>&lt; Data &gt; const &amp;&#160;</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>&#160;</td>
+ <td class="paramname"><em>d</em> = <code><a class="el" href="classmeow_1_1Self.html#aa7d169e9d20d590f3e571206084797f8adef1b0d02e1090b1b610a4ea91bd6730">COPY_FROM</a></code>&#160;</td>
+ </tr>
+ <tr>
<td></td>
+ <td>)</td>
+ <td></td><td></td>
</tr>
</table>
</td>
@@ -188,10 +292,11 @@ template&lt;class Data&gt; </div>
</table>
</div><div class="memdoc">
-<p>constructor </p>
+<p>constructor, 使用給定的Self當作init value, 並且可以指定要用 reference還是copy </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">create_body</td><td>是否要new一個實體資料 (如果constructor完, 馬上就要 <code><a class="el" href="classmeow_1_1Self.html#a7ae7da730705bf2330a259308e5a6828" title="將給定的 Self 的資料複製到自己這裡">copyFrom()</a></code> , 或是 <code><a class="el" href="classmeow_1_1Self.html#a576e99ba0ba6e8263b4d2cfd9238440f" title="將自己reference 到給定的 Self ">referenceFrom()</a></code> 的話 不太需要 new一個實體, 否則基本上都要 </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>給定的Self </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">d</td><td>指定要用copy還是reference </td></tr>
</table>
</dd>
</dl>
@@ -214,7 +319,7 @@ template&lt;class Data&gt; </div>
</table>
</div><div class="memdoc">
-<p>不允許copy constructor </p>
+<p>Disallow copy constructor. </p>
</div>
</div>
@@ -246,7 +351,7 @@ template&lt;class Data&gt; </div>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a7ae7da730705bf2330a259308e5a6828"></a>
+<a class="anchor" id="a9cd016a38a09f479fe2ed83eb1ebdae2"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -256,7 +361,7 @@ template&lt;class Data&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">void <a class="el" href="classmeow_1_1Self.html">meow::Self</a>&lt; Data &gt;::copyFrom </td>
+ <td class="memname"><a class="el" href="classmeow_1_1Self.html">Self</a> const&amp; <a class="el" href="classmeow_1_1Self.html">meow::Self</a>&lt; Data &gt;::copyFrom </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classmeow_1_1Self.html">Self</a>&lt; Data &gt; const &amp;&#160;</td>
<td class="paramname"><em>s</em></td><td>)</td>
@@ -277,11 +382,57 @@ template&lt;class Data&gt; </div>
</table>
</dd>
</dl>
-<dl class="section return"><dt>Returns</dt><dd>無</dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>*this</dd></dl>
<dl class="section note"><dt>Note</dt><dd>與reference的差別是, copy之後若該給定的 <code><a class="el" href="classmeow_1_1Self.html" title="具有copy on write, 且擁有比C++更靈活的reference機制">Self</a></code> 有資料修改, this 這邊 <b>不會</b> 被改到 </dd></dl>
</div>
</div>
+<a class="anchor" id="ae4256bfc598bb0db76141ffce506806e"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class Data&gt; </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&amp; <a class="el" href="classmeow_1_1Self.html">meow::Self</a>&lt; Data &gt;::duplicateFrom </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classmeow_1_1Self.html">Self</a>&lt; Data &gt; const &amp;&#160;</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>&#160;</td>
+ <td class="paramname"><em>t</em>&#160;</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>依據給定DuplicateType選擇要呼叫copyFrom還是referenceFrom </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">s</td><td>給定的 <code><a class="el" href="classmeow_1_1Self.html" title="具有copy on write, 且擁有比C++更靈活的reference機制">Self</a></code> </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">t</td><td>給定的 <code>DuplicateType</code> </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>*this </dd></dl>
+
+</div>
+</div>
<a class="anchor" id="a91098e2218c358470e81d64f35d6491d"></a>
<div class="memitem">
<div class="memproto">
@@ -419,7 +570,7 @@ template&lt;class Data&gt; </div>
</div>
</div>
-<a class="anchor" id="a576e99ba0ba6e8263b4d2cfd9238440f"></a>
+<a class="anchor" id="a63e1570c927c7fa3b95b71fe978e355d"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -429,7 +580,7 @@ template&lt;class Data&gt; </div>
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">void <a class="el" href="classmeow_1_1Self.html">meow::Self</a>&lt; Data &gt;::referenceFrom </td>
+ <td class="memname"><a class="el" href="classmeow_1_1Self.html">Self</a> const&amp; <a class="el" href="classmeow_1_1Self.html">meow::Self</a>&lt; Data &gt;::referenceFrom </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classmeow_1_1Self.html">Self</a>&lt; Data &gt; const &amp;&#160;</td>
<td class="paramname"><em>s</em></td><td>)</td>
@@ -450,7 +601,7 @@ template&lt;class Data&gt; </div>
</table>
</dd>
</dl>
-<dl class="section return"><dt>Returns</dt><dd>無</dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>*this</dd></dl>
<dl class="section note"><dt>Note</dt><dd>把reference想像成指標會比較容易思考, 譬如 <code>a.referenceFrom(b)</code> <code>b.referenceFrom(c)</code> 相當於 <b>a指向b原本指的記憶體位置</b>, <b>b指向c原本指的記憶體位置</b> , 之後更動c時, 只有b會被牽連 </dd></dl>
</div>
@@ -535,7 +686,7 @@ template&lt;class Data&gt; </div>
<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 Sun Jun 1 2014 13:54:37 for Templates -- Meow by
+ <li class="footer">Generated on Fri Jun 6 2014 17:51:50 for Templates -- Meow by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.3.1 </li>
</ul>