Changeset 651 for library/doc/html/user__info_8h_source.html
- Timestamp:
- 10/12/09 13:49:39 (15 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
library/doc/html/user__info_8h_source.html
r641 r651 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2 <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 5 3 <title>mixpp: user_info.h Source File</title> 6 <link href="tabs.css" rel="stylesheet" type="text/css"/> 7 <link href="doxygen.css" rel="stylesheet" type="text/css"/> 8 </head> 9 <body> 10 <!-- Generated by Doxygen 1.6.1 --> 4 <link href="tabs.css" rel="stylesheet" type="text/css"> 5 <link href="doxygen.css" rel="stylesheet" type="text/css"> 6 </head><body> 7 <!-- Generated by Doxygen 1.5.9 --> 11 8 <script type="text/javascript"> 12 9 <!-- … … 75 72 <a name="l00022"></a>00022 <span class="preprocessor">#include <stdexcept></span> 76 73 <a name="l00023"></a>00023 77 <a name="l00024"></a>00024 <span class="preprocessor">#include "libconfig/libconfig.h++"</span>78 <a name="l00025"></a>00025 <span class="preprocessor">#include "../bdmroot.h"</span>79 <a name="l00026"></a>00026 <span class="preprocessor">#include "../shared_ptr.h"</span>80 <a name="l00027"></a>00027 <span class="preprocessor">#include "itpp/itbase.h"</span>74 <a name="l00024"></a>00024 <span class="preprocessor">#include "libconfig/libconfig.h++"</span> 75 <a name="l00025"></a>00025 <span class="preprocessor">#include "../bdmroot.h"</span> 76 <a name="l00026"></a>00026 <span class="preprocessor">#include "../shared_ptr.h"</span> 77 <a name="l00027"></a>00027 <span class="preprocessor">#include "itpp/itbase.h"</span> 81 78 <a name="l00028"></a>00028 82 79 <a name="l00029"></a>00029 … … 92 89 <a name="l00043"></a>00043 93 90 <a name="l00044"></a>00044 <span class="keyword">public</span>: 94 <a name="l00049"></a><a class="code" href="classbdm_1_1UIException.html# a7b2b53f2265165deea6f7c0cce1aa770">00049</a> <a class="code" href="classbdm_1_1UIException.html#a7b2b53f2265165deea6f7c0cce1aa770" title="The constructor.">UIException</a> ( <span class="keyword">const</span> <span class="keywordtype">string</span> &message ) :91 <a name="l00049"></a><a class="code" href="classbdm_1_1UIException.html#7b2b53f2265165deea6f7c0cce1aa770">00049</a> <a class="code" href="classbdm_1_1UIException.html#7b2b53f2265165deea6f7c0cce1aa770" title="The constructor.">UIException</a> ( <span class="keyword">const</span> <span class="keywordtype">string</span> &message ) : 95 92 <a name="l00050"></a>00050 message ( message ) { 96 93 <a name="l00051"></a>00051 } 97 94 <a name="l00052"></a>00052 98 <a name="l00054"></a><a class="code" href="classbdm_1_1UIException.html# a1bf477e4ea19abb638fe5b883f09218e">00054</a> <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classbdm_1_1UIException.html#a1bf477e4ea19abb638fe5b883f09218e" title="Overriden method for reporting the error message.">what</a>() <span class="keyword">const</span> throw() {95 <a name="l00054"></a><a class="code" href="classbdm_1_1UIException.html#1bf477e4ea19abb638fe5b883f09218e">00054</a> <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classbdm_1_1UIException.html#1bf477e4ea19abb638fe5b883f09218e" title="Overriden method for reporting the error message.">what</a>() <span class="keyword">const</span> throw() { 99 96 <a name="l00055"></a>00055 <span class="keywordflow">return</span> message.c_str(); 100 97 <a name="l00056"></a>00056 } … … 103 100 <a name="l00059"></a>00059 104 101 <a name="l00060"></a>00060 <span class="keyword">protected</span>: 105 <a name="l00065"></a>00065 <span class="keyword">static</span> <span class="keywordtype">string</span> <a class="code" href="classbdm_1_1UIException.html# a864c8a6b9000691ea3e0f2b48b6f9d6a">format_message</a>( <span class="keyword">const</span> <span class="keywordtype">string</span> &reason, <span class="keyword">const</span> <span class="keywordtype">string</span> &path );102 <a name="l00065"></a>00065 <span class="keyword">static</span> <span class="keywordtype">string</span> <a class="code" href="classbdm_1_1UIException.html#864c8a6b9000691ea3e0f2b48b6f9d6a">format_message</a>( <span class="keyword">const</span> <span class="keywordtype">string</span> &reason, <span class="keyword">const</span> <span class="keywordtype">string</span> &path ); 106 103 <a name="l00066"></a>00066 }; 107 104 <a name="l00067"></a>00067 108 105 <a name="l00071"></a><a class="code" href="classbdm_1_1UISettingException.html">00071</a> <span class="keyword">class </span><a class="code" href="classbdm_1_1UISettingException.html">UISettingException</a> : <span class="keyword">public</span> <a class="code" href="classbdm_1_1UIException.html">UIException</a> { 109 106 <a name="l00072"></a>00072 <span class="keyword">public</span>: 110 <a name="l00074"></a><a class="code" href="classbdm_1_1UISettingException.html# a8cc4ce2a91b79b6bc88a3ca563799a4c">00074</a> <a class="code" href="classbdm_1_1UISettingException.html#a8cc4ce2a91b79b6bc88a3ca563799a4c" title="Use this constructor when you can pass the problematical Setting as a parameter.">UISettingException</a> ( <span class="keyword">const</span> <span class="keywordtype">string</span> &message, <span class="keyword">const</span> Setting &element ):111 <a name="l00075"></a>00075 <a class="code" href="classbdm_1_1UIException.html">UIException</a> ( <a class="code" href="classbdm_1_1UIException.html# a864c8a6b9000691ea3e0f2b48b6f9d6a">format_message</a> ( message, string ( element.getPath() ) ) ) {107 <a name="l00074"></a><a class="code" href="classbdm_1_1UISettingException.html#8cc4ce2a91b79b6bc88a3ca563799a4c">00074</a> <a class="code" href="classbdm_1_1UISettingException.html#8cc4ce2a91b79b6bc88a3ca563799a4c" title="Use this constructor when you can pass the problematical Setting as a parameter.">UISettingException</a> ( <span class="keyword">const</span> <span class="keywordtype">string</span> &message, <span class="keyword">const</span> Setting &element ): 108 <a name="l00075"></a>00075 <a class="code" href="classbdm_1_1UIException.html">UIException</a> ( <a class="code" href="classbdm_1_1UIException.html#864c8a6b9000691ea3e0f2b48b6f9d6a">format_message</a> ( message, string ( element.getPath() ) ) ) { 112 109 <a name="l00076"></a>00076 } 113 110 <a name="l00077"></a>00077 114 <a name="l00079"></a><a class="code" href="classbdm_1_1UISettingException.html# a3527101bc7d484b32c44561599dac706">00079</a> <a class="code" href="classbdm_1_1UISettingException.html#a8cc4ce2a91b79b6bc88a3ca563799a4c" title="Use this constructor when you can pass the problematical Setting as a parameter.">UISettingException</a> ( <span class="keyword">const</span> <span class="keywordtype">string</span> &message, <span class="keyword">const</span> <span class="keywordtype">string</span> &path ):115 <a name="l00080"></a>00080 <a class="code" href="classbdm_1_1UIException.html">UIException</a> ( <a class="code" href="classbdm_1_1UIException.html# a864c8a6b9000691ea3e0f2b48b6f9d6a">format_message</a> ( message, path ) ) {111 <a name="l00079"></a><a class="code" href="classbdm_1_1UISettingException.html#3527101bc7d484b32c44561599dac706">00079</a> <a class="code" href="classbdm_1_1UISettingException.html#8cc4ce2a91b79b6bc88a3ca563799a4c" title="Use this constructor when you can pass the problematical Setting as a parameter.">UISettingException</a> ( <span class="keyword">const</span> <span class="keywordtype">string</span> &message, <span class="keyword">const</span> <span class="keywordtype">string</span> &path ): 112 <a name="l00080"></a>00080 <a class="code" href="classbdm_1_1UIException.html">UIException</a> ( <a class="code" href="classbdm_1_1UIException.html#864c8a6b9000691ea3e0f2b48b6f9d6a">format_message</a> ( message, path ) ) { 116 113 <a name="l00081"></a>00081 } 117 114 <a name="l00082"></a>00082 … … 121 118 <a name="l00089"></a><a class="code" href="classbdm_1_1UIClassException.html">00089</a> <span class="keyword">class </span><a class="code" href="classbdm_1_1UIClassException.html">UIClassException</a> : <span class="keyword">public</span> <a class="code" href="classbdm_1_1UIException.html">UIException</a> { 122 119 <a name="l00090"></a>00090 <span class="keyword">public</span>: 123 <a name="l00092"></a><a class="code" href="classbdm_1_1UIClassException.html# ab2e391810138b684f1c4aa7084d49bb6">00092</a> <a class="code" href="classbdm_1_1UIClassException.html#ab2e391810138b684f1c4aa7084d49bb6" title="Use this constructor when you can pass the problematical Setting as a parameter.">UIClassException</a> ( <span class="keyword">const</span> <span class="keywordtype">string</span> &message, <span class="keyword">const</span> Setting &element ):124 <a name="l00093"></a>00093 <a class="code" href="classbdm_1_1UIException.html">UIException</a> ( <a class="code" href="classbdm_1_1UIException.html# a864c8a6b9000691ea3e0f2b48b6f9d6a">format_message</a> ( message, string ( element.getPath() ) ) ) {120 <a name="l00092"></a><a class="code" href="classbdm_1_1UIClassException.html#b2e391810138b684f1c4aa7084d49bb6">00092</a> <a class="code" href="classbdm_1_1UIClassException.html#b2e391810138b684f1c4aa7084d49bb6" title="Use this constructor when you can pass the problematical Setting as a parameter.">UIClassException</a> ( <span class="keyword">const</span> <span class="keywordtype">string</span> &message, <span class="keyword">const</span> Setting &element ): 121 <a name="l00093"></a>00093 <a class="code" href="classbdm_1_1UIException.html">UIException</a> ( <a class="code" href="classbdm_1_1UIException.html#864c8a6b9000691ea3e0f2b48b6f9d6a">format_message</a> ( message, string ( element.getPath() ) ) ) { 125 122 <a name="l00094"></a>00094 } 126 123 <a name="l00095"></a>00095 127 <a name="l00097"></a><a class="code" href="classbdm_1_1UIClassException.html# abab8fb018b11c33628c6f08140ce13f0">00097</a> <a class="code" href="classbdm_1_1UIClassException.html#ab2e391810138b684f1c4aa7084d49bb6" title="Use this constructor when you can pass the problematical Setting as a parameter.">UIClassException</a> ( <span class="keyword">const</span> <span class="keywordtype">string</span> &message, <span class="keyword">const</span> <span class="keywordtype">string</span> &path ):128 <a name="l00098"></a>00098 <a class="code" href="classbdm_1_1UIException.html">UIException</a> ( <a class="code" href="classbdm_1_1UIException.html# a864c8a6b9000691ea3e0f2b48b6f9d6a">format_message</a> ( message, path ) ) {124 <a name="l00097"></a><a class="code" href="classbdm_1_1UIClassException.html#bab8fb018b11c33628c6f08140ce13f0">00097</a> <a class="code" href="classbdm_1_1UIClassException.html#b2e391810138b684f1c4aa7084d49bb6" title="Use this constructor when you can pass the problematical Setting as a parameter.">UIClassException</a> ( <span class="keyword">const</span> <span class="keywordtype">string</span> &message, <span class="keyword">const</span> <span class="keywordtype">string</span> &path ): 125 <a name="l00098"></a>00098 <a class="code" href="classbdm_1_1UIException.html">UIException</a> ( <a class="code" href="classbdm_1_1UIException.html#864c8a6b9000691ea3e0f2b48b6f9d6a">format_message</a> ( message, path ) ) { 129 126 <a name="l00099"></a>00099 } 130 127 <a name="l00100"></a>00100 … … 134 131 <a name="l00128"></a><a class="code" href="classbdm_1_1UIFile.html">00128</a> <span class="keyword">class </span><a class="code" href="classbdm_1_1UIFile.html" title="This class serves to load and/or save user-infos into/from configuration files stored...">UIFile</a> : <span class="keyword">public</span> Config { 135 132 <a name="l00129"></a>00129 <span class="keyword">public</span>: 136 <a name="l00131"></a>00131 <a class="code" href="classbdm_1_1UIFile.html# a77274c827f87f16bd6671df8a0cc1e33" title="Create empty file instance prepared to store Settings.">UIFile</a>();133 <a name="l00131"></a>00131 <a class="code" href="classbdm_1_1UIFile.html#77274c827f87f16bd6671df8a0cc1e33" title="Create empty file instance prepared to store Settings.">UIFile</a>(); 137 134 <a name="l00132"></a>00132 138 <a name="l00134"></a>00134 <a class="code" href="classbdm_1_1UIFile.html# a77274c827f87f16bd6671df8a0cc1e33" title="Create empty file instance prepared to store Settings.">UIFile</a> ( <span class="keyword">const</span> <span class="keywordtype">string</span> &file_name );135 <a name="l00134"></a>00134 <a class="code" href="classbdm_1_1UIFile.html#77274c827f87f16bd6671df8a0cc1e33" title="Create empty file instance prepared to store Settings.">UIFile</a> ( <span class="keyword">const</span> <span class="keywordtype">string</span> &file_name ); 139 136 <a name="l00135"></a>00135 140 <a name="l00137"></a>00137 <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1UIFile.html# a1f8af28a0d8ef1a4956e198df0beb5ba" title="Save all the stored Settings into the configuration file file_name.">save</a> ( <span class="keyword">const</span> <span class="keywordtype">string</span> &file_name );137 <a name="l00137"></a>00137 <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1UIFile.html#1f8af28a0d8ef1a4956e198df0beb5ba" title="Save all the stored Settings into the configuration file file_name.">save</a> ( <span class="keyword">const</span> <span class="keywordtype">string</span> &file_name ); 141 138 <a name="l00138"></a>00138 142 <a name="l00140"></a>00140 <a class="code" href="classbdm_1_1UIFile.html# a5bce10d88c71f6147d58baa8400ff61f" title="This operator allows the ability of substituting Setting parameter by UIFile instance...">operator Setting&</a>();139 <a name="l00140"></a>00140 <a class="code" href="classbdm_1_1UIFile.html#5bce10d88c71f6147d58baa8400ff61f" title="This operator allows the ability of substituting Setting parameter by UIFile instance...">operator Setting&</a>(); 143 140 <a name="l00141"></a>00141 }; 144 141 <a name="l00142"></a>00142 … … 150 147 <a name="l00220"></a>00220 151 148 <a name="l00221"></a>00221 <span class="keyword">public</span>: 152 <a name="l00223"></a><a class="code" href="classbdm_1_1SettingResolver.html#a adfcd0a81d025c52c8335b6aea07b498">00223</a> <span class="keyword">const</span> Setting &<a class="code" href="classbdm_1_1SettingResolver.html#aadfcd0a81d025c52c8335b6aea07b498" title="Reference to a resolved link or to the original Setting in the case it does not contain...">result</a>;149 <a name="l00223"></a><a class="code" href="classbdm_1_1SettingResolver.html#adfcd0a81d025c52c8335b6aea07b498">00223</a> <span class="keyword">const</span> Setting &<a class="code" href="classbdm_1_1SettingResolver.html#adfcd0a81d025c52c8335b6aea07b498" title="Reference to a resolved link or to the original Setting in the case it does not contain...">result</a>; 153 150 <a name="l00224"></a>00224 154 <a name="l00226"></a>00226 <a class="code" href="classbdm_1_1SettingResolver.html# ae2299746b95bf8af54a867aaf52fc8da" title="If potential_link contains a link to some other setting, it is resolved here. Anyway...">SettingResolver</a> ( <span class="keyword">const</span> Setting &potential_link );151 <a name="l00226"></a>00226 <a class="code" href="classbdm_1_1SettingResolver.html#e2299746b95bf8af54a867aaf52fc8da" title="If potential_link contains a link to some other setting, it is resolved here. Anyway...">SettingResolver</a> ( <span class="keyword">const</span> Setting &potential_link ); 155 152 <a name="l00227"></a>00227 156 <a name="l00229"></a>00229 <a class="code" href="classbdm_1_1SettingResolver.html# ac8b29999710e2db98c1a3979e25e6bbc" title="An opened UIFile file is closed here if necessary.">~SettingResolver</a>();153 <a name="l00229"></a>00229 <a class="code" href="classbdm_1_1SettingResolver.html#c8b29999710e2db98c1a3979e25e6bbc" title="An opened UIFile file is closed here if necessary.">~SettingResolver</a>(); 157 154 <a name="l00230"></a>00230 }; 158 155 <a name="l00231"></a>00231 … … 196 193 <a name="l00310"></a>00310 <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keywordtype">void</span> from_setting ( T* &instance, <span class="keyword">const</span> Setting &element ) { 197 194 <a name="l00311"></a>00311 <span class="keyword">const</span> <a class="code" href="classbdm_1_1SettingResolver.html" title="This class serves to expand links used within configuration files.">SettingResolver</a> link ( element ); 198 <a name="l00312"></a>00312 assert_type ( link.<a class="code" href="classbdm_1_1SettingResolver.html#a adfcd0a81d025c52c8335b6aea07b498" title="Reference to a resolved link or to the original Setting in the case it does not contain...">result</a>, Setting::TypeGroup );195 <a name="l00312"></a>00312 assert_type ( link.<a class="code" href="classbdm_1_1SettingResolver.html#adfcd0a81d025c52c8335b6aea07b498" title="Reference to a resolved link or to the original Setting in the case it does not contain...">result</a>, Setting::TypeGroup ); 199 196 <a name="l00313"></a>00313 200 <a name="l00314"></a>00314 <span class="comment">// we get a value stored in the "class"attribute</span>197 <a name="l00314"></a>00314 <span class="comment">// we get a value stored in the "class" attribute</span> 201 198 <a name="l00315"></a>00315 <span class="keywordtype">string</span> class_name; 202 <a name="l00316"></a>00316 <span class="keywordflow">if</span> ( !link.<a class="code" href="classbdm_1_1SettingResolver.html#a adfcd0a81d025c52c8335b6aea07b498" title="Reference to a resolved link or to the original Setting in the case it does not contain...">result</a>.lookupValue ( <span class="stringliteral">"class"</span>, class_name ) )203 <a name="l00317"></a>00317 <span class="keywordflow">throw</span> <a class="code" href="classbdm_1_1UIClassException.html">UIClassException</a> ( <span class="stringliteral"> "UIException: the obligatory \"class\" identifier is missing."</span>, link.<a class="code" href="classbdm_1_1SettingResolver.html#aadfcd0a81d025c52c8335b6aea07b498" title="Reference to a resolved link or to the original Setting in the case it does not contain...">result</a> );199 <a name="l00316"></a>00316 <span class="keywordflow">if</span> ( !link.<a class="code" href="classbdm_1_1SettingResolver.html#adfcd0a81d025c52c8335b6aea07b498" title="Reference to a resolved link or to the original Setting in the case it does not contain...">result</a>.lookupValue ( <span class="stringliteral">"class"</span>, class_name ) ) 200 <a name="l00317"></a>00317 <span class="keywordflow">throw</span> <a class="code" href="classbdm_1_1UIClassException.html">UIClassException</a> ( <span class="stringliteral">"UIException: the obligatory \"class\" identifier is missing."</span>, link.<a class="code" href="classbdm_1_1SettingResolver.html#adfcd0a81d025c52c8335b6aea07b498" title="Reference to a resolved link or to the original Setting in the case it does not contain...">result</a> ); 204 201 <a name="l00318"></a>00318 205 202 <a name="l00319"></a>00319 <span class="comment">// then we find a user-info related to this type</span> … … 207 204 <a name="l00321"></a>00321 208 205 <a name="l00322"></a>00322 <a class="code" href="classbdm_1_1root.html" title="Root class of BDM objects.">root</a> *typeless_instance = related_UI.new_instance(); 209 <a name="l00323"></a>00323 <a class="code" href="bdmerror_8h.html# a7a3399d182b8e3065532596e76f84849" title="Throw std::runtime_exception if t is not true.">bdm_assert</a> ( typeless_instance, <span class="stringliteral">"UI::new_instance failed"</span> );206 <a name="l00323"></a>00323 <a class="code" href="bdmerror_8h.html#7a3399d182b8e3065532596e76f84849" title="Throw std::runtime_exception if t is not true.">bdm_assert</a> ( typeless_instance, <span class="stringliteral">"UI::new_instance failed"</span> ); 210 207 <a name="l00324"></a>00324 211 208 <a name="l00325"></a>00325 instance = <span class="keyword">dynamic_cast<</span>T*<span class="keyword">></span> ( typeless_instance ); 212 209 <a name="l00326"></a>00326 <span class="keywordflow">if</span> ( !instance ) { 213 210 <a name="l00327"></a>00327 <span class="keyword">delete</span> typeless_instance; 214 <a name="l00328"></a>00328 <span class="keywordflow">throw</span> <a class="code" href="classbdm_1_1UIClassException.html">UIClassException</a> ( <span class="stringliteral"> "UIException: class "</span> + class_name + <span class="stringliteral">" is not a descendant of the desired output class. Try to call the UI::build<T> function with a different type parameter."</span>, link.<a class="code" href="classbdm_1_1SettingResolver.html#aadfcd0a81d025c52c8335b6aea07b498" title="Reference to a resolved link or to the original Setting in the case it does not contain...">result</a> );211 <a name="l00328"></a>00328 <span class="keywordflow">throw</span> <a class="code" href="classbdm_1_1UIClassException.html">UIClassException</a> ( <span class="stringliteral">"UIException: class "</span> + class_name + <span class="stringliteral">" is not a descendant of the desired output class. Try to call the UI::build<T> function with a different type parameter."</span>, link.<a class="code" href="classbdm_1_1SettingResolver.html#adfcd0a81d025c52c8335b6aea07b498" title="Reference to a resolved link or to the original Setting in the case it does not contain...">result</a> ); 215 212 <a name="l00329"></a>00329 } 216 213 <a name="l00330"></a>00330 217 214 <a name="l00331"></a>00331 <span class="keywordflow">try</span> { 218 <a name="l00332"></a>00332 instance->from_setting ( link.<a class="code" href="classbdm_1_1SettingResolver.html#a adfcd0a81d025c52c8335b6aea07b498" title="Reference to a resolved link or to the original Setting in the case it does not contain...">result</a> );215 <a name="l00332"></a>00332 instance->from_setting ( link.<a class="code" href="classbdm_1_1SettingResolver.html#adfcd0a81d025c52c8335b6aea07b498" title="Reference to a resolved link or to the original Setting in the case it does not contain...">result</a> ); 219 216 <a name="l00333"></a>00333 } <span class="keywordflow">catch</span> ( SettingException &sttng_xcptn ) { 220 217 <a name="l00334"></a>00334 <span class="keyword">delete</span> instance; 221 218 <a name="l00335"></a>00335 instance = 0; 222 <a name="l00336"></a>00336 <span class="keywordtype">string</span> msg = <span class="stringliteral"> "UIException: method "</span>;219 <a name="l00336"></a>00336 <span class="keywordtype">string</span> msg = <span class="stringliteral">"UIException: method "</span>; 223 220 <a name="l00337"></a>00337 msg += class_name; 224 <a name="l00338"></a>00338 msg += <span class="stringliteral"> ".from_setting(Setting&) has thrown a SettingException."</span>;221 <a name="l00338"></a>00338 msg += <span class="stringliteral">".from_setting(Setting&) has thrown a SettingException."</span>; 225 222 <a name="l00339"></a>00339 <span class="keywordflow">throw</span> <a class="code" href="classbdm_1_1UISettingException.html">UISettingException</a>(msg, sttng_xcptn.getPath()); 226 223 <a name="l00340"></a>00340 } <span class="keywordflow">catch</span> (std::runtime_error &e) { 227 224 <a name="l00341"></a>00341 <span class="keyword">delete</span> instance; 228 225 <a name="l00342"></a>00342 instance = 0; 229 <a name="l00343"></a>00343 <span class="keywordtype">string</span> msg = <span class="stringliteral"> "UIException: method "</span>;226 <a name="l00343"></a>00343 <span class="keywordtype">string</span> msg = <span class="stringliteral">"UIException: method "</span>; 230 227 <a name="l00344"></a>00344 msg += class_name; 231 <a name="l00345"></a>00345 msg += <span class="stringliteral"> " says: "</span>;228 <a name="l00345"></a>00345 msg += <span class="stringliteral">" says: "</span>; 232 229 <a name="l00346"></a>00346 msg += e.what(); 233 <a name="l00347"></a>00347 <span class="keywordflow">throw</span> <a class="code" href="classbdm_1_1UISettingException.html">UISettingException</a>(msg, link.<a class="code" href="classbdm_1_1SettingResolver.html#a adfcd0a81d025c52c8335b6aea07b498" title="Reference to a resolved link or to the original Setting in the case it does not contain...">result</a>);230 <a name="l00347"></a>00347 <span class="keywordflow">throw</span> <a class="code" href="classbdm_1_1UISettingException.html">UISettingException</a>(msg, link.<a class="code" href="classbdm_1_1SettingResolver.html#adfcd0a81d025c52c8335b6aea07b498" title="Reference to a resolved link or to the original Setting in the case it does not contain...">result</a>); 234 231 <a name="l00348"></a>00348 } <span class="keywordflow">catch</span> (...) { 235 232 <a name="l00349"></a>00349 <span class="keyword">delete</span> instance; … … 240 237 <a name="l00354"></a>00354 241 238 <a name="l00357"></a>00357 <span class="keyword">template</span><<span class="keyword">class</span> T> 242 <a name="l00358"></a>00358 <span class="keyword">static</span> <span class="keywordtype">void</span> from_setting ( <a class="code" href="classbdm_1_1shared__ptr.html" title="A naive implementation of roughly a subset of the std::tr1::shared_ptr spec.">shared_ptr<T></a> &instance, <span class="keyword">const</span> Setting &element ) {239 <a name="l00358"></a>00358 <span class="keyword">static</span> <span class="keywordtype">void</span> from_setting ( <a class="code" href="classbdm_1_1shared__ptr.html">shared_ptr<T></a> &instance, <span class="keyword">const</span> Setting &element ) { 243 240 <a name="l00359"></a>00359 T *tmp_inst = 0; 244 241 <a name="l00360"></a>00360 from_setting ( tmp_inst, element ); 245 <a name="l00361"></a>00361 <a class="code" href="bdmerror_8h.html# a7a3399d182b8e3065532596e76f84849" title="Throw std::runtime_exception if t is not true.">bdm_assert</a> ( tmp_inst, <span class="stringliteral">"UI::from_setting failed"</span> );242 <a name="l00361"></a>00361 <a class="code" href="bdmerror_8h.html#7a3399d182b8e3065532596e76f84849" title="Throw std::runtime_exception if t is not true.">bdm_assert</a> ( tmp_inst, <span class="stringliteral">"UI::from_setting failed"</span> ); 246 243 <a name="l00362"></a>00362 instance = tmp_inst; 247 244 <a name="l00363"></a>00363 } … … 250 247 <a name="l00367"></a>00367 <span class="keyword">const</span> <a class="code" href="classbdm_1_1SettingResolver.html" title="This class serves to expand links used within configuration files.">SettingResolver</a> link ( element ); 251 248 <a name="l00368"></a>00368 252 <a name="l00369"></a>00369 assert_type ( link.<a class="code" href="classbdm_1_1SettingResolver.html#a adfcd0a81d025c52c8335b6aea07b498" title="Reference to a resolved link or to the original Setting in the case it does not contain...">result</a>, Setting::TypeList );249 <a name="l00369"></a>00369 assert_type ( link.<a class="code" href="classbdm_1_1SettingResolver.html#adfcd0a81d025c52c8335b6aea07b498" title="Reference to a resolved link or to the original Setting in the case it does not contain...">result</a>, Setting::TypeList ); 253 250 <a name="l00370"></a>00370 254 <a name="l00371"></a>00371 <span class="keywordtype">int</span> len = link.<a class="code" href="classbdm_1_1SettingResolver.html#a adfcd0a81d025c52c8335b6aea07b498" title="Reference to a resolved link or to the original Setting in the case it does not contain...">result</a>.getLength();251 <a name="l00371"></a>00371 <span class="keywordtype">int</span> len = link.<a class="code" href="classbdm_1_1SettingResolver.html#adfcd0a81d025c52c8335b6aea07b498" title="Reference to a resolved link or to the original Setting in the case it does not contain...">result</a>.getLength(); 255 252 <a name="l00372"></a>00372 array_to_load.set_length ( len ); 256 253 <a name="l00373"></a>00373 <span class="keywordflow">if</span> ( len == 0 ) <span class="keywordflow">return</span>; 257 254 <a name="l00374"></a>00374 258 255 <a name="l00375"></a>00375 <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> i = 0; i < len; i++ ) 259 <a name="l00376"></a>00376 from_setting ( array_to_load ( i ), link.<a class="code" href="classbdm_1_1SettingResolver.html#a adfcd0a81d025c52c8335b6aea07b498" title="Reference to a resolved link or to the original Setting in the case it does not contain...">result</a>[i] );256 <a name="l00376"></a>00376 from_setting ( array_to_load ( i ), link.<a class="code" href="classbdm_1_1SettingResolver.html#adfcd0a81d025c52c8335b6aea07b498" title="Reference to a resolved link or to the original Setting in the case it does not contain...">result</a>[i] ); 260 257 <a name="l00377"></a>00377 } 261 258 <a name="l00378"></a>00378 262 259 <a name="l00383"></a>00383 <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keywordtype">void</span> from_setting ( T &variable_to_load, <span class="keyword">const</span> Setting &element ) { 263 <a name="l00384"></a>00384 std::string msg = <span class="stringliteral"> "UIException: from_setting is not implemented for type "</span>;260 <a name="l00384"></a>00384 std::string msg = <span class="stringliteral">"UIException: from_setting is not implemented for type "</span>; 264 261 <a name="l00385"></a>00385 msg += <span class="keyword">typeid</span>(T).name(); 265 <a name="l00386"></a>00386 msg += <span class="charliteral"> '.'</span>;262 <a name="l00386"></a>00386 msg += <span class="charliteral">'.'</span>; 266 263 <a name="l00387"></a>00387 <span class="keywordflow">throw</span> <a class="code" href="classbdm_1_1UISettingException.html">UISettingException</a> ( msg, element ); 267 264 <a name="l00388"></a>00388 } … … 269 266 <a name="l00390"></a>00390 270 267 <a name="l00391"></a>00391 <span class="keyword">protected</span>: 271 <a name="l00393"></a><a class="code" href="classbdm_1_1UI.html# ad60234c0673f345424329894b9b0cef8">00393</a> <a class="code" href="classbdm_1_1UI.html#ad60234c0673f345424329894b9b0cef8" title="Constructor for internal use only, see.">UI</a> ( <span class="keyword">const</span> <span class="keywordtype">string</span>& class_name, <span class="keyword">const</span> type_info * <span class="keyword">const</span> class_type_info ) {268 <a name="l00393"></a><a class="code" href="classbdm_1_1UI.html#d60234c0673f345424329894b9b0cef8">00393</a> <a class="code" href="classbdm_1_1UI.html#d60234c0673f345424329894b9b0cef8" title="Constructor for internal use only, see.">UI</a> ( <span class="keyword">const</span> <span class="keywordtype">string</span>& class_name, <span class="keyword">const</span> type_info * <span class="keyword">const</span> class_type_info ) { 272 269 <a name="l00394"></a>00394 MappedUI::add_class ( class_name, class_type_info, <span class="keyword">this</span> ); 273 270 <a name="l00395"></a>00395 } … … 275 272 <a name="l00397"></a>00397 <span class="keyword">public</span>: 276 273 <a name="l00398"></a>00398 277 <a name="l00400"></a><a class="code" href="classbdm_1_1UI.html# a88d02c1ffe93033af0f146e8008ab6e6">00400</a> <span class="keyword">enum</span> <a class="code" href="classbdm_1_1UI.html#a88d02c1ffe93033af0f146e8008ab6e6" title="Enum type used to determine whether the data for concrete Settingis is compulsory...">SettingPresence</a> { optional, compulsory } ;274 <a name="l00400"></a><a class="code" href="classbdm_1_1UI.html#88d02c1ffe93033af0f146e8008ab6e6">00400</a> <span class="keyword">enum</span> <a class="code" href="classbdm_1_1UI.html#88d02c1ffe93033af0f146e8008ab6e6" title="Enum type used to determine whether the data for concrete Settingis is compulsory...">SettingPresence</a> { optional, compulsory } ; 278 275 <a name="l00401"></a>00401 279 276 <a name="l00405"></a>00405 280 277 <a name="l00409"></a>00409 <span class="keyword">template</span><<span class="keyword">class</span> T> 281 <a name="l00410"></a><a class="code" href="classbdm_1_1UI.html# a1f3d45184f803e1256cfc896b43ed2f8">00410</a> <span class="keyword">static</span> <a class="code" href="classbdm_1_1shared__ptr.html" title="A naive implementation of roughly a subset of the std::tr1::shared_ptr spec.">shared_ptr<T></a> <a class="code" href="classbdm_1_1UI.html#a1f3d45184f803e1256cfc896b43ed2f8">build</a> ( <span class="keyword">const</span> Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name, <a class="code" href="classbdm_1_1UI.html#a88d02c1ffe93033af0f146e8008ab6e6" title="Enum type used to determine whether the data for concrete Settingis is compulsory...">SettingPresence</a> settingPresence = optional ) {278 <a name="l00410"></a><a class="code" href="classbdm_1_1UI.html#1f3d45184f803e1256cfc896b43ed2f8">00410</a> <span class="keyword">static</span> <a class="code" href="classbdm_1_1shared__ptr.html">shared_ptr<T></a> <a class="code" href="classbdm_1_1UI.html#1f3d45184f803e1256cfc896b43ed2f8">build</a> ( <span class="keyword">const</span> Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name, <a class="code" href="classbdm_1_1UI.html#88d02c1ffe93033af0f146e8008ab6e6" title="Enum type used to determine whether the data for concrete Settingis is compulsory...">SettingPresence</a> settingPresence = optional ) { 282 279 <a name="l00411"></a>00411 <span class="keywordflow">if</span> ( !element.exists ( name ) ) { 283 280 <a name="l00412"></a>00412 <span class="keywordflow">if</span> ( settingPresence == optional ) 284 <a name="l00413"></a>00413 <span class="keywordflow">return</span> <a class="code" href="classbdm_1_1shared__ptr.html" title="A naive implementation of roughly a subset of the std::tr1::shared_ptr spec.">shared_ptr<T></a>();281 <a name="l00413"></a>00413 <span class="keywordflow">return</span> <a class="code" href="classbdm_1_1shared__ptr.html">shared_ptr<T></a>(); 285 282 <a name="l00414"></a>00414 <span class="keywordflow">else</span> 286 <a name="l00415"></a>00415 <span class="keywordflow">throw</span> <a class="code" href="classbdm_1_1UISettingException.html">UISettingException</a> ( <span class="stringliteral"> "UIException: the compulsory Setting named \""</span> + name + <span class="stringliteral">"\" is missing."</span>, element );283 <a name="l00415"></a>00415 <span class="keywordflow">throw</span> <a class="code" href="classbdm_1_1UISettingException.html">UISettingException</a> ( <span class="stringliteral">"UIException: the compulsory Setting named \""</span> + name + <span class="stringliteral">"\" is missing."</span>, element ); 287 284 <a name="l00416"></a>00416 } 288 285 <a name="l00417"></a>00417 289 <a name="l00418"></a>00418 <a class="code" href="classbdm_1_1shared__ptr.html" title="A naive implementation of roughly a subset of the std::tr1::shared_ptr spec.">shared_ptr<T></a> instance;286 <a name="l00418"></a>00418 <a class="code" href="classbdm_1_1shared__ptr.html">shared_ptr<T></a> instance; 290 287 <a name="l00419"></a>00419 from_setting<T> ( instance, to_child_setting ( element, name ) ); 291 288 <a name="l00420"></a>00420 <span class="keywordflow">return</span> instance; … … 293 290 <a name="l00422"></a>00422 294 291 <a name="l00426"></a>00426 <span class="keyword">template</span><<span class="keyword">class</span> T> 295 <a name="l00427"></a><a class="code" href="classbdm_1_1UI.html# af02851b299aedeb891e30c4807903081">00427</a> <span class="keyword">static</span> <a class="code" href="classbdm_1_1shared__ptr.html" title="A naive implementation of roughly a subset of the std::tr1::shared_ptr spec.">shared_ptr<T></a> <a class="code" href="classbdm_1_1UI.html#af02851b299aedeb891e30c4807903081">build</a> ( <span class="keyword">const</span> Setting &element, <span class="keyword">const</span> <span class="keywordtype">int</span> index, <a class="code" href="classbdm_1_1UI.html#a88d02c1ffe93033af0f146e8008ab6e6" title="Enum type used to determine whether the data for concrete Settingis is compulsory...">SettingPresence</a> settingPresence = optional ) {292 <a name="l00427"></a><a class="code" href="classbdm_1_1UI.html#f02851b299aedeb891e30c4807903081">00427</a> <span class="keyword">static</span> <a class="code" href="classbdm_1_1shared__ptr.html">shared_ptr<T></a> <a class="code" href="classbdm_1_1UI.html#f02851b299aedeb891e30c4807903081">build</a> ( <span class="keyword">const</span> Setting &element, <span class="keyword">const</span> <span class="keywordtype">int</span> index, <a class="code" href="classbdm_1_1UI.html#88d02c1ffe93033af0f146e8008ab6e6" title="Enum type used to determine whether the data for concrete Settingis is compulsory...">SettingPresence</a> settingPresence = optional ) { 296 293 <a name="l00428"></a>00428 <span class="keywordflow">if</span> ( element.getLength() <= index ) { 297 294 <a name="l00429"></a>00429 <span class="keywordflow">if</span> ( settingPresence == optional ) 298 <a name="l00430"></a>00430 <span class="keywordflow">return</span> <a class="code" href="classbdm_1_1shared__ptr.html" title="A naive implementation of roughly a subset of the std::tr1::shared_ptr spec.">shared_ptr<T></a>();295 <a name="l00430"></a>00430 <span class="keywordflow">return</span> <a class="code" href="classbdm_1_1shared__ptr.html">shared_ptr<T></a>(); 299 296 <a name="l00431"></a>00431 <span class="keywordflow">else</span> { 300 297 <a name="l00432"></a>00432 stringstream stream; 301 298 <a name="l00433"></a>00433 stream << index; 302 <a name="l00434"></a>00434 <span class="keywordflow">throw</span> <a class="code" href="classbdm_1_1UISettingException.html">UISettingException</a> ( <span class="stringliteral"> "UIException: the compulsory Setting with the index "</span> + stream.str() + <span class="stringliteral">" is missing."</span>, element );299 <a name="l00434"></a>00434 <span class="keywordflow">throw</span> <a class="code" href="classbdm_1_1UISettingException.html">UISettingException</a> ( <span class="stringliteral">"UIException: the compulsory Setting with the index "</span> + stream.str() + <span class="stringliteral">" is missing."</span>, element ); 303 300 <a name="l00435"></a>00435 } 304 301 <a name="l00436"></a>00436 } 305 302 <a name="l00437"></a>00437 306 <a name="l00438"></a>00438 <a class="code" href="classbdm_1_1shared__ptr.html" title="A naive implementation of roughly a subset of the std::tr1::shared_ptr spec.">shared_ptr<T></a> instance;303 <a name="l00438"></a>00438 <a class="code" href="classbdm_1_1shared__ptr.html">shared_ptr<T></a> instance; 307 304 <a name="l00439"></a>00439 from_setting<T> ( instance, to_child_setting ( element, index ) ); 308 305 <a name="l00440"></a>00440 <span class="keywordflow">return</span> instance; … … 311 308 <a name="l00444"></a>00444 312 309 <a name="l00448"></a>00448 313 <a name="l00451"></a><a class="code" href="classbdm_1_1UI.html# acd1667e6fec99ec64dabcb3ca2ff922d">00451</a> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keywordtype">bool</span> <span class="keyword">get</span> ( T &instance, <span class="keyword">const</span> Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name, <a class="code" href="classbdm_1_1UI.html#a88d02c1ffe93033af0f146e8008ab6e6" title="Enum type used to determine whether the data for concrete Settingis is compulsory...">SettingPresence</a> settingPresence = optional ) {310 <a name="l00451"></a><a class="code" href="classbdm_1_1UI.html#cd1667e6fec99ec64dabcb3ca2ff922d">00451</a> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keywordtype">bool</span> <span class="keyword">get</span> ( T &instance, <span class="keyword">const</span> Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name, <a class="code" href="classbdm_1_1UI.html#88d02c1ffe93033af0f146e8008ab6e6" title="Enum type used to determine whether the data for concrete Settingis is compulsory...">SettingPresence</a> settingPresence = optional ) { 314 311 <a name="l00452"></a>00452 <span class="keywordflow">if</span> ( !element.exists ( name ) ) { 315 312 <a name="l00453"></a>00453 <span class="keywordflow">if</span> ( settingPresence == optional ) 316 313 <a name="l00454"></a>00454 <span class="keywordflow">return</span> <span class="keyword">false</span>; 317 314 <a name="l00455"></a>00455 <span class="keywordflow">else</span> 318 <a name="l00456"></a>00456 <span class="keywordflow">throw</span> <a class="code" href="classbdm_1_1UISettingException.html">UISettingException</a> ( <span class="stringliteral"> "UIException: the compulsory Setting named \""</span> + name + <span class="stringliteral">"\" is missing."</span>, element );315 <a name="l00456"></a>00456 <span class="keywordflow">throw</span> <a class="code" href="classbdm_1_1UISettingException.html">UISettingException</a> ( <span class="stringliteral">"UIException: the compulsory Setting named \""</span> + name + <span class="stringliteral">"\" is missing."</span>, element ); 319 316 <a name="l00457"></a>00457 } 320 317 <a name="l00458"></a>00458 … … 323 320 <a name="l00461"></a>00461 } 324 321 <a name="l00462"></a>00462 325 <a name="l00465"></a><a class="code" href="classbdm_1_1UI.html# a6fb95ccb13515a3f23080a397dacaa0e">00465</a> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keywordtype">bool</span> <span class="keyword">get</span> ( T &instance, <span class="keyword">const</span> Setting &element, <span class="keyword">const</span> <span class="keywordtype">int</span> index, <a class="code" href="classbdm_1_1UI.html#a88d02c1ffe93033af0f146e8008ab6e6" title="Enum type used to determine whether the data for concrete Settingis is compulsory...">SettingPresence</a> settingPresence = optional ) {322 <a name="l00465"></a><a class="code" href="classbdm_1_1UI.html#6fb95ccb13515a3f23080a397dacaa0e">00465</a> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keywordtype">bool</span> <span class="keyword">get</span> ( T &instance, <span class="keyword">const</span> Setting &element, <span class="keyword">const</span> <span class="keywordtype">int</span> index, <a class="code" href="classbdm_1_1UI.html#88d02c1ffe93033af0f146e8008ab6e6" title="Enum type used to determine whether the data for concrete Settingis is compulsory...">SettingPresence</a> settingPresence = optional ) { 326 323 <a name="l00466"></a>00466 <span class="keywordflow">if</span> ( element.getLength() <= index ) { 327 324 <a name="l00467"></a>00467 <span class="keywordflow">if</span> ( settingPresence == optional ) … … 329 326 <a name="l00469"></a>00469 <span class="keywordflow">else</span> { 330 327 <a name="l00470"></a>00470 stringstream stream; 331 <a name="l00471"></a>00471 stream << <span class="stringliteral"> "UIException: the compulsory Setting with the index "</span> << index << <span class="stringliteral">" is missing."</span>;328 <a name="l00471"></a>00471 stream << <span class="stringliteral">"UIException: the compulsory Setting with the index "</span> << index << <span class="stringliteral">" is missing."</span>; 332 329 <a name="l00472"></a>00472 stream << index; 333 330 <a name="l00473"></a>00473 <span class="keywordflow">throw</span> <a class="code" href="classbdm_1_1UISettingException.html">UISettingException</a> (stream.str(), element ); … … 339 336 <a name="l00479"></a>00479 } 340 337 <a name="l00480"></a>00480 341 <a name="l00482"></a><a class="code" href="classbdm_1_1UI.html# a7d2ea138c7285565507fa61fbd9b038f">00482</a> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keywordtype">bool</span> <span class="keyword">get</span> ( T &instance, <span class="keyword">const</span> Setting &element ) {338 <a name="l00482"></a><a class="code" href="classbdm_1_1UI.html#7d2ea138c7285565507fa61fbd9b038f">00482</a> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keywordtype">bool</span> <span class="keyword">get</span> ( T &instance, <span class="keyword">const</span> Setting &element ) { 342 339 <a name="l00483"></a>00483 from_setting ( instance, element ); 343 340 <a name="l00484"></a>00484 <span class="keywordflow">return</span> <span class="keyword">true</span>; … … 345 342 <a name="l00487"></a>00487 346 343 <a name="l00491"></a>00491 347 <a name="l00494"></a><a class="code" href="classbdm_1_1UI.html# a81ce18ed0bb9993a634db2b99612ad66">00494</a> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keywordtype">bool</span> <span class="keyword">get</span> ( Array<T> &array_to_load, <span class="keyword">const</span> Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name, <a class="code" href="classbdm_1_1UI.html#a88d02c1ffe93033af0f146e8008ab6e6" title="Enum type used to determine whether the data for concrete Settingis is compulsory...">SettingPresence</a> settingPresence = optional ) {344 <a name="l00494"></a><a class="code" href="classbdm_1_1UI.html#81ce18ed0bb9993a634db2b99612ad66">00494</a> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keywordtype">bool</span> <span class="keyword">get</span> ( Array<T> &array_to_load, <span class="keyword">const</span> Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name, <a class="code" href="classbdm_1_1UI.html#88d02c1ffe93033af0f146e8008ab6e6" title="Enum type used to determine whether the data for concrete Settingis is compulsory...">SettingPresence</a> settingPresence = optional ) { 348 345 <a name="l00495"></a>00495 <span class="keywordflow">if</span> ( !element.exists ( name ) ) 349 346 <a name="l00496"></a>00496 <span class="keywordflow">return</span> <span class="keyword">false</span>; … … 353 350 <a name="l00500"></a>00500 } 354 351 <a name="l00501"></a>00501 355 <a name="l00504"></a><a class="code" href="classbdm_1_1UI.html# a29e450ed5560f81ef2f845e7b1021b71">00504</a> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keywordtype">bool</span> <span class="keyword">get</span> ( Array<T> &array_to_load, <span class="keyword">const</span> Setting &element, <span class="keyword">const</span> <span class="keywordtype">int</span> index, <a class="code" href="classbdm_1_1UI.html#a88d02c1ffe93033af0f146e8008ab6e6" title="Enum type used to determine whether the data for concrete Settingis is compulsory...">SettingPresence</a> settingPresence = optional ) {352 <a name="l00504"></a><a class="code" href="classbdm_1_1UI.html#29e450ed5560f81ef2f845e7b1021b71">00504</a> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keywordtype">bool</span> <span class="keyword">get</span> ( Array<T> &array_to_load, <span class="keyword">const</span> Setting &element, <span class="keyword">const</span> <span class="keywordtype">int</span> index, <a class="code" href="classbdm_1_1UI.html#88d02c1ffe93033af0f146e8008ab6e6" title="Enum type used to determine whether the data for concrete Settingis is compulsory...">SettingPresence</a> settingPresence = optional ) { 356 353 <a name="l00505"></a>00505 <span class="keywordflow">if</span> ( element.getLength() <= index ) 357 354 <a name="l00506"></a>00506 <span class="keywordflow">return</span> <span class="keyword">false</span>; … … 361 358 <a name="l00510"></a>00510 } 362 359 <a name="l00511"></a>00511 363 <a name="l00513"></a><a class="code" href="classbdm_1_1UI.html# ac9fad8376d2f0857e719511f92f93998">00513</a> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keywordtype">bool</span> <span class="keyword">get</span> ( Array<T> &array_to_load, <span class="keyword">const</span> Setting &element ) {360 <a name="l00513"></a><a class="code" href="classbdm_1_1UI.html#c9fad8376d2f0857e719511f92f93998">00513</a> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keywordtype">bool</span> <span class="keyword">get</span> ( Array<T> &array_to_load, <span class="keyword">const</span> Setting &element ) { 364 361 <a name="l00514"></a>00514 from_setting ( array_to_load, element ); 365 362 <a name="l00515"></a>00515 <span class="keywordflow">return</span> <span class="keyword">true</span>; … … 367 364 <a name="l00518"></a>00518 368 365 <a name="l00523"></a>00523 369 <a name="l00525"></a><a class="code" href="classbdm_1_1UI.html# ac83987949e6a9e79d6e093797ab7d917">00525</a> <span class="keyword">template</span>< <span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1UI.html#ac83987949e6a9e79d6e093797ab7d917" title="A root descendant instance is stored in the new child Setting appended to the passed...">save</a> ( <span class="keyword">const</span> T * <span class="keyword">const</span> instance, Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name = <span class="stringliteral">""</span> ) {370 <a name="l00526"></a>00526 Setting &<span class="keyword">set</span> = ( name == <span class="stringliteral"> ""</span> ) ? element.add ( Setting::TypeGroup )366 <a name="l00525"></a><a class="code" href="classbdm_1_1UI.html#c83987949e6a9e79d6e093797ab7d917">00525</a> <span class="keyword">template</span>< <span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1UI.html#c83987949e6a9e79d6e093797ab7d917" title="A root descendant instance is stored in the new child Setting appended to the passed...">save</a> ( <span class="keyword">const</span> T * <span class="keyword">const</span> instance, Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name = <span class="stringliteral">""</span> ) { 367 <a name="l00526"></a>00526 Setting &<span class="keyword">set</span> = ( name == <span class="stringliteral">""</span> ) ? element.add ( Setting::TypeGroup ) 371 368 <a name="l00527"></a>00527 : element.add ( name, Setting::TypeGroup ); 372 369 <a name="l00528"></a>00528 373 370 <a name="l00529"></a>00529 <span class="keyword">const</span> <span class="keywordtype">string</span> &class_name = MappedUI::retrieve_class_name ( &<span class="keyword">typeid</span> ( *instance ) ); 374 371 <a name="l00530"></a>00530 375 <a name="l00531"></a>00531 <span class="comment">// add attribute "class"</span>376 <a name="l00532"></a>00532 Setting &type = <span class="keyword">set</span>.add ( <span class="stringliteral"> "class"</span>, Setting::TypeString );372 <a name="l00531"></a>00531 <span class="comment">// add attribute "class"</span> 373 <a name="l00532"></a>00532 Setting &type = <span class="keyword">set</span>.add ( <span class="stringliteral">"class"</span>, Setting::TypeString ); 377 374 <a name="l00533"></a>00533 type = class_name; 378 375 <a name="l00534"></a>00534 … … 380 377 <a name="l00536"></a>00536 instance->to_setting ( <span class="keyword">set</span> ); 381 378 <a name="l00537"></a>00537 } <span class="keywordflow">catch</span> ( SettingException &sttng_xcptn ) { 382 <a name="l00538"></a>00538 <span class="keywordtype">string</span> msg = <span class="stringliteral"> "UIException: method "</span>;379 <a name="l00538"></a>00538 <span class="keywordtype">string</span> msg = <span class="stringliteral">"UIException: method "</span>; 383 380 <a name="l00539"></a>00539 msg += class_name; 384 <a name="l00540"></a>00540 msg += <span class="stringliteral"> ".to_setting(Setting&) has thrown a SettingException."</span>;381 <a name="l00540"></a>00540 msg += <span class="stringliteral">".to_setting(Setting&) has thrown a SettingException."</span>; 385 382 <a name="l00541"></a>00541 <span class="keywordflow">throw</span> <a class="code" href="classbdm_1_1UISettingException.html">UISettingException</a>(msg, sttng_xcptn.getPath()); 386 383 <a name="l00542"></a>00542 } 387 384 <a name="l00543"></a>00543 } 388 385 <a name="l00544"></a>00544 389 <a name="l00545"></a>00545 <span class="keyword">template</span>< <span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1UI.html# ac83987949e6a9e79d6e093797ab7d917" title="A root descendant instance is stored in the new child Setting appended to the passed...">save</a> ( <span class="keyword">const</span> <a class="code" href="classbdm_1_1shared__ptr.html" title="A naive implementation of roughly a subset of the std::tr1::shared_ptr spec.">shared_ptr<T></a> &instance, Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name = <span class="stringliteral">""</span> ) {390 <a name="l00546"></a>00546 save<T> ( instance.<a class="code" href="classbdm_1_1shared__ptr.html# a37ebcfb6750dd7b5630f1d2354c07a96">get</a>(), element, name );386 <a name="l00545"></a>00545 <span class="keyword">template</span>< <span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1UI.html#c83987949e6a9e79d6e093797ab7d917" title="A root descendant instance is stored in the new child Setting appended to the passed...">save</a> ( <span class="keyword">const</span> <a class="code" href="classbdm_1_1shared__ptr.html">shared_ptr<T></a> &instance, Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name = <span class="stringliteral">""</span> ) { 387 <a name="l00546"></a>00546 save<T> ( instance.<a class="code" href="classbdm_1_1shared__ptr.html#37ebcfb6750dd7b5630f1d2354c07a96">get</a>(), element, name ); 391 388 <a name="l00547"></a>00547 } 392 389 <a name="l00548"></a>00548 393 <a name="l00550"></a><a class="code" href="classbdm_1_1UI.html# a4514f93573a9d9126c506d176fbd3163">00550</a> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1UI.html#a4514f93573a9d9126c506d176fbd3163" title="An Array&lt;T&gt; instance is stored in the new child Setting appended to the passed...">save</a> ( <span class="keyword">const</span> Array<T> &array_to_save, Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name = <span class="stringliteral">""</span> ) {390 <a name="l00550"></a><a class="code" href="classbdm_1_1UI.html#4514f93573a9d9126c506d176fbd3163">00550</a> <span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1UI.html#4514f93573a9d9126c506d176fbd3163" title="An Array&lt;T&gt; instance is stored in the new child Setting appended to the passed...">save</a> ( <span class="keyword">const</span> Array<T> &array_to_save, Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name = <span class="stringliteral">""</span> ) { 394 391 <a name="l00551"></a>00551 assert_type ( element, Setting::TypeGroup ); 395 <a name="l00552"></a>00552 Setting &list = ( name == <span class="stringliteral"> ""</span> ) ? element.add ( Setting::TypeList )392 <a name="l00552"></a>00552 Setting &list = ( name == <span class="stringliteral">""</span> ) ? element.add ( Setting::TypeList ) 396 393 <a name="l00553"></a>00553 : element.add ( name, Setting::TypeList ); 397 394 <a name="l00554"></a>00554 <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> i = 0; i < array_to_save.length(); i++ ) 398 <a name="l00555"></a>00555 <a class="code" href="classbdm_1_1UI.html# ac83987949e6a9e79d6e093797ab7d917" title="A root descendant instance is stored in the new child Setting appended to the passed...">save</a> ( array_to_save ( i ), list );395 <a name="l00555"></a>00555 <a class="code" href="classbdm_1_1UI.html#c83987949e6a9e79d6e093797ab7d917" title="A root descendant instance is stored in the new child Setting appended to the passed...">save</a> ( array_to_save ( i ), list ); 399 396 <a name="l00556"></a>00556 } 400 397 <a name="l00557"></a>00557 401 <a name="l00559"></a>00559 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1UI.html# ac83987949e6a9e79d6e093797ab7d917" title="A root descendant instance is stored in the new child Setting appended to the passed...">save</a> ( <span class="keyword">const</span> mat &matrix, Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name = <span class="stringliteral">""</span> );398 <a name="l00559"></a>00559 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1UI.html#c83987949e6a9e79d6e093797ab7d917" title="A root descendant instance is stored in the new child Setting appended to the passed...">save</a> ( <span class="keyword">const</span> mat &matrix, Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name = <span class="stringliteral">""</span> ); 402 399 <a name="l00560"></a>00560 403 <a name="l00562"></a>00562 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1UI.html# ac83987949e6a9e79d6e093797ab7d917" title="A root descendant instance is stored in the new child Setting appended to the passed...">save</a> ( <span class="keyword">const</span> ivec &vec, Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name = <span class="stringliteral">""</span> );400 <a name="l00562"></a>00562 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1UI.html#c83987949e6a9e79d6e093797ab7d917" title="A root descendant instance is stored in the new child Setting appended to the passed...">save</a> ( <span class="keyword">const</span> ivec &vec, Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name = <span class="stringliteral">""</span> ); 404 401 <a name="l00563"></a>00563 405 <a name="l00565"></a>00565 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1UI.html# ac83987949e6a9e79d6e093797ab7d917" title="A root descendant instance is stored in the new child Setting appended to the passed...">save</a> ( <span class="keyword">const</span> vec &vector, Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name = <span class="stringliteral">""</span> );402 <a name="l00565"></a>00565 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1UI.html#c83987949e6a9e79d6e093797ab7d917" title="A root descendant instance is stored in the new child Setting appended to the passed...">save</a> ( <span class="keyword">const</span> vec &vector, Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name = <span class="stringliteral">""</span> ); 406 403 <a name="l00566"></a>00566 407 <a name="l00568"></a>00568 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1UI.html# ac83987949e6a9e79d6e093797ab7d917" title="A root descendant instance is stored in the new child Setting appended to the passed...">save</a> ( <span class="keyword">const</span> <span class="keywordtype">string</span> &str, Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name = <span class="stringliteral">""</span> );404 <a name="l00568"></a>00568 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1UI.html#c83987949e6a9e79d6e093797ab7d917" title="A root descendant instance is stored in the new child Setting appended to the passed...">save</a> ( <span class="keyword">const</span> <span class="keywordtype">string</span> &str, Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name = <span class="stringliteral">""</span> ); 408 405 <a name="l00569"></a>00569 409 <a name="l00571"></a>00571 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1UI.html# ac83987949e6a9e79d6e093797ab7d917" title="A root descendant instance is stored in the new child Setting appended to the passed...">save</a> ( <span class="keyword">const</span> <span class="keywordtype">int</span> &integer, Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name = <span class="stringliteral">""</span> );406 <a name="l00571"></a>00571 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1UI.html#c83987949e6a9e79d6e093797ab7d917" title="A root descendant instance is stored in the new child Setting appended to the passed...">save</a> ( <span class="keyword">const</span> <span class="keywordtype">int</span> &integer, Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name = <span class="stringliteral">""</span> ); 410 407 <a name="l00572"></a>00572 411 <a name="l00574"></a>00574 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1UI.html# ac83987949e6a9e79d6e093797ab7d917" title="A root descendant instance is stored in the new child Setting appended to the passed...">save</a> ( <span class="keyword">const</span> <span class="keywordtype">double</span> &real, Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name = <span class="stringliteral">""</span> );408 <a name="l00574"></a>00574 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1UI.html#c83987949e6a9e79d6e093797ab7d917" title="A root descendant instance is stored in the new child Setting appended to the passed...">save</a> ( <span class="keyword">const</span> <span class="keywordtype">double</span> &real, Setting &element, <span class="keyword">const</span> <span class="keywordtype">string</span> &name = <span class="stringliteral">""</span> ); 412 409 <a name="l00576"></a>00576 413 410 <a name="l00577"></a>00577 }; … … 418 415 <a name="l00585"></a>00585 <a class="code" href="classbdm_1_1ParticularUI.html">ParticularUI<T></a> ( <span class="keyword">const</span> <span class="keywordtype">string</span> &class_name ) : <a class="code" href="classbdm_1_1UI.html" title="UI is an abstract class which collects all the auxiliary functions useful to prepare...">UI</a> ( class_name, &<span class="keyword">typeid</span> ( T ) ) {}; 419 416 <a name="l00586"></a>00586 420 <a name="l00588"></a><a class="code" href="classbdm_1_1ParticularUI.html#a a14fea8c7372a3d0a736e4ed0b617702">00588</a> <a class="code" href="classbdm_1_1root.html" title="Root class of BDM objects.">root</a>* <a class="code" href="classbdm_1_1ParticularUI.html#aa14fea8c7372a3d0a736e4ed0b617702" title="A method returning a brand new instance of class T, this method is the reason why...">new_instance</a>()<span class="keyword"> const </span>{417 <a name="l00588"></a><a class="code" href="classbdm_1_1ParticularUI.html#a14fea8c7372a3d0a736e4ed0b617702">00588</a> <a class="code" href="classbdm_1_1root.html" title="Root class of BDM objects.">root</a>* <a class="code" href="classbdm_1_1ParticularUI.html#a14fea8c7372a3d0a736e4ed0b617702" title="A method returning a brand new instance of class T, this method is the reason why...">new_instance</a>()<span class="keyword"> const </span>{ 421 418 <a name="l00589"></a>00589 <span class="keywordflow">return</span> <span class="keyword">new</span> T(); 422 419 <a name="l00590"></a>00590 } … … 426 423 <a name="l00594"></a>00594 427 424 <a name="l00604"></a>00604 <span class="preprocessor">#ifndef BDMLIB</span> 428 <a name="l00605"></a><a class="code" href="user__info_8h.html# a4f9de2f17e844047726487b99def99c6">00605</a> <span class="preprocessor"></span><span class="preprocessor">#define UIREGISTER(class_name) static bdm::ParticularUI<class_name> UI##class_name(#class_name)</span>425 <a name="l00605"></a><a class="code" href="user__info_8h.html#4f9de2f17e844047726487b99def99c6">00605</a> <span class="preprocessor"></span><span class="preprocessor">#define UIREGISTER(class_name) static bdm::ParticularUI<class_name> UI##class_name(#class_name)</span> 429 426 <a name="l00606"></a>00606 <span class="preprocessor"></span><span class="preprocessor">#else</span> 430 427 <a name="l00607"></a>00607 <span class="preprocessor"></span><span class="preprocessor">#define UIREGISTER(class_name)</span> 431 428 <a name="l00608"></a>00608 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 432 429 <a name="l00609"></a>00609 <span class="preprocessor"></span> 433 <a name="l00611"></a><a class="code" href="user__info_8h.html# a852592d44ce65a0a870c76b42155aaca">00611</a> <span class="preprocessor">#define QUOTEME(x) #x</span>430 <a name="l00611"></a><a class="code" href="user__info_8h.html#852592d44ce65a0a870c76b42155aaca">00611</a> <span class="preprocessor">#define QUOTEME(x) #x</span> 434 431 <a name="l00612"></a>00612 <span class="preprocessor"></span> 435 432 <a name="l00621"></a>00621 <span class="preprocessor">#ifndef BDMLIB</span> 436 <a name="l00622"></a><a class="code" href="user__info_8h.html# ab06f1e7c44a8306e321f62a0099210b9">00622</a> <span class="preprocessor"></span><span class="preprocessor">#define UIREGISTER2(class_name, temp_name) static bdm::ParticularUI<class_name<temp_name> > UI##class_name##_##temp_name( QUOTEME(class_name<temp_name>) )</span>433 <a name="l00622"></a><a class="code" href="user__info_8h.html#b06f1e7c44a8306e321f62a0099210b9">00622</a> <span class="preprocessor"></span><span class="preprocessor">#define UIREGISTER2(class_name, temp_name) static bdm::ParticularUI<class_name<temp_name> > UI##class_name##_##temp_name( QUOTEME(class_name<temp_name>) )</span> 437 434 <a name="l00623"></a>00623 <span class="preprocessor"></span><span class="preprocessor">#else</span> 438 435 <a name="l00624"></a>00624 <span class="preprocessor"></span><span class="preprocessor">#define UIREGISTER2(class_name,temp_name) </span> … … 441 438 <a name="l00627"></a>00627 <span class="preprocessor">#endif // #ifndef USER_INFO_H</span> 442 439 </pre></div></div> 443 <hr size="1" /><address style="text-align: right;"><small>Generated on Sun Sep 27 00:49:04 2009 for mixpp by 440 <hr size="1"><address style="text-align: right;"><small>Generated on Wed Oct 7 17:34:44 2009 for mixpp by 444 441 <a href="http://www.doxygen.org/index.html"> 445 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1</small></address>442 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address> 446 443 </body> 447 444 </html>