Guitarix
gx_system.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2009, 2010 Hermann Meyer, James Warden, Andreas Degert
3  * Copyright (C) 2011 Pete Shorthose
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  * --------------------------------------------------------------------------
19  */
20 
21 /* ------- This is the System namespace ------- */
22 
23 #pragma once
24 
25 #ifndef SRC_HEADERS_GX_SYSTEM_H_
26 #define SRC_HEADERS_GX_SYSTEM_H_
27 
28 #ifndef NDEBUG
29 #include <fenv.h>
30 
31 #ifdef __i386__
32 #define FE_DENORM __FE_DENORM
33 inline void clear_fpu_status_bits() { __asm__ ("fnclex"); }
34 inline unsigned int get_fpu_status_bits() {
35  unsigned int fpu_status __attribute__ ((__mode__ (__HI__)));
36  __asm__("fnstsw %0" : "=m" (*&fpu_status));
37  return fpu_status;
38 }
39 #else
40 inline void clear_fpu_status_bits() { feclearexcept(FE_ALL_EXCEPT); }
41 inline unsigned int get_fpu_status_bits() {
42  fexcept_t flagp;
43  int ret = fegetexceptflag(&flagp, FE_ALL_EXCEPT);
44  assert(ret == 0);
45  return flagp;
46 }
47 #endif //__i386__
48 #endif // !NDEBUG
49 #ifdef __SSE__
50 
51 /* On Intel set FZ (Flush to Zero) and DAZ (Denormals Are Zero)
52  flags to avoid costly denormals */
53 #ifdef __SSE3__
54 #ifndef _PMMINTRIN_H_INCLUDED
55 #include <pmmintrin.h>
56 #endif //ndef
57 inline void AVOIDDENORMALS() {
58  _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON);
59  _MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_ON);
60 }
61 #else
62 #ifndef _XMMINTRIN_H_INCLUDED
63 #include <xmmintrin.h>
64 #endif //ndef
65 inline void AVOIDDENORMALS() { _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON); }
66 #endif //__SSE3__
67 
68 #else
69 #ifndef _XMMINTRIN_H_INCLUDED
70 inline void _MM_SET_EXCEPTION_STATE(unsigned int __mask) {}
71 inline unsigned int _MM_GET_EXCEPTION_STATE(void) { return 0; }
72 #endif //ndef
73 inline void AVOIDDENORMALS() {}
74 
75 #endif //__SSE__
76 
77 
78 /* constant defines */
79 #define ASCII_START (48)
80 #define GDK_NO_MOD_MASK (GdkModifierType)0
81 #define SYSTEM_OK (0)
82 
83 
84 namespace gx_system {
85 
86 /****************************************************************
87  ** "atomic" value access
88  */
89 
90 inline void atomic_set(volatile int* p, int v) {
91  g_atomic_int_set(p, v);
92 }
93 
94 inline void atomic_set(volatile unsigned int* p, unsigned int v) {
95  g_atomic_int_set(reinterpret_cast<volatile int*>(p), v);
96 }
97 
98 inline int atomic_get(volatile int& p) {
99  return g_atomic_int_get(&p);
100 }
101 
102 inline unsigned int atomic_get(volatile unsigned int& p) {
103  return g_atomic_int_get(reinterpret_cast<volatile int*>(&p));
104 }
105 
106 inline void atomic_inc(volatile int* p) {
107  g_atomic_int_inc(p);
108 }
109 
110 inline void atomic_inc(volatile unsigned int* p) {
111  g_atomic_int_inc(reinterpret_cast<volatile int*>(p));
112 }
113 
114 inline bool atomic_compare_and_exchange(volatile int *p, int oldv, int newv) {
115 #if (GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION < 68 && GLIB_MICRO_VERSION < 1)
116  return g_atomic_int_compare_and_exchange(p, oldv, newv);
117 #else
118  return g_atomic_int_compare_and_exchange(const_cast<int*>(p), oldv, newv);
119 #endif
120 }
121 
122 template <class T>
123 inline void atomic_set(T **p, T *v) {
124  g_atomic_pointer_set(p, v);
125 }
126 
127 template <class T>
128 inline void atomic_set_0(T **p) {
129  g_atomic_pointer_set(p, 0);
130 }
131 
132 template <class T>
133 inline T *atomic_get(T*& p) {
134  return static_cast<T*>(g_atomic_pointer_get(&p));
135 }
136 
137 template <class T>
138 inline bool atomic_compare_and_exchange(T **p, T *oldv, T *newv) {
139  return g_atomic_pointer_compare_and_exchange(reinterpret_cast<void**>(p), static_cast<void*>(oldv), newv);
140 }
141 
142 
143 /****************************************************************
144  ** Measuring times
145  */
146 
147 #ifndef NDEBUG
148 
149 class Accum {
150  private:
151  int n;
152  int mn;
153  int mx;
154  float sx;
155  float sx2;
156  public:
157  Accum() { reset(); }
158  inline void reset() {
159  n = 0;
160  mn = 1e9;
161  mx = 0;
162  sx = 0;
163  sx2 = 0;
164  }
165  void add(int diff);
166  int count() const { return n; }
167  float mean() const { return sx / n; }
168  float stddev() const { return std::sqrt((n * sx2 - sx * sx) / (n * (n-1))); }
169  float minimum() const { return mn; }
170  float maximum() const { return mx; }
171 };
172 
173 inline void Accum::add(int diff) {
174  n += 1;
175  sx += diff;
176  sx2 += static_cast<float>(diff) * diff;
177  mn = std::min(mn, diff);
178  mx = std::max(mx, diff);
179 }
180 
181 
182 struct Measure {
187  unsigned int FPUStatus1;
188  unsigned int MXStatus1;
189  unsigned int FPUStatus2;
190  unsigned int MXStatus2;
191  inline float ns2ms(int n) const { return n * 1e-6; }
192  void reset();
193  Measure() { reset(); }
194  void print_accum(const Accum& accum, const char* prefix, bool verbose, int total = 0) const;
195  void print(bool verbose) const;
196 };
197 
199  private:
200  Measure m[2];
202  timespec t1s;
203  timespec t1e;
204  timespec t2s;
205  timespec t1old;
206  unsigned int FPUStatus;
207  unsigned int MXStatus;
208  inline Measure *access() { return atomic_get(pmeasure); }
209  inline int ts_diff(const timespec& ts1, const timespec& ts2);
210  public:
212  inline void start() {
215  clock_gettime(CLOCK_MONOTONIC, &t1s);
216  }
217  inline void pause() {
218  clock_gettime(CLOCK_MONOTONIC, &t1e);
221  }
222  inline void cont() {
225  clock_gettime(CLOCK_MONOTONIC, &t2s);
226  }
227  inline void stop();
228  void print(bool verbose = false);
229 };
230 
231 /* return time difference in ns, fail if > sec (doesn't fit int 32 bit int) */
232 inline int MeasureThreadsafe::ts_diff(const timespec& ts1, const timespec& ts2) {
233  time_t df = ts1.tv_sec - ts2.tv_sec;
234  if (std::abs(df) > 2) {
235  return -1; // failed
236  }
237  return df * 1000000000 + (ts1.tv_nsec - ts2.tv_nsec);
238 }
239 
240 
241 inline void MeasureThreadsafe::stop() {
242  Measure& m = *access();
243  timespec n;
244  clock_gettime(CLOCK_MONOTONIC, &n);
248  m.MXStatus1 |= MXStatus;
249  if (!(t1old.tv_sec == 0 && t1old.tv_nsec == 0)) {
251  }
252  t1old = t1s;
254  m.duration2.add(ts_diff(n, t2s));
255  m.duration.add(ts_diff(n, t1s));
256 }
257 
259 
261 
262 inline void measure_start() { measure.start(); }
263 inline void measure_pause() { measure.pause(); }
264 inline void measure_cont() { measure.cont(); }
265 inline void measure_stop() { measure.stop(); }
266 
267 #else
268 
269 inline void measure_start() {}
270 inline void measure_pause() {}
271 inline void measure_cont() {}
272 inline void measure_stop() {}
273 
274 #endif
275 
276 /****************************************************************/
277 
279 public:
280  Glib::ustring name;
281  std::vector<Glib::ustring> skin_list;
282  SkinHandling(const std::string& styledir)
283  : name(), skin_list() { set_styledir(styledir); }
284  void set_styledir(const std::string& styledir);
285  bool is_in_list(const std::string& skin_name);
286  const Glib::ustring& operator[](unsigned int idx);
287  unsigned int index(const Glib::ustring& skin_name);
288  string get_cssfile() const;
290 };
291 
292 /****************************************************************/
293 
294 class PathList {
295 public:
296  typedef std::list< Glib::RefPtr<Gio::File> > pathlist;
297  typedef std::list< Glib::RefPtr<Gio::File> >::const_iterator iterator;
298 private:
300 public:
301  PathList(const char *env_name = 0);
302  void add(const std::string& d) { dirs.push_back(Gio::File::create_for_path(d)); }
303  bool contains(const std::string& d) const;
304  bool find_dir(std::string *d, const std::string& filename) const;
305  size_t size() { return dirs.size(); }
306  iterator begin() { return dirs.begin(); }
307  iterator end() { return dirs.end(); }
308 };
309 
310 
311 /****************************************************************/
312 
314 public:
315  typedef std::map<char,std::string> symbol_path_map;
316 private:
318 public:
321  std::string replace_symbol(const std::string& dir) const;
322  std::string replace_path(const std::string& dir) const;
323  void add(char s, const std::string& d);
324  void replace(char s, const std::string& d);
326 };
327 
328 
329 /*****************************************************************
330  ** class DirectoryListing
331  */
332 
333 class FileName {
334 public:
335  std::string filename;
336  Glib::ustring displayname;
337  FileName(const std::string& filename_, const Glib::ustring& displayname_)
338  : filename(filename_), displayname(displayname_) {}
339 };
340 
342 public:
343 private:
344  std::vector<FileName> listing;
345 public:
346  IRFileListing(const std::string& path);
348  std::vector<FileName>& get_listing() { return listing; }
349 };
350 
351 void list_subdirs(PathList pl, std::vector<FileName>& dirs);
352 
353 /****************************************************************
354  ** class CmdlineOptions
355  */
356 
357 #define RPCPORT_DEFAULT (-2)
358 #define RPCPORT_NONE (-1)
359 
360 class BasicOptions: boost::noncopyable {
361 private:
362  std::string user_dir;
363  std::string user_IR_dir;
364  std::string sys_IR_dir;
368 protected:
369  std::string builder_dir;
370 
371 private:
372  friend BasicOptions& get_options();
373 protected:
374  static void make_ending_slash(std::string& dirpath);
375 public:
376 #ifdef GUITARIX_AS_PLUGIN
377  BasicOptions(const char *modulepath);
378  void replace_sysIRDir(const std::string& dir);
379 #else
381 #endif
383  std::string get_user_filepath(const std::string& basename) const { return user_dir + basename; }
384  std::string get_user_ir_filepath(const std::string& basename) const { return user_IR_dir + basename; }
385  std::string get_builder_filepath(const std::string& basename) const { return builder_dir + basename; }
386  void set_user_dir(std::string dir) { user_dir = dir; }
387  void set_user_IR_dir(std::string dir) { user_IR_dir = dir; }
388  const std::string& get_user_dir() const { return user_dir; }
389  const std::string& get_user_IR_dir() const { return user_IR_dir; }
390  const std::string& get_sys_IR_dir() const { return sys_IR_dir; }
391  const PathList& get_IR_pathlist() const { return IR_pathlist; }
392  const PrefixConverter& get_IR_prefixmap() const { return IR_prefixmap; }
393 };
394 
395 class CmdlineOptions: public BasicOptions, public Glib::OptionContext {
396 private:
397  Glib::OptionGroup main_group;
398  Glib::OptionGroup optgroup_style;
399  Glib::OptionGroup optgroup_jack;
400  Glib::OptionGroup optgroup_overload;
401  Glib::OptionGroup optgroup_file;
402  Glib::OptionGroup optgroup_debug;
403  std::string path_to_program;
404  bool version;
405  bool clear;
406  Glib::ustring jack_input;
407  Glib::ustring jack_midi;
408  Glib::ustring jack_instance;
409  std::vector<Glib::ustring> jack_outputs;
410  Glib::ustring jack_uuid;
411  Glib::ustring jack_uuid2;
414  Glib::ustring jack_servername;
415  std::string load_file;
416  std::string style_dir;
417  std::string factory_dir;
418  std::string pixmap_dir;
419  std::string old_user_dir;
420  std::string preset_dir;
421  std::string pluginpreset_dir;
422  std::string lv2_preset_dir;
423  std::string temp_dir;
424  std::string plugin_dir;
425  std::string loop_dir;
426  Glib::ustring rcset;
427  bool nogui;
428  int rpcport;
429  Glib::ustring rpcaddress;
430  bool onlygui;
433  bool mute;
434  Glib::ustring setbank;
435  Glib::ustring cmdline_bank;
436  Glib::ustring cmdline_preset;
437  Glib::ustring tuner_tet;
438  Glib::ustring tuner_ref;
444  bool lterminal;
445  bool a_save;
446  bool auto_save;
447  std::string get_opskin();
448 
449 public:
450 #ifndef NDEBUG
452 #endif
454 
455  void read_ui_vars();
457  // saved in ui_rc:
476 
477 public:
478 #ifdef GUITARIX_AS_PLUGIN
479  CmdlineOptions(const char *modulepath);
480 #else
482 #endif
484  void process(int argc, char** argv);
485  const std::string& get_path_to_program() const { return path_to_program; }
486  std::string get_style_filepath(const std::string& basename) const { return style_dir + basename; }
488  std::string get_pixmap_filepath(const std::string& basename) const { return pixmap_dir + basename; }
489  std::string get_preset_filepath(const std::string& basename) const { return preset_dir + basename; }
490  std::string get_plugin_filepath(const std::string& basename) const { return plugin_dir + basename; }
491  std::string get_factory_filepath(const std::string& basename) const { return factory_dir + basename; }
492  std::string get_temp_filepath(const std::string& basename) const { return temp_dir + basename; }
493  std::string get_pluginpreset_filepath(const std::string& id, bool factory) const {
494  return (factory ? factory_dir : pluginpreset_dir) + id; }
495  std::string get_lv2_preset_filepath(const std::string& id) const {
496  return (lv2_preset_dir) + id; }
497  const std::string& get_old_user_dir() const { return old_user_dir; }
498  const std::string& get_plugin_dir() const { return plugin_dir; }
499  const std::string& get_preset_dir() const { return preset_dir; }
500  const std::string& get_pluginpreset_dir() const { return pluginpreset_dir; }
501  const std::string& get_lv2_preset_dir() const { return lv2_preset_dir; }
502  const std::string& get_loop_dir() const { return loop_dir; }
503  const std::string& get_temp_dir() const { return temp_dir; }
504 
505  void set_plugin_dir(std::string dir) { plugin_dir = dir; }
506  void set_preset_dir(std::string dir) { preset_dir = dir; }
507  void set_pluginpreset_dir(std::string dir) { pluginpreset_dir = dir; }
508  void set_lv2_preset_dir(std::string dir) { lv2_preset_dir = dir; }
509  void set_loop_dir(std::string dir) { loop_dir = dir; }
510  void set_temp_dir(std::string dir) { temp_dir = dir; }
511 
512  const std::string& get_factory_dir() const { return factory_dir; }
513  const std::string& get_style_dir() const { return style_dir; }
514  std::string get_ladspa_config_filename() const { return get_user_filepath("ladspa_defs.js"); }
515  std::string get_online_config_filename() const { return get_user_filepath("musical-artifacts.js"); }
516  std::string get_online_presets_filename() const { return get_user_filepath("artifacts.js"); }
517  const Glib::ustring& get_rcset() const { return rcset; }
518  bool get_clear_rc() const { return clear; }
519  bool get_nogui() const { return nogui; }
520  bool get_liveplaygui() const { return liveplaygui; }
521  bool get_hideonquit() const { return hideonquit; }
522  void set_hideonquit(bool set) { hideonquit = set; }
523  bool get_mute() const { return mute; }
524  const Glib::ustring& get_setbank() { return setbank; }
525  void set_bank_preset(const Glib::ustring& bank, const Glib::ustring& preset) {
526  cmdline_bank = bank; cmdline_preset = preset; }
527  const Glib::ustring& get_cmdline_bank() { return cmdline_bank; }
528  const Glib::ustring& get_cmdline_preset() { return cmdline_preset; }
529  const Glib::ustring& get_tuner_tet() { return tuner_tet; }
530  const Glib::ustring& get_tuner_ref() { return tuner_ref; }
531  int get_rpcport() const { return rpcport; }
532  void set_rpcport(int port) { rpcport = port; }
533  const Glib::ustring& get_rpcaddress() { return rpcaddress; }
534  void set_rpcaddress(const Glib::ustring& address) { rpcaddress = address; }
535  const std::string& get_loadfile() const { return load_file; }
536  const Glib::ustring& get_jack_instancename() const { return jack_instance; }
537  void set_jack_instancename(std::string name) { jack_instance = name; }
538  const Glib::ustring& get_jack_uuid() const { return jack_uuid; }
539  const Glib::ustring& get_jack_uuid2() const { return jack_uuid2; }
540  const Glib::ustring& get_jack_midi() const { return jack_midi; }
541  const Glib::ustring& get_jack_input() const { return jack_input; }
542  const Glib::ustring& get_jack_servername() const { return jack_servername; }
543  bool get_jack_noconnect() const { return jack_noconnect; }
544  bool get_jack_single() const { return jack_single; }
545  void set_jack_noconnect(bool set) { jack_noconnect = set; }
546  void set_jack_single(bool set) { jack_single = set; }
547  bool get_opt_save_on_exit() const { return a_save; }
548  bool get_opt_autosave() const { return auto_save; }
549  void set_opt_autosave(bool set) { auto_save = set; }
550  Glib::ustring get_jack_output(unsigned int n) const;
552  int get_sporadic_overload() const { return sporadic_overload; }
553  bool get_xrun_watchdog() const { return xrun_watchdog; }
555  bool get_watchdog_warning() const { return watchdog_warning; }
556 };
557 
559  assert(BasicOptions::instance);
560  return *BasicOptions::instance;
561 }
562 
563 
564 /****************************************************************
565  ** misc function declarations
566  */
567 
568 int gx_system_call(const std::string&, bool devnull = false, bool escape = false);
569 void strip(Glib::ustring& s);
570 
571 template <class T>
572 inline std::string to_string(const T& t) {
573  std::stringstream ss;
574  ss << t;
575  return ss.str();
576 }
577 
578 std::string encode_filename(const std::string& s);
579 std::string decode_filename(const std::string& s);
580 
581 } /* end of gx_system namespace */
582 
583 #endif // SRC_HEADERS_GX_SYSTEM_H_
int count() const
Definition: gx_system.h:166
float minimum() const
Definition: gx_system.h:169
float stddev() const
Definition: gx_system.h:168
void add(int diff)
Definition: gx_system.h:173
float maximum() const
Definition: gx_system.h:170
float mean() const
Definition: gx_system.h:167
friend BasicOptions & get_options()
Definition: gx_system.h:558
PrefixConverter IR_prefixmap
Definition: gx_system.h:366
std::string get_builder_filepath(const std::string &basename) const
Definition: gx_system.h:385
const PrefixConverter & get_IR_prefixmap() const
Definition: gx_system.h:392
static void make_ending_slash(std::string &dirpath)
void set_user_dir(std::string dir)
Definition: gx_system.h:386
const PathList & get_IR_pathlist() const
Definition: gx_system.h:391
const std::string & get_sys_IR_dir() const
Definition: gx_system.h:390
static BasicOptions * instance
Definition: gx_system.h:367
const std::string & get_user_IR_dir() const
Definition: gx_system.h:389
std::string get_user_ir_filepath(const std::string &basename) const
Definition: gx_system.h:384
std::string get_user_filepath(const std::string &basename) const
Definition: gx_system.h:383
std::string builder_dir
Definition: gx_system.h:369
std::string sys_IR_dir
Definition: gx_system.h:364
void set_user_IR_dir(std::string dir)
Definition: gx_system.h:387
std::string user_IR_dir
Definition: gx_system.h:363
std::string user_dir
Definition: gx_system.h:362
const std::string & get_user_dir() const
Definition: gx_system.h:388
std::string path_to_program
Definition: gx_system.h:403
Glib::ustring tuner_ref
Definition: gx_system.h:438
void set_preset_dir(std::string dir)
Definition: gx_system.h:506
Glib::ustring rpcaddress
Definition: gx_system.h:429
const std::string & get_style_dir() const
Definition: gx_system.h:513
const Glib::ustring & get_tuner_tet()
Definition: gx_system.h:529
Glib::ustring jack_servername
Definition: gx_system.h:414
void set_opt_autosave(bool set)
Definition: gx_system.h:549
std::string get_online_config_filename() const
Definition: gx_system.h:515
Glib::ustring jack_midi
Definition: gx_system.h:407
const std::string & get_old_user_dir() const
Definition: gx_system.h:497
void set_jack_instancename(std::string name)
Definition: gx_system.h:537
bool get_opt_save_on_exit() const
Definition: gx_system.h:547
Glib::OptionGroup optgroup_jack
Definition: gx_system.h:399
const std::string & get_pluginpreset_dir() const
Definition: gx_system.h:500
std::string get_temp_filepath(const std::string &basename) const
Definition: gx_system.h:492
std::string get_lv2_preset_filepath(const std::string &id) const
Definition: gx_system.h:495
std::string get_plugin_filepath(const std::string &basename) const
Definition: gx_system.h:490
bool get_watchdog_warning() const
Definition: gx_system.h:555
const std::string & get_preset_dir() const
Definition: gx_system.h:499
const Glib::ustring & get_jack_input() const
Definition: gx_system.h:541
Glib::OptionGroup optgroup_file
Definition: gx_system.h:401
std::string old_user_dir
Definition: gx_system.h:419
bool get_clear_rc() const
Definition: gx_system.h:518
std::vector< Glib::ustring > jack_outputs
Definition: gx_system.h:409
Glib::OptionGroup optgroup_overload
Definition: gx_system.h:400
std::string get_pluginpreset_filepath(const std::string &id, bool factory) const
Definition: gx_system.h:493
void set_pluginpreset_dir(std::string dir)
Definition: gx_system.h:507
const std::string & get_plugin_dir() const
Definition: gx_system.h:498
std::string get_ladspa_config_filename() const
Definition: gx_system.h:514
const std::string & get_loop_dir() const
Definition: gx_system.h:502
Glib::OptionGroup optgroup_debug
Definition: gx_system.h:402
int get_sporadic_overload() const
Definition: gx_system.h:552
std::string get_preset_filepath(const std::string &basename) const
Definition: gx_system.h:489
bool get_liveplaygui() const
Definition: gx_system.h:520
Glib::OptionGroup main_group
Definition: gx_system.h:397
bool get_hideonquit() const
Definition: gx_system.h:521
const std::string & get_factory_dir() const
Definition: gx_system.h:512
Glib::ustring jack_input
Definition: gx_system.h:406
void set_bank_preset(const Glib::ustring &bank, const Glib::ustring &preset)
Definition: gx_system.h:525
const Glib::ustring & get_rcset() const
Definition: gx_system.h:517
void set_rpcport(int port)
Definition: gx_system.h:532
void set_lv2_preset_dir(std::string dir)
Definition: gx_system.h:508
void set_hideonquit(bool set)
Definition: gx_system.h:522
Glib::OptionGroup optgroup_style
Definition: gx_system.h:398
void set_plugin_dir(std::string dir)
Definition: gx_system.h:505
const Glib::ustring & get_cmdline_bank()
Definition: gx_system.h:527
Glib::ustring cmdline_preset
Definition: gx_system.h:436
bool get_opt_autosave() const
Definition: gx_system.h:548
Glib::ustring get_jack_output(unsigned int n) const
void set_temp_dir(std::string dir)
Definition: gx_system.h:510
bool get_nogui() const
Definition: gx_system.h:519
const Glib::ustring & get_setbank()
Definition: gx_system.h:524
const Glib::ustring & get_jack_instancename() const
Definition: gx_system.h:536
const Glib::ustring & get_jack_servername() const
Definition: gx_system.h:542
bool get_xrun_watchdog() const
Definition: gx_system.h:553
std::string get_online_presets_filename() const
Definition: gx_system.h:516
void set_jack_noconnect(bool set)
Definition: gx_system.h:545
const Glib::ustring & get_jack_uuid2() const
Definition: gx_system.h:539
void set_rpcaddress(const Glib::ustring &address)
Definition: gx_system.h:534
const Glib::ustring & get_tuner_ref()
Definition: gx_system.h:530
Glib::ustring jack_uuid
Definition: gx_system.h:410
const std::string & get_path_to_program() const
Definition: gx_system.h:485
int get_idle_thread_timeout() const
Definition: gx_system.h:551
Glib::ustring jack_instance
Definition: gx_system.h:408
const std::string & get_temp_dir() const
Definition: gx_system.h:503
bool get_jack_single() const
Definition: gx_system.h:544
std::string get_pixmap_filepath(const std::string &basename) const
Definition: gx_system.h:488
bool get_convolver_watchdog() const
Definition: gx_system.h:554
std::string get_current_style_cssfile() const
Definition: gx_system.h:487
void set_jack_single(bool set)
Definition: gx_system.h:546
const std::string & get_loadfile() const
Definition: gx_system.h:535
std::string get_style_filepath(const std::string &basename) const
Definition: gx_system.h:486
void process(int argc, char **argv)
Glib::ustring tuner_tet
Definition: gx_system.h:437
const Glib::ustring & get_jack_midi() const
Definition: gx_system.h:540
const Glib::ustring & get_rpcaddress()
Definition: gx_system.h:533
void set_loop_dir(std::string dir)
Definition: gx_system.h:509
const Glib::ustring & get_cmdline_preset()
Definition: gx_system.h:528
std::string get_factory_filepath(const std::string &basename) const
Definition: gx_system.h:491
std::string pluginpreset_dir
Definition: gx_system.h:421
std::string lv2_preset_dir
Definition: gx_system.h:422
Glib::ustring jack_uuid2
Definition: gx_system.h:411
bool get_jack_noconnect() const
Definition: gx_system.h:543
const std::string & get_lv2_preset_dir() const
Definition: gx_system.h:501
const Glib::ustring & get_jack_uuid() const
Definition: gx_system.h:538
Glib::ustring setbank
Definition: gx_system.h:434
Glib::ustring cmdline_bank
Definition: gx_system.h:435
FileName(const std::string &filename_, const Glib::ustring &displayname_)
Definition: gx_system.h:337
std::string filename
Definition: gx_system.h:335
Glib::ustring displayname
Definition: gx_system.h:336
std::vector< FileName > & get_listing()
Definition: gx_system.h:348
IRFileListing(const std::string &path)
std::vector< FileName > listing
Definition: gx_system.h:344
int ts_diff(const timespec &ts1, const timespec &ts2)
Definition: gx_system.h:232
void print(bool verbose=false)
std::list< Glib::RefPtr< Gio::File > >::const_iterator iterator
Definition: gx_system.h:297
bool find_dir(std::string *d, const std::string &filename) const
iterator begin()
Definition: gx_system.h:306
PathList(const char *env_name=0)
std::list< Glib::RefPtr< Gio::File > > pathlist
Definition: gx_system.h:296
iterator end()
Definition: gx_system.h:307
bool contains(const std::string &d) const
void add(const std::string &d)
Definition: gx_system.h:302
std::string replace_symbol(const std::string &dir) const
void add(char s, const std::string &d)
const symbol_path_map & get_symbol_path_map()
Definition: gx_system.h:325
std::string replace_path(const std::string &dir) const
symbol_path_map dirs
Definition: gx_system.h:317
std::map< char, std::string > symbol_path_map
Definition: gx_system.h:315
void replace(char s, const std::string &d)
std::vector< Glib::ustring > skin_list
Definition: gx_system.h:281
SkinHandling(const std::string &styledir)
Definition: gx_system.h:282
bool is_in_list(const std::string &skin_name)
void set_styledir(const std::string &styledir)
const Glib::ustring & operator[](unsigned int idx)
string get_cssfile() const
unsigned int index(const Glib::ustring &skin_name)
Glib::ustring name
Definition: gx_system.h:280
#define min(x, y)
#define max(x, y)
unsigned int _MM_GET_EXCEPTION_STATE(void)
Definition: gx_system.h:71
void clear_fpu_status_bits()
Definition: gx_system.h:40
void AVOIDDENORMALS()
Definition: gx_system.h:73
void _MM_SET_EXCEPTION_STATE(unsigned int __mask)
Definition: gx_system.h:70
unsigned int get_fpu_status_bits()
Definition: gx_system.h:41
void measure_pause()
Definition: gx_system.h:263
void measure_stop()
Definition: gx_system.h:265
std::string encode_filename(const std::string &s)
int atomic_get(volatile int &p)
Definition: gx_system.h:98
void atomic_set(volatile int *p, int v)
Definition: gx_system.h:90
int gx_system_call(const std::string &, bool devnull=false, bool escape=false)
void measure_start()
Definition: gx_system.h:262
void measure_cont()
Definition: gx_system.h:264
void atomic_inc(volatile int *p)
Definition: gx_system.h:106
void add_time_measurement()
std::string decode_filename(const std::string &s)
BasicOptions & get_options()
Definition: gx_system.h:558
bool atomic_compare_and_exchange(volatile int *p, int oldv, int newv)
Definition: gx_system.h:114
MeasureThreadsafe measure
void atomic_set_0(T **p)
Definition: gx_system.h:128
std::string to_string(const T &t)
Definition: gx_system.h:572
void strip(Glib::ustring &s)
void list_subdirs(PathList pl, std::vector< FileName > &dirs)
unsigned int MXStatus1
Definition: gx_system.h:188
void print(bool verbose) const
unsigned int MXStatus2
Definition: gx_system.h:190
void print_accum(const Accum &accum, const char *prefix, bool verbose, int total=0) const
unsigned int FPUStatus2
Definition: gx_system.h:189
unsigned int FPUStatus1
Definition: gx_system.h:187
float ns2ms(int n) const
Definition: gx_system.h:191