OSDN Git Service

modified encoding to UTF-8.
[gintenlib/gintenlib.git] / gintenlib / list_format.hpp
index ef0b48a..e9d56bd 100644 (file)
@@ -5,9 +5,9 @@
 
       <gintenlib/list_format.hpp>
 
-  list_format ¡§ ¥³¥ó¥Æ¥Ê¤Î¤ª¼ê·Ú¥¹¥È¥ê¡¼¥à½ÐÎÏ
+  list_format : コンテナのお手軽ストリーム出力
 
-  Àë¸À¡§
+  宣言:
     template< typename Range >
     unspecified list_format( const Range& src );
 
     template< typename InIte, typename Pre, typename Delim, typename Post  >
     unspecified list_format( const InIte& begin, const InIte& end, const Pre& pre, const Delim& delim, const Post& post );
 
-  µ¡Ç½¡§
-    Ç¤°Õ¤Î¥³¥ó¥Æ¥Ê¤äÇÛÎó¡Ê boost »ÈÍÑÈǤǤÏǤ°Õ¤Î range ¡Ë¤ò¡¢¥¹¥È¥ê¡¼¥à¤Ëή¤»¤ë¤è¤¦²Ã¹©¤·¤Þ¤¹¡£
-    ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï ( 1, 2, 3, 4 ) ¤Î¤è¤¦¤Ë½ÐÎϤµ¤ì¤Þ¤¹¤¬¡¢°ú¿ô¤ò»ØÄꤹ¤ë¤³¤È¤Ç¥¹¥¿¥¤¥ë¤ÏÊѹ¹¤Ç¤­¤Þ¤¹¡£
+  機能:
+    任意のコンテナや配列( boost 使用版では任意の range )を、ストリームに流せるよう加工します。
+    デフォルトでは ( 1, 2, 3, 4 ) のように出力されますが、引数を指定することでスタイルは変更できます。
 
-  »ÈÍÑÎ㡧
-    // v ¤ÏǤ°Õ¤Î¥³¥ó¥Æ¥Ê¡£( 1, 2, 3 ) ¤Î¤è¤¦¤Ëɽ¼¨¤µ¤ì¤Þ¤¹
+  使用例:
+    // v は任意のコンテナ。( 1, 2, 3 ) のように表示されます
     cout << gintenlib::list_format(v) << endl;
-    // °ú¿ô¤ò»ØÄꤹ¤ì¤Ð¡¢[ 1 | 2 | 3 ] ¤Î¤è¤¦¤Êɽ¼¨¤Ë¤â¤Ç¤­¤Þ¤¹
+    // 引数を指定すれば、[ 1 | 2 | 3 ] のような表示にもできます
     cout << gintenlib::list_format( v, "[ ", " | ", " ]" ) << endl;
-    // ¤Þ¤¿¡¢¥¤¥Æ¥ì¡¼¥¿¤ò»È¤Ã¤Æ½ÐÎÏÂоݤò»ØÄꤹ¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£
-    // ¤³¤Î¾ì¹ç¤ÏµÕ½ç¤Îɽ¼¨¤Ë¤Ê¤ê¤Þ¤¹
+    // また、イテレータを使って出力対象を指定することも出来ます。
+    // この場合は逆順の表示になります
     cout << gintenlib::list_format( v.rbegin(), v.rend() ) << endl;
 
-  Êä­¡§
-    ¡¦´ðËÜŪ¤Ë list_format ´Ø¿ô¤Ï¡¢¡ÖÌá¤êÃͤò¥¹¥È¥ê¡¼¥à¤Ëή¤¹¡×¤È¤¤¤¦»È¤¤Êý¤Î¤ß¤òÁÛÄꤷ¤Æ¤¤¤Þ¤¹¡£
-    ¡¦¤¿¤À¤·¡¢list_format ´Ø¿ô¤ÎÌá¤êÃͤˠboost::lexical_cast ¤òŬ±þ¤¹¤ë¤³¤È¤Ï²Äǽ¤Ç¤¹¡£
-    ¡¦¤Þ¤¿¡¢Ìá¤êÃͤò gintenlib::output_element ¥ª¥Ö¥¸¥§¥¯¥È¤Ë³ÊǼ¤¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£
-    ¡¦¾åµ­°Ê³°¤ÎÌÜŪ¤Ç»È¤Ã¤¿¾ì¹ç¡¢list_format ´Ø¿ô¤ÎÆ°ºî¤ÏÉÔÄê¤È¤Ê¤ê¤Þ¤¹¡£
+  補足:
+    ・基本的に list_format 関数は、「戻り値をストリームに流す」という使い方のみを想定しています。
+    ・ただし、list_format 関数の戻り値に boost::lexical_cast を適応することは可能です。
+    ・また、戻り値を gintenlib::output_element オブジェクトに格納することも出来ます。
+    ・上記以外の目的で使った場合、list_format 関数の動作は不定となります。
 
 */
 
@@ -46,7 +46,7 @@
 
 namespace gintenlib
 {
-  // ¼ÂºÝ¤Ë¥¹¥È¥ê¡¼¥à¤Ëή¤¹¥¯¥é¥¹
+  // å®\9fé\9a\9bã\81«ã\82¹ã\83\88ã\83ªã\83¼ã\83 ã\81«æµ\81ã\81\99ã\82¯ã\83©ã\82¹
   template< typename InIte, typename Pre = const char*, 
     typename Delim = const char*, typename Post = const char* >
   struct list_format_impl_
@@ -66,15 +66,15 @@ namespace gintenlib
     typename boost::call_traits<Delim>::value_type delim_;
     typename boost::call_traits<Post>::value_type post_;
 
-    // ½ÐÎϤμÂÁõ
-    // ¥Æ¥ó¥×¥ì¡¼¥È¤Ë¤è¤ê std::ostream ¤Ë¸Â¤é¤º½ÐÎϤǤ­¤Þ¤¹
+    // 出力の実装
+    // テンプレートにより std::ostream に限らず出力できます
     template<typename Stream>
     friend Stream& operator<< ( Stream& os, const list_format_impl_& src )
     {
-      // ¶õ¤Î¥ê¥¹¥È¤òɽ¼¨¤µ¤»¤è¤¦¤È¤·¤¿¾ì¹ç¡¢²¿¤âɽ¼¨¤µ¤ì¤Ê¤¤
+      // 空のリストを表示させようとした場合、何も表示されない
       if( src.begin_ == src.end_ ){ return os; }
   
-      // É½¼¨ËÜÂÎ
+      // 表示本体
       os << src.pre_;
   
       InIte ite = src.begin_;
@@ -93,13 +93,13 @@ namespace gintenlib
   };  // struct list_format_impl_
 
 
-  // ´Ø¿ôËÜÂÎ
+  // 関数本体
 
-  // ¥³¥ó¥Æ¥ÊÈÇ
+  // コンテナ版
 
-  // °ìÈÌ·Á¡£Ç¤°Õ¤Î pre, delim, post ¤Ë´Ø¤·¤Æ
-  // os << pre << Í×ÁÇ£± << delim << Í×ÁÇ£² << ... << delim << Í×ÁÇ£î << end;
-  // ¤È¤¤¤¦¥¤¥á¡¼¥¸¤Ç½ÐÎϤµ¤ì¤ë¡£
+  // 一般形。任意の pre, delim, post に関して
+  // os << pre << 要素1 << delim << 要素2 << ... << delim << 要素n << end;
+  // というイメージで出力される。
   template< typename Range, typename Pre, typename Delim, typename Post >
   inline const list_format_impl_< typename boost::range_iterator<const Range>::type, Pre, Delim, Post >
   list_format
@@ -111,7 +111,7 @@ namespace gintenlib
           ( begin(src), end(src), pre, delim, post );
   }
 
-  // ¾ÊάÈÇ¡£( Í×ÁÇ£±, Í×ÁÇ£², ... , Í×ÁÇ£î ) ¤È¤¤¤¦´¶¤¸¤Ë½ÐÎÏ
+  // 省略版。( 要素1, 要素2, ... , 要素n ) という感じに出力
   template< typename Range >
     inline const list_format_impl_< typename boost::range_iterator<const Range>::type >
   list_format( const Range& src )
@@ -123,9 +123,9 @@ namespace gintenlib
   }
 
 
-  // ¥¤¥Æ¥ì¡¼¥¿ÈÇ
+  // イテレータ版
 
-  // °ìÈÌ·Á
+  // 一般形
   template< typename InIte, typename Pre, typename Delim, typename Post >
     inline const list_format_impl_<InIte, Pre, Delim, Post>
   list_format
@@ -134,7 +134,7 @@ namespace gintenlib
     return list_format_impl_<InIte, Pre, Delim, Post>( begin, end, pre, delim, post );
   }
 
-  // ¾ÊάÈÇ
+  // 省略版
   template< typename InIte >
     inline const list_format_impl_<InIte>
   list_format( const InIte& begin, const InIte& end )