blob: 56114e77ef650cc394e15924379c3a46f33c5441 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef CSV_STD_OUTP_HXX
#define CSV_STD_OUTP_HXX
// USED SERVICES
// BASE CLASSES
// COMPONENTS
#include <cosv/csv_ostream.hxx>
// PARAMETERS
namespace csv
{
#ifdef CSV_NO_IOSTREAMS
class redirect_out : public ostream
{
public:
virtual ~redirect_out() {}
void re_endl() { do_re_endl(); }
void re_flush() { do_re_flush(); }
static void set_(
redirect_out & o_rStdOut,
redirect_out & o_rStdErr )
{ pStdOut_ = &o_rStdOut;
pStdErr_ = &o_rStdErr; }
static redirect_out &
std_() { return *pStdOut_; }
static redirect_out &
err_() { return *pStdErr_; }
static bool useme_() { return pStdOut_ != 0; }
private:
virtual void do_re_endl() = 0;
virtual void do_re_flush() = 0;
// DATA
static redirect_out *
pStdOut_;
static redirect_out *
pStdErr_;
};
#endif // defined(CSV_NO_IOSTREAMS)
inline ostream &
Cout()
{
#ifndef CSV_NO_IOSTREAMS
// return redirect_out::useme_()
// ? (ostream&)( redirect_out::std_() )
// : (ostream&)( std::cout );
return (ostream&)( std::cout );
#else
csv_assert( redirect_out::useme_() );
return redirect_out::std_();
#endif
}
inline ostream &
Cerr()
{
#ifndef CSV_NO_IOSTREAMS
// return redirect_out::useme_()
// ? (ostream&)( redirect_out::err_() )
// : (ostream&)( std::cerr );
return (ostream&)( std::cerr );
#else
csv_assert( redirect_out::useme_() );
return redirect_out::err_();
#endif
}
typedef void (*F_FLUSHING_FUNC)(ostream&, bool, int*);
void Endl( ostream&, bool, int* );
void Flush( ostream&, bool, int* );
} // namespace csv
inline csv::ostream &
operator<<( csv::ostream & io_rStream,
csv::F_FLUSHING_FUNC i_fFlushingFunc )
{
#ifndef CSV_NO_IOSTREAMS
// (*i_fFlushingFunc)( io_rStream, csv::redirect_out::useme_(), 0 );
(*i_fFlushingFunc)( io_rStream, false, 0 );
#else
csv_assert( csv::redirect_out::useme_() );
(*i_fFlushingFunc)( io_rStream, true, 0 );
#endif
return io_rStream;
}
#endif