24 #include "../gtx/quaternion.hpp" 
   26 #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED) 
   27 # pragma message("GLM: GLM_GTX_io extension included") 
   41                 enum order_type { column_major, row_major};
 
   43                 template <
typename CTy>
 
   44                 class format_punct : 
public std::locale::facet
 
   46                         typedef CTy char_type;
 
   50                         static std::locale::id id;
 
   57                         char_type  delim_right;
 
   62                         GLM_FUNC_DECL 
explicit format_punct(
size_t a = 0);
 
   63                         GLM_FUNC_DECL 
explicit format_punct(format_punct 
const&);
 
   66                 template <
typename CTy, 
typename CTr = std::
char_traits<CTy> >
 
   67                 class basic_state_saver {
 
   71                         GLM_FUNC_DECL 
explicit basic_state_saver(std::basic_ios<CTy,CTr>&);
 
   72                         GLM_FUNC_DECL ~basic_state_saver();
 
   76                         typedef ::std::basic_ios<CTy,CTr>      state_type;
 
   77                         typedef typename state_type::char_type char_type;
 
   78                         typedef ::std::ios_base::fmtflags      flags_type;
 
   79                         typedef ::std::streamsize              streamsize_type;
 
   80                         typedef ::std::locale 
const            locale_type;
 
   84                         streamsize_type precision_;
 
   85                         streamsize_type width_;
 
   89                         GLM_FUNC_DECL basic_state_saver& operator=(basic_state_saver 
const&);
 
   92                 typedef basic_state_saver<char>     state_saver;
 
   93                 typedef basic_state_saver<wchar_t> wstate_saver;
 
   95                 template <
typename CTy, 
typename CTr = std::
char_traits<CTy> >
 
   96                 class basic_format_saver
 
  100                         GLM_FUNC_DECL 
explicit basic_format_saver(std::basic_ios<CTy,CTr>&);
 
  101                         GLM_FUNC_DECL ~basic_format_saver();
 
  105                         basic_state_saver<CTy> 
const bss_;
 
  107                         GLM_FUNC_DECL basic_format_saver& operator=(basic_format_saver 
const&);
 
  110                 typedef basic_format_saver<char>     format_saver;
 
  111                 typedef basic_format_saver<wchar_t> wformat_saver;
 
  117                         GLM_FUNC_DECL 
explicit precision(
unsigned);
 
  124                         GLM_FUNC_DECL 
explicit width(
unsigned);
 
  127                 template <
typename CTy>
 
  132                         GLM_FUNC_DECL 
explicit delimeter(CTy , CTy , CTy  = 
',');
 
  139                         GLM_FUNC_DECL 
explicit order(order_type);
 
  144                 template <
typename FTy, 
typename CTy, 
typename CTr>
 
  145                 FTy 
const& get_facet(std::basic_ios<CTy,CTr>&);
 
  146                 template <
typename FTy, 
typename CTy, 
typename CTr>
 
  147                 std::basic_ios<CTy,CTr>& formatted(std::basic_ios<CTy,CTr>&);
 
  148                 template <
typename FTy, 
typename CTy, 
typename CTr>
 
  149                 std::basic_ios<CTy,CTr>& unformattet(std::basic_ios<CTy,CTr>&);
 
  151                 template <
typename CTy, 
typename CTr>
 
  152                 std::basic_ostream<CTy, CTr>& operator<<(std::basic_ostream<CTy, CTr>&, precision 
const&);
 
  153                 template <
typename CTy, 
typename CTr>
 
  154                 std::basic_ostream<CTy, CTr>& operator<<(std::basic_ostream<CTy, CTr>&, width 
const&);
 
  155                 template <
typename CTy, 
typename CTr>
 
  156                 std::basic_ostream<CTy, CTr>& operator<<(std::basic_ostream<CTy, CTr>&, delimeter<CTy> 
const&);
 
  157                 template <
typename CTy, 
typename CTr>
 
  158                 std::basic_ostream<CTy, CTr>& operator<<(std::basic_ostream<CTy, CTr>&, order 
const&);
 
  161         template <
typename CTy, 
typename CTr, 
typename T, precision P>
 
  162         GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tquat<T,P> 
const&);
 
  163         template <
typename CTy, 
typename CTr, 
typename T, precision P>
 
  164         GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tvec1<T,P> 
const&);
 
  165         template <
typename CTy, 
typename CTr, 
typename T, precision P>
 
  166         GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tvec2<T,P> 
const&);
 
  167         template <
typename CTy, 
typename CTr, 
typename T, precision P>
 
  168         GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tvec3<T,P> 
const&);
 
  169         template <
typename CTy, 
typename CTr, 
typename T, precision P>
 
  170         GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tvec4<T,P> 
const&);
 
  171         template <
typename CTy, 
typename CTr, 
typename T, precision P>
 
  172         GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tmat2x2<T,P> 
const&);
 
  173         template <
typename CTy, 
typename CTr, 
typename T, precision P>
 
  174         GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tmat2x3<T,P> 
const&);
 
  175         template <
typename CTy, 
typename CTr, 
typename T, precision P>
 
  176         GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tmat2x4<T,P> 
const&);
 
  177         template <
typename CTy, 
typename CTr, 
typename T, precision P>
 
  178         GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tmat3x2<T,P> 
const&);
 
  179         template <
typename CTy, 
typename CTr, 
typename T, precision P>
 
  180         GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tmat3x3<T,P> 
const&);
 
  181         template <
typename CTy, 
typename CTr, 
typename T, precision P>
 
  182         GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tmat3x4<T,P> 
const&);
 
  183         template <
typename CTy, 
typename CTr, 
typename T, precision P>
 
  184         GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tmat4x2<T,P> 
const&);
 
  185         template <
typename CTy, 
typename CTr, 
typename T, precision P>
 
  186         GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tmat4x3<T,P> 
const&);
 
  187         template <
typename CTy, 
typename CTr, 
typename T, precision P>
 
  188         GLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, tmat4x4<T,P> 
const&);
 
  190   template <
typename CTy, 
typename CTr, 
typename T, precision P>
 
  191         GLM_FUNC_DECL std::basic_ostream<CTy,CTr> & operator<<(std::basic_ostream<CTy,CTr> &,
 
  192                                                          std::pair<tmat4x4<T,P> 
const, tmat4x4<T,P> 
const> 
const &);