std::unique_ptr<languaget> get_language( const namespacet &ns, const irep_idt &identifier) { if(identifier=="") return std::unique_ptr<languaget>(get_default_language()); else { const symbolt *symbol; if(ns.lookup(identifier, symbol)) return std::unique_ptr<languaget>(get_default_language()); else if(symbol->mode=="") return std::unique_ptr<languaget>(get_default_language()); else { languaget *ptr=get_language_from_mode(symbol->mode); if(ptr==NULL) throw "symbol `"+id2string(symbol->name)+ "' has unknown mode '"+id2string(symbol->mode)+"'"; return std::unique_ptr<languaget>(ptr); } } }
bool prompt_for_cpp(CommandCtx *ctx, int recurse) /*recurse=2*/ { std::string cpp_y_or_n; language l = get_default_language(); if(l == language::c) return false; if(l == language::cpp) return true; prompt_for("use C++ version? (y/n)", &cpp_y_or_n, ctx); if(cpp_y_or_n == "y") return true; else if(cpp_y_or_n == "n") return false; else if(recurse > 0){ std::cout<< "INVALID - enter 'y' or 'n'" << std::endl; return prompt_for_cpp(ctx, recurse-1); }else{ std::cout<< "INVALID - defaulting to C version" << std::endl; return false; } }
void initialize(const fs::path& p) { set_workpath(p); if (set_language(get_default_language(), false)) { return; } if (set_language(get_system_language(), false)) { return; } if (set_language(L"zh-CN", false)) { return; } }
void load_default_config(void) { const char *username, *realname, *font, *langs; char *sp; #ifdef WIN32 wchar_t* roaming_path_wide; gchar* roaming_path; #endif username = g_get_user_name (); if (!username) username = g_strdup ("root"); /* We hid Real name from the Network List, so don't use the user's name unnoticeably */ /* realname = g_get_real_name (); if ((realname && realname[0] == 0) || !realname) realname = username; */ realname = g_strdup ("realname"); username = convert_with_fallback (username, "username"); realname = convert_with_fallback (realname, "realname"); memset (&prefs, 0, sizeof (struct hexchatprefs)); /* put in default values, anything left out is automatically zero */ /* BOOLEANS */ prefs.hex_away_show_once = 1; prefs.hex_away_track = 1; prefs.hex_dcc_auto_resume = 1; #ifndef WIN32 prefs.hex_dcc_fast_send = 1; #endif prefs.hex_gui_autoopen_chat = 1; prefs.hex_gui_autoopen_dialog = 1; prefs.hex_gui_autoopen_recv = 1; prefs.hex_gui_autoopen_send = 1; #ifdef HAVE_GTK_MAC prefs.hex_gui_hide_menu = 1; #endif prefs.hex_gui_input_attr = 1; prefs.hex_gui_input_icon = 1; prefs.hex_gui_input_nick = 1; prefs.hex_gui_input_spell = 1; prefs.hex_gui_input_style = 1; prefs.hex_gui_join_dialog = 1; prefs.hex_gui_quit_dialog = 1; /* prefs.hex_gui_slist_skip = 1; */ prefs.hex_gui_tab_chans = 1; prefs.hex_gui_tab_dialogs = 1; prefs.hex_gui_tab_icons = 1; prefs.hex_gui_tab_middleclose = 1; prefs.hex_gui_tab_server = 1; prefs.hex_gui_tab_sort = 1; prefs.hex_gui_topicbar = 1; prefs.hex_gui_transparency = 255; prefs.hex_gui_tray = 1; prefs.hex_gui_tray_blink = 1; prefs.hex_gui_ulist_count = 1; prefs.hex_gui_ulist_icons = 1; prefs.hex_gui_ulist_resizable = 1; prefs.hex_gui_ulist_style = 1; prefs.hex_gui_win_save = 1; prefs.hex_input_flash_hilight = 1; prefs.hex_input_flash_priv = 1; prefs.hex_input_tray_hilight = 1; prefs.hex_input_tray_priv = 1; prefs.hex_irc_cap_server_time = 1; prefs.hex_irc_logging = 1; prefs.hex_irc_who_join = 1; /* Can kick with inordinate amount of channels, required for some of our features though, TODO: add cap like away check? */ prefs.hex_irc_whois_front = 1; prefs.hex_net_auto_reconnect = 1; prefs.hex_net_throttle = 1; prefs.hex_stamp_log = 1; prefs.hex_stamp_text = 1; prefs.hex_text_autocopy_text = 1; prefs.hex_text_indent = 1; prefs.hex_text_replay = 1; prefs.hex_text_search_follow = 1; prefs.hex_text_show_marker = 1; prefs.hex_text_show_sep = 1; prefs.hex_text_stripcolor_replay = 1; prefs.hex_text_stripcolor_topic = 1; prefs.hex_text_thin_sep = 1; prefs.hex_text_wordwrap = 1; prefs.hex_url_grabber = 1; /* NUMBERS */ prefs.hex_away_size_max = 300; prefs.hex_away_timeout = 60; prefs.hex_completion_amount = 5; prefs.hex_completion_sort = 1; prefs.hex_dcc_auto_recv = 1; /* browse mode */ prefs.hex_dcc_blocksize = 1024; prefs.hex_dcc_permissions = 0600; prefs.hex_dcc_stall_timeout = 60; prefs.hex_dcc_timeout = 180; prefs.hex_flood_ctcp_num = 5; prefs.hex_flood_ctcp_time = 30; prefs.hex_flood_msg_num = 5; /*FIXME*/ prefs.hex_flood_msg_time = 30; prefs.hex_gui_chanlist_maxusers = 9999; prefs.hex_gui_chanlist_minusers = 5; prefs.hex_gui_dialog_height = 256; prefs.hex_gui_dialog_width = 500; prefs.hex_gui_lagometer = 1; prefs.hex_gui_lang = get_default_language(); prefs.hex_gui_pane_left_size = 128; /* with treeview icons we need a bit bigger space */ prefs.hex_gui_pane_right_size = 100; prefs.hex_gui_pane_right_size_min = 80; prefs.hex_gui_tab_layout = 2; /* 0=Tabs 1=Reserved 2=Tree */ prefs.hex_gui_tab_newtofront = 2; prefs.hex_gui_tab_pos = 1; prefs.hex_gui_tab_trunc = 20; prefs.hex_gui_throttlemeter = 1; prefs.hex_gui_ulist_pos = 3; prefs.hex_gui_win_height = 400; prefs.hex_gui_win_width = 640; prefs.hex_input_balloon_time = 20; prefs.hex_irc_ban_type = 1; prefs.hex_irc_join_delay = 5; prefs.hex_net_reconnect_delay = 10; prefs.hex_notify_timeout = 15; prefs.hex_text_max_indent = 256; prefs.hex_text_max_lines = 500; prefs.hex_url_grabber_limit = 100; /* 0 means unlimited */ /* STRINGS */ strcpy (prefs.hex_away_reason, _("I'm busy")); strcpy (prefs.hex_completion_suffix, ","); #ifdef WIN32 if (portable_mode () || SHGetKnownFolderPath (&FOLDERID_Downloads, 0, NULL, &roaming_path_wide) != S_OK) { g_snprintf (prefs.hex_dcc_dir, sizeof (prefs.hex_dcc_dir), "%s\\downloads", get_xdir ()); } else { roaming_path = g_utf16_to_utf8 (roaming_path_wide, -1, NULL, NULL, NULL); CoTaskMemFree (roaming_path_wide); g_strlcpy (prefs.hex_dcc_dir, roaming_path, sizeof (prefs.hex_dcc_dir)); g_free (roaming_path); } #else if (g_get_user_special_dir (G_USER_DIRECTORY_DOWNLOAD)) { safe_strcpy (prefs.hex_dcc_dir, g_get_user_special_dir (G_USER_DIRECTORY_DOWNLOAD), sizeof(prefs.hex_dcc_dir)); } else { char *download_dir = g_build_filename (g_get_home_dir (), "Downloads", NULL); safe_strcpy (prefs.hex_dcc_dir, download_dir, sizeof(prefs.hex_dcc_dir)); g_free (download_dir); } #endif strcpy (prefs.hex_gui_ulist_doubleclick, "QUERY %s"); strcpy (prefs.hex_input_command_char, "/"); strcpy (prefs.hex_irc_logmask, "%n"G_DIR_SEPARATOR_S"%c.log"); safe_strcpy (prefs.hex_irc_nick1, username, sizeof(prefs.hex_irc_nick1)); safe_strcpy (prefs.hex_irc_nick2, username, sizeof(prefs.hex_irc_nick2)); g_strlcat (prefs.hex_irc_nick2, "_", sizeof(prefs.hex_irc_nick2)); safe_strcpy (prefs.hex_irc_nick3, username, sizeof(prefs.hex_irc_nick3)); g_strlcat (prefs.hex_irc_nick3, "__", sizeof(prefs.hex_irc_nick3)); strcpy (prefs.hex_irc_no_hilight, "NickServ,ChanServ,InfoServ,N,Q"); safe_strcpy (prefs.hex_irc_part_reason, _("Leaving"), sizeof(prefs.hex_irc_part_reason)); safe_strcpy (prefs.hex_irc_quit_reason, prefs.hex_irc_part_reason, sizeof(prefs.hex_irc_quit_reason)); safe_strcpy (prefs.hex_irc_real_name, realname, sizeof(prefs.hex_irc_real_name)); safe_strcpy (prefs.hex_irc_user_name, username, sizeof(prefs.hex_irc_user_name)); strcpy (prefs.hex_stamp_log_format, "%b %d %H:%M:%S "); strcpy (prefs.hex_stamp_text_format, "[%H:%M:%S] "); font = fe_get_default_font (); if (font) { safe_strcpy (prefs.hex_text_font, font, sizeof(prefs.hex_text_font)); safe_strcpy (prefs.hex_text_font_main, font, sizeof(prefs.hex_text_font_main)); } else { strcpy (prefs.hex_text_font, DEF_FONT); strcpy (prefs.hex_text_font_main, DEF_FONT); } strcpy (prefs.hex_text_font_alternative, DEF_FONT_ALTER); langs = get_default_spell_languages (); safe_strcpy (prefs.hex_text_spell_langs, langs, sizeof(prefs.hex_text_spell_langs)); /* private variables */ prefs.local_ip = 0xffffffff; sp = strchr (prefs.hex_irc_user_name, ' '); if (sp) sp[0] = 0; /* spaces in username would break the login */ g_free ((char *)username); g_free ((char *)realname); g_free ((char *)langs); }
void load_default_config(void) { const char *username, *realname; char *sp; #ifdef WIN32 char out[256]; #endif username = g_get_user_name (); if (!username) username = "******"; /* We hid Real name from the Network List, so don't use the user's name unnoticeably */ /* realname = g_get_real_name (); if ((realname && realname[0] == 0) || !realname) realname = username; */ realname = "realname"; username = convert_with_fallback (username, "username"); realname = convert_with_fallback (realname, "realname"); memset (&prefs, 0, sizeof (struct hexchatprefs)); /* put in default values, anything left out is automatically zero */ /* BOOLEANS */ prefs.hex_away_show_once = 1; prefs.hex_away_track = 1; prefs.hex_dcc_auto_resume = 1; #ifndef WIN32 prefs.hex_dcc_fast_send = 1; #endif prefs.hex_gui_autoopen_chat = 1; prefs.hex_gui_autoopen_dialog = 1; prefs.hex_gui_autoopen_recv = 1; prefs.hex_gui_autoopen_send = 1; prefs.hex_gui_input_icon = 1; prefs.hex_gui_input_nick = 1; prefs.hex_gui_input_spell = 1; prefs.hex_gui_input_style = 1; prefs.hex_gui_join_dialog = 1; prefs.hex_gui_quit_dialog = 1; /* prefs.hex_gui_slist_skip = 1; */ prefs.hex_gui_tab_chans = 1; prefs.hex_gui_tab_dialogs = 1; prefs.hex_gui_tab_dots = 1; prefs.hex_gui_tab_icons = 1; prefs.hex_gui_tab_server = 1; prefs.hex_gui_tab_sort = 1; prefs.hex_gui_topicbar = 1; prefs.hex_gui_transparency = 255; prefs.hex_gui_tray = 1; prefs.hex_gui_tray_blink = 1; prefs.hex_gui_ulist_count = 1; prefs.hex_gui_ulist_icons = 1; prefs.hex_gui_ulist_resizable = 1; prefs.hex_gui_ulist_style = 1; prefs.hex_gui_win_save = 1; prefs.hex_identd = 1; prefs.hex_input_flash_hilight = 1; prefs.hex_input_flash_priv = 1; prefs.hex_input_tray_hilight = 1; prefs.hex_input_tray_priv = 1; prefs.hex_irc_who_join = 1; /* Can kick with inordinate amount of channels, required for some of our features though, TODO: add cap like away check? */ prefs.hex_irc_whois_front = 1; prefs.hex_net_auto_reconnect = 1; prefs.hex_net_throttle = 1; prefs.hex_stamp_log = 1; prefs.hex_stamp_text = 1; prefs.hex_text_autocopy_text = 1; prefs.hex_text_indent = 1; prefs.hex_text_replay = 1; prefs.hex_text_search_follow = 1; prefs.hex_text_show_marker = 1; prefs.hex_text_show_sep = 1; prefs.hex_text_stripcolor_replay = 1; prefs.hex_text_stripcolor_topic = 1; prefs.hex_text_thin_sep = 1; prefs.hex_text_wordwrap = 1; prefs.hex_url_grabber = 1; prefs.hex_irc_cap_server_time = 0; /* NUMBERS */ prefs.hex_away_size_max = 300; prefs.hex_away_timeout = 60; prefs.hex_completion_amount = 5; prefs.hex_dcc_auto_recv = 1; /* browse mode */ prefs.hex_dcc_blocksize = 1024; prefs.hex_dcc_permissions = 0600; prefs.hex_dcc_stall_timeout = 60; prefs.hex_dcc_timeout = 180; prefs.hex_flood_ctcp_num = 5; prefs.hex_flood_ctcp_time = 30; prefs.hex_flood_msg_num = 5; /*FIXME*/ prefs.hex_flood_msg_time = 30; prefs.hex_gui_chanlist_maxusers = 9999; prefs.hex_gui_chanlist_minusers = 5; prefs.hex_gui_dialog_height = 256; prefs.hex_gui_dialog_width = 500; prefs.hex_gui_lagometer = 1; prefs.hex_gui_lang = get_default_language(); prefs.hex_gui_pane_left_size = 128; /* with treeview icons we need a bit bigger space */ prefs.hex_gui_pane_right_size = 100; prefs.hex_gui_pane_right_size_min = 80; prefs.hex_gui_tab_layout = 2; /* 0=Tabs 1=Reserved 2=Tree */ prefs.hex_gui_tab_newtofront = 2; prefs.hex_gui_tab_pos = 1; prefs.hex_gui_tab_trunc = 20; prefs.hex_gui_throttlemeter = 1; prefs.hex_gui_ulist_pos = 3; prefs.hex_gui_win_height = 400; prefs.hex_gui_win_width = 640; prefs.hex_input_balloon_time = 20; prefs.hex_irc_ban_type = 1; prefs.hex_irc_join_delay = 5; prefs.hex_net_reconnect_delay = 10; prefs.hex_notify_timeout = 15; prefs.hex_text_max_indent = 256; prefs.hex_text_max_lines = 500; prefs.hex_url_grabber_limit = 100; /* 0 means unlimited */ /* STRINGS */ strcpy (prefs.hex_away_reason, _("I'm busy")); strcpy (prefs.hex_completion_suffix, ","); #ifdef WIN32 if (portable_mode () || !get_reg_str ("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", "Personal", out, sizeof (out))) { snprintf (prefs.hex_dcc_dir, sizeof (prefs.hex_dcc_dir), "%s\\downloads", get_xdir ()); } else { snprintf (prefs.hex_dcc_dir, sizeof (prefs.hex_dcc_dir), "%s\\Downloads", out); } #else if (g_get_user_special_dir (G_USER_DIRECTORY_DOWNLOAD)) { strcpy (prefs.hex_dcc_dir, g_get_user_special_dir (G_USER_DIRECTORY_DOWNLOAD)); } else { strcpy (prefs.hex_dcc_dir, g_build_filename (g_get_home_dir (), "Downloads", NULL)); } #endif strcpy (prefs.hex_dnsprogram, "host"); strcpy (prefs.hex_gui_ulist_doubleclick, "QUERY %s"); strcpy (prefs.hex_input_command_char, "/"); strcpy (prefs.hex_irc_logmask, g_build_filename ("%n", "%c.log", NULL)); strcpy (prefs.hex_irc_nick1, username); strcpy (prefs.hex_irc_nick2, username); strcat (prefs.hex_irc_nick2, "_"); strcpy (prefs.hex_irc_nick3, username); strcat (prefs.hex_irc_nick3, "__"); strcpy (prefs.hex_irc_no_hilight, "NickServ,ChanServ,InfoServ,N,Q"); strcpy (prefs.hex_irc_part_reason, _("Leaving")); strcpy (prefs.hex_irc_quit_reason, prefs.hex_irc_part_reason); strcpy (prefs.hex_irc_real_name, realname); strcpy (prefs.hex_irc_user_name, username); strcpy (prefs.hex_stamp_log_format, "%b %d %H:%M:%S "); strcpy (prefs.hex_stamp_text_format, "[%H:%M:%S] "); #ifdef WIN32 if (find_font ("Consolas")) { strcpy (prefs.hex_text_font, "Consolas 10"); strcpy (prefs.hex_text_font_main, "Consolas 10"); } else { strcpy (prefs.hex_text_font, DEF_FONT); strcpy (prefs.hex_text_font_main, DEF_FONT); } #else strcpy (prefs.hex_text_font, DEF_FONT); strcpy (prefs.hex_text_font_main, DEF_FONT); #endif strcpy (prefs.hex_text_font_alternative, DEF_FONT_ALTER); strcpy (prefs.hex_text_spell_langs, g_getenv ("LC_ALL") ? g_getenv ("LC_ALL") : "en_US"); /* private variables */ prefs.local_ip = 0xffffffff; sp = strchr (prefs.hex_irc_user_name, ' '); if (sp) sp[0] = 0; /* spaces in username would break the login */ g_free ((char *)username); g_free ((char *)realname); }
void show_symbol_table_plain( const goto_modelt &goto_model, std::ostream &out) { out << '\n' << "Symbols:" << '\n' << '\n'; // we want to sort alphabetically std::set<std::string> symbols; forall_symbols(it, goto_model.symbol_table.symbols) symbols.insert(id2string(it->first)); const namespacet ns(goto_model.symbol_table); for(const std::string &id : symbols) { const symbolt &symbol=ns.lookup(id); languaget *ptr; if(symbol.mode=="") ptr=get_default_language(); else { ptr=get_language_from_mode(symbol.mode); if(ptr==NULL) throw "symbol "+id2string(symbol.name)+" has unknown mode"; } std::unique_ptr<languaget> p(ptr); std::string type_str, value_str; if(symbol.type.is_not_nil()) p->from_type(symbol.type, type_str, ns); if(symbol.value.is_not_nil()) p->from_expr(symbol.value, value_str, ns); out << "Symbol......: " << symbol.name << '\n' << std::flush; out << "Pretty name.: " << symbol.pretty_name << '\n'; out << "Module......: " << symbol.module << '\n'; out << "Base name...: " << symbol.base_name << '\n'; out << "Mode........: " << symbol.mode << '\n'; out << "Type........: " << type_str << '\n'; out << "Value.......: " << value_str << '\n'; out << "Flags.......:"; if(symbol.is_lvalue) out << " lvalue"; if(symbol.is_static_lifetime) out << " static_lifetime"; if(symbol.is_thread_local) out << " thread_local"; if(symbol.is_file_local) out << " file_local"; if(symbol.is_type) out << " type"; if(symbol.is_extern) out << " extern"; if(symbol.is_input) out << " input"; if(symbol.is_output) out << " output"; if(symbol.is_macro) out << " macro"; if(symbol.is_parameter) out << " parameter"; if(symbol.is_auxiliary) out << " auxiliary"; if(symbol.is_weak) out << " weak"; if(symbol.is_property) out << " property"; if(symbol.is_state_var) out << " state_var"; if(symbol.is_exported) out << " exported"; if(symbol.is_volatile) out << " volatile"; out << '\n'; out << "Location....: " << symbol.location << '\n'; out << '\n' << std::flush; } }