summaryrefslogtreecommitdiff
path: root/mg_tools.h
blob: dda574b9bc55bf26c69051dc5870b0045756244f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/*! \file  muggle_tools.h
 *  \ingroup muggle
 *  \brief  A few utility functions for standalone and plugin messaging for the vdr muggle plugindatabase
 *
 * \version $Revision: 1.4 $
 * \date    $Date$
 * \author  Ralf Klueber, Lars von Wedel, Andreas Kellner
 * \author  file owner: $Author$
 * 
 */

/* makes sure we don't use the same declarations twice */
#ifndef _MUGGLE_TOOLS_H
#define _MUGGLE_TOOLS_H

#include <iostream>
#include <string>
#include <mysql.h>

#define STANDALONE 1 // what's this?


/*! \brief mySql helper function to execute read queries
 *  \ingroup muggle
 *
 *  \todo Could be a member of mgDatabase?
 */
MYSQL_RES* mgSqlReadQuery(  MYSQL *db, const char *fmt, ... );

/*! \brief mySql helper function to execute write queries
 *  \ingroup muggle
 *
 *  \todo Could be a member of mgDatabase?
 */
void mgSqlWriteQuery( MYSQL *db, const char *fmt, ... );


/*!  
 * \brief Logging utilities 
 * 
 * \todo these could be static members in the mgLog class
 * \todo code of these functions should be compiled conditionally
 */
//@{
void mgSetDebugLevel(int new_level);
void mgDebug(int level, const char *fmt, ...);
void mgDebug( const char *fmt, ... );
void mgWarning(const char *fmt, ...);
void mgError(const char *fmt, ...);
//@}

#ifdef DEBUG
#define MGLOG(x) mgLog __thelog(x)
#else
#define MGLOG(x) {}
#endif

#ifdef DEBUG
#define MGLOGSTREAM __thelog.getStream()
#else
#define MGLOGSTREAM __thelog.getStream()
#endif

/*! \brief simplified logging class
 *  \ingroup muggle
 * 
 *  Create a local instance at the beginning of the method
 *  and entering/leaving the function will be logged
 *  as constructors/destructors are called.
 */
class mgLog
{
 public:
  enum
    {
      LOG, WARNING, ERROR, FATAL
    } mgLogLevel;

  std::ostream& getStream()
    {
      return std::cout;
    }
  
  mgLog( std::string methodname ) : m_methodname( methodname ) 
    {
      getStream() << m_methodname << " entered" << std::endl;
    };

  ~mgLog()
    {
      getStream() << m_methodname << " terminated" << std::endl;
    }

 private:
  
  std::string m_methodname;

};

#endif /*  _MUGGLE_TOOLS_H */