Nemiver  0.3
nmv-sess-mgr.h
Go to the documentation of this file.
1 // Author: Dodji Seketeli
2 /*
3  *This file is part of the Nemiver project
4  *
5  *Nemiver is free software; you can redistribute
6  *it and/or modify it under the terms of
7  *the GNU General Public License as published by the
8  *Free Software Foundation; either version 2,
9  *or (at your option) any later version.
10  *
11  *Nemiver is distributed in the hope that it will
12  *be useful, but WITHOUT ANY WARRANTY;
13  *without even the implied warranty of
14  *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15  *See the GNU General Public License for more details.
16  *
17  *You should have received a copy of the
18  *GNU General Public License along with Nemiver;
19  *see the file COPYING.
20  *If not, write to the Free Software Foundation,
21  *Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22  *
23  *See COPYRIGHT file copyright information.
24  */
25 #ifndef __NMV_SESS_MGR_H__
26 #define __NMV_SESS_MGR_H__
27 
28 #include <list>
29 #include <map>
30 #include "common/nmv-object.h"
31 #include "common/nmv-ustring.h"
33 #include "common/nmv-transaction.h"
34 #include "nmv-i-debugger.h"
35 
36 using namespace std;
43 
44 NEMIVER_BEGIN_NAMESPACE (nemiver)
45 
46 class ISessMgr;
48 
49 class NEMIVER_API ISessMgr : public Object {
50  //non copyable
51  ISessMgr (const ISessMgr&);
52  ISessMgr& operator= (const ISessMgr&);
53 
54 protected:
55  ISessMgr () {};
56 
57 public:
58  class Breakpoint {
59  UString m_file_name;
60  UString m_file_full_name;
61  int m_line_number;
62  bool m_enabled;
63  UString m_condition;
64  int m_ignore_count;
65  bool m_is_countpoint;
66 
67  public:
68  Breakpoint (const UString &a_file_name,
69  const UString &a_file_full_name,
70  const UString &a_line_number,
71  const UString &a_enabled,
72  const UString &a_condition,
73  const UString &a_ignore_count,
74  const UString &a_is_countpoint) :
75  m_file_name (a_file_name),
76  m_file_full_name (a_file_full_name),
77  m_line_number (atoi (a_line_number.c_str ())),
78  m_enabled (atoi (a_enabled.c_str ())),
79  m_condition (a_condition),
80  m_ignore_count (atoi (a_ignore_count.c_str ())),
81  m_is_countpoint (atoi (a_is_countpoint.c_str ()))
82  {}
83 
84  Breakpoint (const UString &a_file_name,
85  const UString &a_file_full_name,
86  int a_line_number,
87  bool a_enabled,
88  const UString &a_condition,
89  unsigned a_ignore_count,
90  bool a_is_countpoint) :
91  m_file_name (a_file_name),
92  m_file_full_name (a_file_full_name),
93  m_line_number (a_line_number),
94  m_enabled (a_enabled),
95  m_condition (a_condition),
96  m_ignore_count (a_ignore_count),
97  m_is_countpoint (a_is_countpoint)
98  {}
99 
101  m_line_number (0),
102  m_enabled (true),
103  m_ignore_count (0),
104  m_is_countpoint (false)
105  {}
106 
107  const UString& file_name () const {return m_file_name;}
108  void file_name (const UString &a_in) {m_file_name = a_in;}
109 
110  const UString& file_full_name () const {return m_file_full_name;}
111  void file_full_name (const UString &a_in) {m_file_full_name = a_in;}
112 
113  int line_number () const {return m_line_number;}
114  void line_number (int a_in) {m_line_number = a_in;}
115 
116  bool enabled () const { return m_enabled; }
117  void enabled (bool a_in) { m_enabled = a_in;}
118 
119  const UString& condition () const {return m_condition;}
120  void condition (const UString &a_cond) {m_condition = a_cond;}
121 
122  int ignore_count () const {return m_ignore_count;}
123  void ignore_count (int a_c) {m_ignore_count = a_c;}
124 
125  bool is_countpoint () const {return m_is_countpoint;}
126  void is_countpoint (bool a) {m_is_countpoint = a;}
127  };
128 
129  class WatchPoint {
130  UString m_expression;
131  bool m_is_write;
132  bool m_is_read;
133 
134  public:
135  WatchPoint (const UString &a_expression,
136  bool a_is_write,
137  bool a_is_read) :
138  m_expression (a_expression),
139  m_is_write (a_is_write),
140  m_is_read (a_is_read)
141  {
142  }
143 
144  WatchPoint (const UString &a_expression,
145  UString &a_is_write,
146  UString &a_is_read) :
147  m_expression (a_expression),
148  m_is_write (a_is_write == "true" ? true : false),
149  m_is_read (a_is_read == "true" ? true : false)
150  {
151  }
152 
153  const UString& expression () const {return m_expression;}
154  void expression (const UString &a_expr) {m_expression = a_expr;}
155 
156  bool is_write () const {return m_is_write;}
157  void is_write (bool f) {m_is_write = f;}
158 
159  bool is_read () const {return m_is_read;}
160  void is_read (bool f) {m_is_read = f;}
161  }; // end class WatchPoint
162 
163  class Session {
164  gint64 m_session_id;
165  map<UString, UString> m_properties;
166  map<UString, UString> m_env_variables;
167  list<Breakpoint> m_breakpoints;
168  list<WatchPoint> m_watchpoints;
169  list<UString> m_opened_files;
170  list<UString> m_search_paths;
171 
172  public:
173  Session () :
174  m_session_id (0)
175  {}
176 
177  Session (gint64 a_session_id) :
178  m_session_id (a_session_id)
179  {}
180 
181  gint64 session_id () const {return m_session_id;}
182  void session_id (gint64 a_in) {m_session_id = a_in;}
183 
184  const map<UString, UString>& properties () const {return m_properties;}
185  map<UString, UString>& properties () {return m_properties;}
186 
187  const map<UString, UString>& env_variables () const
188  {
189  return m_env_variables;
190  }
191  map<UString, UString>& env_variables () {return m_env_variables;}
192 
193  list<Breakpoint>& breakpoints () {return m_breakpoints;}
194  const list<Breakpoint>& breakpoints () const { return m_breakpoints;}
195 
196  list<WatchPoint>& watchpoints () {return m_watchpoints;}
197  const list<WatchPoint>& watchpoints () const {return m_watchpoints;}
198 
199  list<UString>& opened_files () {return m_opened_files;}
200  const list<UString>& opened_files () const {return m_opened_files;}
201 
202  list<UString>& search_paths () {return m_search_paths;}
203  const list<UString>& search_paths () const {return m_search_paths;}
204  };//end class Session
205 
206  virtual ~ISessMgr () {}
207  virtual Transaction& default_transaction () = 0;
208  virtual list<Session>& sessions () = 0;
209  virtual const list<Session>& sessions () const = 0;
210  virtual void store_session (Session &a_session,
211  Transaction &a_trans) = 0;
212  virtual void store_sessions (Transaction &a_trans) = 0;
213  virtual void load_session (Session &a_session,
214  Transaction &a_trans) = 0;
215  virtual void load_sessions (Transaction &a_trans) = 0;
216  virtual void load_sessions () = 0;
217  virtual void delete_session (gint64 a_id,
218  Transaction &a_trans) = 0;
219  virtual void delete_session (gint64 a_id) = 0;
220  virtual void delete_sessions (Transaction &a_trans) = 0;
221  virtual void delete_sessions () = 0;
222 
223  virtual void clear_session (gint64 a_id, Transaction &a_trans) = 0;
224  virtual void clear_session (gint64 a_id) = 0;
225  static ISessMgrSafePtr create (const UString &a_root_dir);
226 };//end class SessMgr
227 
228 NEMIVER_END_NAMESPACE (nemiver)
229 
230 #endif //__NMV_SESS_MGR_H__
231 
nmv-safe-ptr-utils.h
nemiver::ISessMgr::Session::Session
Session()
Definition: nmv-sess-mgr.h:173
nemiver::common::Object
Definition: nmv-object.h:43
nemiver::ISessMgr
Definition: nmv-sess-mgr.h:49
nemiver::ISessMgr::Breakpoint::Breakpoint
Breakpoint()
Definition: nmv-sess-mgr.h:100
nemiver::ISessMgr::Session::session_id
void session_id(gint64 a_in)
Definition: nmv-sess-mgr.h:182
nmv-transaction.h
nemiver::ISessMgr::ISessMgr
ISessMgr()
Definition: nmv-sess-mgr.h:55
nemiver::ISessMgr::WatchPoint
Definition: nmv-sess-mgr.h:129
nemiver
Definition: nmv-address.h:31
nemiver::ISessMgr::Breakpoint::file_full_name
const UString & file_full_name() const
Definition: nmv-sess-mgr.h:110
nemiver::common::ObjectRef
Definition: nmv-safe-ptr-utils.h:45
nemiver::ISessMgr::WatchPoint::WatchPoint
WatchPoint(const UString &a_expression, bool a_is_write, bool a_is_read)
Definition: nmv-sess-mgr.h:135
nemiver::ISessMgr::Session::env_variables
map< UString, UString > & env_variables()
Definition: nmv-sess-mgr.h:191
nmv-ustring.h
NEMIVER_API
#define NEMIVER_API
Definition: nmv-api-macros.h:53
nemiver::ISessMgr::Breakpoint::condition
const UString & condition() const
Definition: nmv-sess-mgr.h:119
nemiver::ISessMgr::WatchPoint::is_read
void is_read(bool f)
Definition: nmv-sess-mgr.h:160
nemiver::ISessMgr::Breakpoint::Breakpoint
Breakpoint(const UString &a_file_name, const UString &a_file_full_name, int a_line_number, bool a_enabled, const UString &a_condition, unsigned a_ignore_count, bool a_is_countpoint)
Definition: nmv-sess-mgr.h:84
nemiver::ISessMgr::Session::breakpoints
list< Breakpoint > & breakpoints()
Definition: nmv-sess-mgr.h:193
nemiver::ISessMgr::Session::properties
const map< UString, UString > & properties() const
Definition: nmv-sess-mgr.h:184
nemiver::ISessMgr::Breakpoint::enabled
void enabled(bool a_in)
Definition: nmv-sess-mgr.h:117
nemiver::ISessMgr::Session::opened_files
const list< UString > & opened_files() const
Definition: nmv-sess-mgr.h:200
nemiver::ISessMgr::WatchPoint::expression
void expression(const UString &a_expr)
Definition: nmv-sess-mgr.h:154
nemiver::ISessMgr::Breakpoint::is_countpoint
bool is_countpoint() const
Definition: nmv-sess-mgr.h:125
nemiver::ISessMgr::Breakpoint::condition
void condition(const UString &a_cond)
Definition: nmv-sess-mgr.h:120
nemiver::ISessMgr::Session::properties
map< UString, UString > & properties()
Definition: nmv-sess-mgr.h:185
nemiver::common::UString
Definition: nmv-ustring.h:45
nemiver::ISessMgr::Session::watchpoints
const list< WatchPoint > & watchpoints() const
Definition: nmv-sess-mgr.h:197
nemiver::ISessMgr::Session::session_id
gint64 session_id() const
Definition: nmv-sess-mgr.h:181
nemiver::ISessMgr::WatchPoint::is_read
bool is_read() const
Definition: nmv-sess-mgr.h:159
nemiver::ISessMgr::Breakpoint::line_number
int line_number() const
Definition: nmv-sess-mgr.h:113
nemiver::ISessMgr::Breakpoint::line_number
void line_number(int a_in)
Definition: nmv-sess-mgr.h:114
nemiver::ISessMgr::WatchPoint::expression
const UString & expression() const
Definition: nmv-sess-mgr.h:153
nemiver::ISessMgr::WatchPoint::is_write
void is_write(bool f)
Definition: nmv-sess-mgr.h:157
nemiver::ISessMgr::Breakpoint::ignore_count
void ignore_count(int a_c)
Definition: nmv-sess-mgr.h:123
nemiver::ISessMgr::Session::breakpoints
const list< Breakpoint > & breakpoints() const
Definition: nmv-sess-mgr.h:194
nemiver::ISessMgr::Breakpoint::enabled
bool enabled() const
Definition: nmv-sess-mgr.h:116
nemiver::ISessMgr::Breakpoint::file_full_name
void file_full_name(const UString &a_in)
Definition: nmv-sess-mgr.h:111
nemiver::ISessMgr::Breakpoint::ignore_count
int ignore_count() const
Definition: nmv-sess-mgr.h:122
nemiver::ISessMgr::Session::search_paths
list< UString > & search_paths()
Definition: nmv-sess-mgr.h:202
nemiver::ISessMgr::Breakpoint::file_name
void file_name(const UString &a_in)
Definition: nmv-sess-mgr.h:108
nemiver::ISessMgr::Breakpoint
Definition: nmv-sess-mgr.h:58
nemiver::ISessMgr::Session::search_paths
const list< UString > & search_paths() const
Definition: nmv-sess-mgr.h:203
nemiver::ISessMgr::~ISessMgr
virtual ~ISessMgr()
Definition: nmv-sess-mgr.h:206
nemiver::ISessMgr::Breakpoint::Breakpoint
Breakpoint(const UString &a_file_name, const UString &a_file_full_name, const UString &a_line_number, const UString &a_enabled, const UString &a_condition, const UString &a_ignore_count, const UString &a_is_countpoint)
Definition: nmv-sess-mgr.h:68
nemiver::ISessMgr::Breakpoint::file_name
const UString & file_name() const
Definition: nmv-sess-mgr.h:107
nemiver::ISessMgr::WatchPoint::WatchPoint
WatchPoint(const UString &a_expression, UString &a_is_write, UString &a_is_read)
Definition: nmv-sess-mgr.h:144
nemiver::ISessMgr::Session::Session
Session(gint64 a_session_id)
Definition: nmv-sess-mgr.h:177
nemiver::ISessMgr::Session::opened_files
list< UString > & opened_files()
Definition: nmv-sess-mgr.h:199
nemiver::ISessMgr::Session
Definition: nmv-sess-mgr.h:163
nemiver::ISessMgr::Session::env_variables
const map< UString, UString > & env_variables() const
Definition: nmv-sess-mgr.h:187
nmv-i-debugger.h
nemiver::common::ObjectUnref
Definition: nmv-safe-ptr-utils.h:55
nemiver::common::Transaction
the application level persistence transaction class. abstracts a transaction several persistent objec...
Definition: nmv-transaction.h:49
nmv-object.h
nemiver::ISessMgr::Breakpoint::is_countpoint
void is_countpoint(bool a)
Definition: nmv-sess-mgr.h:126
nemiver::ISessMgr::WatchPoint::is_write
bool is_write() const
Definition: nmv-sess-mgr.h:156
nemiver::common::SafePtr
Definition: nmv-safe-ptr.h:71
nemiver::ISessMgr::Session::watchpoints
list< WatchPoint > & watchpoints()
Definition: nmv-sess-mgr.h:196