Go to the documentation of this file.
25 #ifndef SRC_HEADERS_GX_SYSTEM_H_
26 #define SRC_HEADERS_GX_SYSTEM_H_
32 #define FE_DENORM __FE_DENORM
35 unsigned int fpu_status __attribute__ ((__mode__ (__HI__)));
36 __asm__(
"fnstsw %0" :
"=m" (*&fpu_status));
43 int ret = fegetexceptflag(&flagp, FE_ALL_EXCEPT);
54 #ifndef _PMMINTRIN_H_INCLUDED
55 #include <pmmintrin.h>
58 _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON);
59 _MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_ON);
62 #ifndef _XMMINTRIN_H_INCLUDED
63 #include <xmmintrin.h>
65 inline void AVOIDDENORMALS() { _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON); }
69 #ifndef _XMMINTRIN_H_INCLUDED
79 #define ASCII_START (48)
80 #define GDK_NO_MOD_MASK (GdkModifierType)0
90 inline void atomic_set(
volatile int* p,
int v) {
91 g_atomic_int_set(p, v);
94 inline void atomic_set(
volatile unsigned int* p,
unsigned int v) {
95 g_atomic_int_set(reinterpret_cast<volatile int*>(p), v);
99 return g_atomic_int_get(&p);
102 inline unsigned int atomic_get(
volatile unsigned int& p) {
103 return g_atomic_int_get(reinterpret_cast<volatile int*>(&p));
110 inline void atomic_inc(
volatile unsigned int* p) {
111 g_atomic_int_inc(reinterpret_cast<volatile int*>(p));
115 return g_atomic_int_compare_and_exchange(p, oldv, newv);
120 g_atomic_pointer_set(p, v);
125 g_atomic_pointer_set(p, 0);
130 return static_cast<T*>(g_atomic_pointer_get(&p));
135 return g_atomic_pointer_compare_and_exchange(reinterpret_cast<void* volatile*>(p), oldv, newv);
154 inline void reset() {
163 float mean()
const {
return sx / n; }
164 float stddev()
const {
return std::sqrt((n * sx2 - sx * sx) / (n * (n-1))); }
166 float maximum()
const {
return mx; }
172 sx2 += static_cast<float>(diff) * diff;
187 inline float ns2ms(
int n)
const {
return n * 1e-6; }
190 void print_accum(
const Accum& accum,
const char* prefix,
bool verbose,
int total = 0)
const;
191 void print(
bool verbose)
const;
202 unsigned int FPUStatus;
203 unsigned int MXStatus;
205 inline int ts_diff(
const timespec& ts1,
const timespec& ts2);
208 inline void start() {
211 clock_gettime(CLOCK_MONOTONIC, &t1s);
213 inline void pause() {
214 clock_gettime(CLOCK_MONOTONIC, &t1e);
221 clock_gettime(CLOCK_MONOTONIC, &t2s);
224 void print(
bool verbose =
false);
228 inline int MeasureThreadsafe::ts_diff(
const timespec& ts1,
const timespec& ts2) {
229 time_t df = ts1.tv_sec - ts2.tv_sec;
230 if (std::abs(df) > 2) {
233 return df * 1000000000 + (ts1.tv_nsec - ts2.tv_nsec);
240 clock_gettime(CLOCK_MONOTONIC, &n);
245 if (!(t1old.tv_sec == 0 && t1old.tv_nsec == 0)) {
283 const Glib::ustring&
operator[](
unsigned int idx);
284 unsigned int index(
const Glib::ustring& name);
291 typedef std::list< Glib::RefPtr<Gio::File> >
pathlist;
292 typedef std::list< Glib::RefPtr<Gio::File> >::const_iterator
iterator;
297 void add(
const std::string& d) { dirs.push_back(Gio::File::create_for_path(d)); }
299 bool find_dir(std::string *d,
const std::string& filename)
const;
300 size_t size() {
return dirs.size(); }
318 void add(
char s,
const std::string& d);
330 FileName(
const std::string& filename_,
const Glib::ustring& displayname_)
334 class IRFileListing {
337 std::vector<FileName> listing;
341 std::vector<FileName>&
get_listing() {
return listing; }
344 void list_subdirs(PathList pl, std::vector<FileName>& dirs);
350 #define RPCPORT_DEFAULT (-2)
351 #define RPCPORT_NONE (-1)
355 std::string user_dir;
356 std::string user_IR_dir;
357 std::string sys_IR_dir;
371 std::string
get_user_filepath(
const std::string& basename)
const {
return user_dir + basename; }
381 class CmdlineOptions:
public BasicOptions,
public Glib::OptionContext {
383 Glib::OptionGroup main_group;
384 Glib::OptionGroup optgroup_style;
385 Glib::OptionGroup optgroup_jack;
386 Glib::OptionGroup optgroup_overload;
387 Glib::OptionGroup optgroup_file;
388 Glib::OptionGroup optgroup_debug;
389 std::string path_to_program;
392 Glib::ustring jack_input;
393 Glib::ustring jack_midi;
394 Glib::ustring jack_instance;
395 std::vector<Glib::ustring> jack_outputs;
396 Glib::ustring jack_uuid;
397 Glib::ustring jack_uuid2;
400 Glib::ustring jack_servername;
401 std::string load_file;
402 std::string style_dir;
403 std::string factory_dir;
404 std::string pixmap_dir;
405 std::string old_user_dir;
406 std::string preset_dir;
407 std::string pluginpreset_dir;
408 std::string lv2_preset_dir;
409 std::string temp_dir;
410 std::string plugin_dir;
411 std::string loop_dir;
415 Glib::ustring rpcaddress;
420 Glib::ustring setbank;
421 Glib::ustring tuner_tet;
422 Glib::ustring tuner_ref;
423 int sporadic_overload;
424 int idle_thread_timeout;
425 bool convolver_watchdog;
430 std::string get_opskin();
432 void write_ui_vars();
466 std::string
get_plugin_filepath(
const std::string& basename)
const {
return plugin_dir + basename; }
468 std::string
get_temp_filepath(
const std::string& basename)
const {
return temp_dir + basename; }
470 return (factory ? factory_dir : pluginpreset_dir) + id; }
472 return (lv2_preset_dir) + id; }
484 const Glib::ustring&
get_rcset()
const {
return rcset; }
516 assert(BasicOptions::instance);
517 return *BasicOptions::instance;
525 int gx_system_call(
const std::string&,
bool devnull =
false,
bool escape =
false);
526 void strip(Glib::ustring& s);
529 inline std::string
to_string(
const T& t) {
530 std::stringstream ss;
540 #endif // SRC_HEADERS_GX_SYSTEM_H_
const Glib::ustring & get_setbank()
const PathList & get_IR_pathlist() const
std::string get_user_filepath(const std::string &basename) const
bool get_hideonquit() const
IRFileListing(const std::string &path)
const Glib::ustring & operator[](unsigned int idx)
std::string encode_filename(const std::string &s)
const std::string & get_pluginpreset_dir() const
void atomic_set(volatile int *p, int v)
int get_idle_thread_timeout() const
bool get_convolver_watchdog() const
void print(bool verbose) const
int get_sporadic_overload() const
MeasureThreadsafe measure
std::list< Glib::RefPtr< Gio::File > > pathlist
std::string get_plugin_filepath(const std::string &basename) const
unsigned int _MM_GET_EXCEPTION_STATE(void)
void set_styledir(const std::string &styledir)
FileName(const std::string &filename_, const Glib::ustring &displayname_)
std::string get_lv2_preset_filepath(const std::string &id) const
const Glib::ustring & get_jack_uuid2() const
bool find_dir(std::string *d, const std::string &filename) const
void _MM_SET_EXCEPTION_STATE(unsigned int __mask)
std::string get_factory_filepath(const std::string &basename) const
static void make_ending_slash(std::string &dirpath)
void atomic_inc(volatile int *p)
const std::string & get_plugin_dir() const
std::string get_pixmap_filepath(const std::string &basename) const
const std::string & get_user_IR_dir() const
std::string replace_path(const std::string &dir) const
BasicOptions & get_options()
const std::string & get_path_to_program() const
std::string to_string(const T &t)
bool is_in_list(const std::string &name)
std::string decode_filename(const std::string &s)
const Glib::ustring & get_jack_midi() const
friend BasicOptions & get_options()
const std::string & get_sys_IR_dir() const
bool get_jack_noconnect() const
std::string get_temp_filepath(const std::string &basename) const
std::list< Glib::RefPtr< Gio::File > >::const_iterator iterator
std::string get_style_filepath(const std::string &basename) const
void print(bool verbose=false)
bool get_jack_single() const
const Glib::ustring & get_rpcaddress()
const std::string & get_preset_dir() const
std::string get_online_config_filename() const
std::string get_user_ir_filepath(const std::string &basename) const
bool get_xrun_watchdog() const
void print_accum(const Accum &accum, const char *prefix, bool verbose, int total=0) const
const std::string & get_user_dir() const
const std::string & get_temp_dir() const
bool atomic_compare_and_exchange(volatile int *p, int oldv, int newv)
Glib::ustring displayname
const Glib::ustring & get_tuner_tet()
const Glib::ustring & get_jack_input() const
std::string get_builder_filepath(const std::string &basename) const
bool get_opt_autosave() const
const std::string & get_factory_dir() const
const PrefixConverter & get_IR_prefixmap() const
bool system_show_tooltips
void set_rpcport(int port)
void add(char s, const std::string &d)
const Glib::ustring & get_jack_instancename() const
const Glib::ustring & get_jack_servername() const
void set_rpcaddress(const Glib::ustring &address)
std::vector< FileName > & get_listing()
int atomic_get(volatile int &p)
const Glib::ustring & get_tuner_ref()
PathList(const char *env_name=0)
std::string get_preset_filepath(const std::string &basename) const
unsigned int get_fpu_status_bits()
std::string get_online_presets_filename() const
bool get_liveplaygui() const
const std::string & get_old_user_dir() const
void add_time_measurement()
void list_subdirs(PathList pl, std::vector< FileName > &dirs)
Glib::ustring get_jack_output(unsigned int n) const
std::vector< Glib::ustring > skin_list
const std::string & get_lv2_preset_dir() const
const Glib::ustring & get_jack_uuid() const
void add(const std::string &d)
const Glib::ustring & get_rcset() const
void strip(Glib::ustring &s)
std::map< char, std::string > symbol_path_map
bool contains(const std::string &d) const
std::string replace_symbol(const std::string &dir) const
unsigned int index(const Glib::ustring &name)
void process(int argc, char **argv)
SkinHandling(const std::string &styledir)
bool get_clear_rc() const
const std::string & get_loop_dir() const
std::string get_ladspa_config_filename() const
std::string get_pluginpreset_filepath(const std::string &id, bool factory) const
void clear_fpu_status_bits()
const std::string & get_loadfile() const
bool get_opt_save_on_exit() const
int gx_system_call(const std::string &, bool devnull=false, bool escape=false)