ADMB Documentation  11.1.2491
 All Classes Files Functions Variables Typedefs Friends Defines
dvect_io.cpp
Go to the documentation of this file.
00001 /*
00002  * $Id: dvect_io.cpp 2272 2014-08-29 20:13:55Z johnoel $
00003  *
00004  * Author: David Fournier
00005  * Copyright (c) 2008-2012 Regents of the University of California
00006  */
00011 // file: dvect_io.cpp
00012 
00013 // i/o ooperations for class dvector
00014 #include "fvar.hpp"
00015 
00016 #ifdef __TURBOC__
00017   #pragma hdrstop
00018   #include <iostream.h>
00019   #include <iomanip.h>
00020   #include <fstream.h>
00021   #define __USE_IOSTREAM__
00022 #endif
00023 
00024 #ifdef __ZTC__
00025   #include <iostream.hpp>
00026   #include <iomanip.hpp>
00027   #include <fstream.hpp>
00028   #define __USE_IOSTREAM__
00029 #endif
00030 
00031 #include <string.h>
00032 
00037 ostream& operator<<(const ostream& _ostr,const dvector& z)
00038 {
00039   ostream& ostr=(ostream&) _ostr;
00040   z.write_on(ostr);
00041 
00042   return ostr;
00043 }
00044 
00049 void dvector::write_on(const ostream& _s) const
00050 {
00051   ostream& s=(ostream&) _s;
00052 #ifdef __USE_IOSTREAM__
00053   using std::streamsize;
00054   streamsize new_w = s.width();
00055   streamsize new_p = s.precision();
00056 #if !defined(__cplusplus)
00057   long new_form = s.flags();
00058 #else
00059   ios::fmtflags new_form = s.flags();
00060 #endif
00061   char new_fill = s.fill();
00062 #endif
00063   for (int i=indexmin(); i <= indexmax(); i++)
00064   {
00065   #ifdef __USE_IOSTREAM__
00066      s.width(0);
00067      s << " ";
00068      s.width(new_w);
00069      s.precision(new_p);
00070      s.flags(new_form);
00071      s.fill(new_fill);
00072      s << (*this)[i];
00073   #else
00074      s << " " << (*this)[i];
00075   #endif
00076   }
00077 }
00078 
00083 istream& operator>>(const istream& _istr, const dvector& _z)
00084 {
00085   dvector& z = (dvector&)_z;
00086   istream& istr= (istream&) _istr;
00087   z.read_from(istr);
00088 
00089   return istr;
00090 }
00091 
00096 void dvector::read_from(const istream& _s)
00097 {
00098   istream& s= (istream&) _s;
00099   for (int i=indexmin(); i <= indexmax(); i++)
00100   {
00101      s >> elem(i);
00102   }
00103 }
00104 
00105