Free Web Hosting Provider - Web Hosting - E-commerce - High Speed Internet - Free Web Page
Search the Web


// =================================================================
//
//  Copyright (C) 2003 Alex Vinokur
//
//  For conditions of distribution and use, see
//  copyright notice in common.h
//
// =================================================================


// #################################################################
//
//  SOFTWARE : C++ Stream-Compatible TCP/IP Sockets Demo Application
//  FILE     : macro.h
//
//  DESCRIPTION :
//         Various macro
//
// #################################################################


////////////////////////
#ifndef INCLUDED_MACRO_H
#define INCLUDED_MACRO_H
////////////////////////


#define  OUT_PREFIX_TEXT \
        "[ " \
      << std::left \
      << setw (12) \
      << __FILE__ \
      << " , #" \
      << std::right \
      << setw(4) \
      << __LINE__ \
      << " ] "


#if (MILESTONE_LOG)
#define MOUT(t)   mout << OUT_PREFIX_TEXT << t
#else
#define MOUT(t)
#endif


// ---------------------------------
#define TEMPLATE_MSG(x) string ("[ " + to_string(__FILE__) + " , #" + to_string(__LINE__) + " ]  " + to_string (x)).c_str() 

#define MSG_THROW(x) TEMPLATE_MSG(x)

// ---------------------------------
#if (TRACE_LOG)
  #define SET_DETAILED_TRACE(x)  \
   ostringstream tmp_oss; tmp_oss << x; \
   ClassTrace trace_inst (__FILE__, __LINE__, __FUNCTION__, __PRETTY_FUNCTION__, tmp_oss.str())
  #define SHOW1_TRACE(x)      trace_inst.show_trace("STEP", x, "", __LINE__)
  #define SHOW2_TRACE(x, t)   trace_inst.show_trace("STEP", x, t, __LINE__)
#else
  #define SET_DETAILED_TRACE(x)
  #define SHOW1_TRACE(x)
  #define SHOW2_TRACE(x,t)
#endif

#define SET_TRACE    SET_DETAILED_TRACE("")
#define SET_CTOR_TRACE     SET_DETAILED_TRACE("Ctor")
#define SET_DTOR_TRACE     SET_DETAILED_TRACE("Dtor")

#define MAX_VALUE(x,y)  ((x) > (y) ? (x) : (y))

#define WARNING(x)  if (!(x)) \
   { cerr << OUT_PREFIX_TEXT \
               << "WARNING!  " \
               << "`" \
               << #x \
               << "\'  FAILED" \
               << endl; \
               }

//////
#endif
//////