Path: blob/devel/ElmerGUI/netgen/libsrc/general/netgenout.hpp
3206 views
#ifndef NETGEN_OUT_STREAM_HPP__1#define NETGEN_OUT_STREAM_HPP__23// #include <ostream>4// #include <mystdlib.h>5// #include <meshing.hpp>67#ifdef PARALLEL8extern int id;9extern int ntasks;10#endif11extern int printmessage_importance;12131415class Imp16{17int importance;18public:19Imp () : importance(0) { ; }2021Imp ( int aimportance ) : importance(aimportance) { ; }2223int GetImp () const { return importance; }24};252627class Proc28{29int proc;30public:31Proc () : proc(0) { ; }3233Proc ( int aproc ) : proc(aproc) { ; }3435int GetProc () const { return proc; }36};3738class Procs39{40const netgen::FlatArray<int> procs;4142public:4344Procs ( const netgen::FlatArray<int> & aprocs ) : procs (aprocs) { ; }4546const netgen::FlatArray<int> & GetProcs () const { return procs; }47};48495051class NetgenOutStream52{53ostream * out;5455bool print;56bool printheader;575859public:60NetgenOutStream() :61out(&std::cout),62print(1),63printheader(1)64{65;66}6768NetgenOutStream(ostream * aout, Imp imp ) :69out(aout),70printheader(1)71{72if ( netgen::printmessage_importance >= imp.GetImp() )73print = true;74else75print = false;76}7778NetgenOutStream(ostream * aout, Proc proc ) :79out(aout),80printheader(1)81{82#ifdef PARALLEL83if ( netgen::id == proc.GetProc() )84print = true;85else86print = false;87#else88if ( 0 == proc.GetProc() )89print = true;90else91print = false;9293#endif94}9596NetgenOutStream(ostream * aout, Procs & procs ) :97out(aout),98printheader(1)99{100#ifdef PARALLEL101if ( procs.GetProcs().Contains(netgen::id) )102print = true;103else104print = false;105#else106if ( procs.GetProcs().Contains(0) )107print = true;108else109print = false;110111#endif112}113114ostream & OStream ()115{116return *out;117}118119template <typename T>120NetgenOutStream & operator<< (T & var)121{122if ( print )123{124#ifdef PARALLEL125if ( printheader )126{127*out << "proc " << netgen::id << ": ";128printheader = false;129}130#endif131*out << var;132}133return (*this);134}135136NetgenOutStream& operator<< (ostream& ( *pf )(ostream&))137{138if ( print )139*out << (*pf) ;140141return (*this);142}143144NetgenOutStream& operator<< (ios& ( *pf )(ios&))145{146if ( print)147*out << (*pf) ;148149printheader = 1;150151return (*this);152}153154NetgenOutStream& operator<< (ios_base& ( *pf )(ios_base&))155{156if (print )157*out << (*pf) ;158return (*this);159}160161162};163164165NetgenOutStream operator<< ( ostream & ost, Imp imp );166NetgenOutStream operator<< ( ostream & ost, Proc proc );167NetgenOutStream operator<< ( ostream & ost, Procs & procs );168// {169// return ( NetgenOutStream ( &ost, imp.GetImp() ) );170// }171172// template <typename T>173// NetgenOutStream& operator<< (NetgenOutStream& out, T c )174// {175// out.OStream() << c << endl;176// return out;177// }178179180181182183#endif184185186