X-Git-Url: https://scm.cri.ensmp.fr/git/Faustine.git/blobdiff_plain/1059e1cc0c2ecfa237406949aa26155b6a5b9154..66f23d4fabf89ad09adbd4dfc15ac6b5b2b7da83:/interpreter/preprocessor/faust-0.9.47mr3/architecture/osclib/faust/src/lib/OSCFError.h diff --git a/interpreter/preprocessor/faust-0.9.47mr3/architecture/osclib/faust/src/lib/OSCFError.h b/interpreter/preprocessor/faust-0.9.47mr3/architecture/osclib/faust/src/lib/OSCFError.h new file mode 100644 index 0000000..2b6d642 --- /dev/null +++ b/interpreter/preprocessor/faust-0.9.47mr3/architecture/osclib/faust/src/lib/OSCFError.h @@ -0,0 +1,77 @@ +/* + Copyright (c) Grame 2010 + + This library is free software; you can redistribute it and modify it under + the terms of the GNU Library General Public License as published by the + Free Software Foundation version 2 of the License, or any later version. + + This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License + for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + Grame Research Laboratory, 9, rue du Garet 69001 Lyon - France + research@grame.fr + +*/ + +#ifndef __OSCFError__ +#define __OSCFError__ + +#include +#include "OSCStream.h" + +namespace oscfaust +{ + +//-------------------------------------------------------------------------- +/*! +\brief OSC error stream + + Combines the \c cerr and \c oscerr streams +*/ +typedef struct OSCFError { + bool oscpending; + OSCFError() { oscpending = false; } +} OSCFError; + +typedef struct OSCFErrorEnd { +} OSCFErrEnd; + + +inline OSCFError& operator << (OSCFError& err, OSCFErrEnd end) +{ + std::cerr << std::endl; +#ifndef NO_OSC + oscerr << OSCEnd(); + err.oscpending = false; +#endif + return err; +} + +template OSCFError& operator << (OSCFError& err, const T& arg) +{ + std::cerr << arg; +#ifndef NO_OSC + if (!err.oscpending) { + oscerr << OSCErr(); + err.oscpending = true; + } + oscerr << arg; +#endif + return err; +} + +class Message; +OSCFError& operator << (OSCFError& err, const Message* arg); + +extern OSCFError OSCFErr; // static OSC error output stream +extern OSCFErrEnd OSCFEndl; // static OSC error output stream end + +} // end namespace + +#endif