#include <cmt_symbol.h>
Collaboration diagram for Symbol:
Public Types |
|
typedef cmt_vector< Symbol >? | SymbolVector |
typedef cmt_map< cmt_string, Symbol >? |
SymbolMap |
enum ? |
SymbolType { ??SymbolUndefined, SymbolAction, SymbolAlias, SymbolMacro, ??SymbolSetupScript, SymbolCleanupScript, SymbolSet, SymbolPath } |
Public Member Functions |
|
? | Symbol () |
? | ~Symbol () |
bool? | value_is_reflexive (const cmt_string &text) const |
? | Characterizes if a value is provided as the reference to itself. |
void? | add_value_to_list (CommandType command_type, Use *use, Tag *tag, const cmt_string &text) |
int? | print_clean (PrintMode mode) |
int? | print (PrintMode mode) |
cmt_string? | build_macro_value (bool display_it=false) const |
cmt_string? | clean_macro_value () const |
cmt_string? | resolve_macro_value (const cmt_string &tag_name="") |
? | Attempt to substitute into the symbol value all occurrences of. |
void? | show_macro (PrintMode mode) |
Static Public Member Functions |
|
Symbol *? | create (const cmt_string &name, CommandType command, Use *use=0) |
Symbol *? | find (const cmt_string &name) |
void? | action (const CmtSystem::cmt_string_vector &words, CommandType command_type, Use *use) |
int? | is_selected (const cmt_string &name) |
void? | all_set () |
? | Compute the current value of all environment variables and set them to the shell. |
void? | all_print (PrintMode mode) |
void? | all_print_clean (PrintMode mode) |
int? | symbol_number () |
SymbolVector &? | symbols () |
SymbolMap &? | symbol_map () |
Symbol &? | symbol (int index) |
void? | clear_all () |
void? | expand (cmt_string &text) |
bool? | check_tag_used (Tag *tag) |
Public Attributes |
|
ValueBuilder *? | builder |
cmt_string? | name |
ScopeType? | scope |
SymbolType? | type |
SymbolValueList::SymbolValueListVector? | value_lists |
int? | selected_value |
|
? |
Definition at line 64 of file cmt_symbol.h. Referenced by clear_all(), create(), find(), symbol_map(), and Database::symbol_map(). |
|
? |
Definition at line 63 of file cmt_symbol.h. Referenced by all_print(), all_print_clean(), all_set(), check_tag_used(), clear_all(), create(), symbol(), symbol_number(), symbols(), and Database::symbols(). |
|
? |
Definition at line 66 of file cmt_symbol.h. Referenced by create(). 00067 { 00068 SymbolUndefined, 00069 SymbolAction, 00070 SymbolAlias, 00071 SymbolMacro, 00072 SymbolSetupScript, 00073 SymbolCleanupScript, 00074 SymbolSet, 00075 SymbolPath 00076 } SymbolType; |
|
? |
Definition at line 1064 of file cmt_symbol.cxx. References name. 01065 { 01066 name = ""; 01067 } |
|
? |
Definition at line 1070 of file cmt_symbol.cxx. 01071 { 01072 } |
|
? |
Definition at line 867 of file cmt_symbol.cxx. References CmtSystem::absolute_path(), Tag::add(), add_value_to_list(), CmtSystem::cmt_string_vector, cmt_style, CommandCleanupScript, CommandSetupScript, Cmt::configure_cmt_path(), Cmt::configure_home(), Cmt::configure_site_tag(), Cmt::configure_tags(), Cmt::configure_user_context(), create(), expand(), CmtSystem::file_separator(), cmt_string::find(), Tag::find(), Cmt::get_current_access(), Use::get_current_scope(), Cmt::get_debug(), Use::get_package_name(), name, no_version_style, Use::prefix, PriorityUserTag, ScopePrivate, Use::set_native_version(), cmt_string::size(), cmt_vector< T >::size(), Use::style, symbol(), and UserMode. Referenced by KwdSetupScript::action(), KwdSetRemoveRegexp::action(), KwdSetRemove::action(), KwdSetPrepend::action(), KwdSetAppend::action(), KwdSet::action(), KwdPathRemoveRegexp::action(), KwdPathRemove::action(), KwdPathPrepend::action(), KwdPathAppend::action(), KwdPath::action(), KwdMacroRemoveAllRegexp::action(), KwdMacroRemoveAll::action(), KwdMacroRemoveRegexp::action(), KwdMacroRemove::action(), KwdMacroAppend::action(), KwdMacroPrepend::action(), KwdMacro::action(), KwdCleanupScript::action(), KwdAlias::action(), KwdAction::action(), create(), and show_macro(). 00870 { 00871 int number; 00872 Symbol* symbol; 00873 Tag* tag; 00874 00875 if (words.size () < 1) return; 00876 cmt_string name = words[1]; 00877 00878 if ((command_type == CommandSetupScript) || 00879 (command_type == CommandCleanupScript)) 00880 { 00881 cmt_string full_name; 00882 00883 Symbol::expand (name); 00884 00885 if (name != "") 00886 { 00887 if (CmtSystem::absolute_path (name)) 00888 { 00889 full_name = name; 00890 } 00891 else 00892 { 00893 #ifdef WIN32 00894 full_name = "%"; 00895 #else 00896 full_name = "${"; 00897 #endif 00898 full_name += use->prefix; 00899 full_name += "ROOT"; 00900 #ifdef WIN32 00901 full_name += "%"; 00902 #else 00903 full_name += "}"; 00904 #endif 00905 full_name += CmtSystem::file_separator (); 00906 if (use->style == cmt_style) full_name += "cmt"; 00907 else if (use->style == no_version_style) full_name += "cmt"; 00908 else full_name += "mgr"; 00909 full_name += CmtSystem::file_separator (); 00910 full_name += name; 00911 } 00912 00913 symbol = create (full_name, command_type, use); 00914 symbol->add_value_to_list (command_type, use, 00915 Tag::get_default (), full_name); 00916 } 00917 } 00918 else 00919 { 00920 if (words.size () < 2) return; 00921 const cmt_string& default_value = words[2]; 00922 00923 if (Cmt::get_debug ()) 00924 { 00925 cout << "Symbol::action> name:" << name 00926 << " access:" << Cmt::get_current_access () 00927 << " scope:" << use->get_current_scope () << endl; 00928 } 00929 00930 if (Cmt::get_current_access () == UserMode) 00931 { 00932 if (name == "constituents") return; 00933 if (name == "constituentscclean") return; 00934 00935 if (use->get_current_scope () == ScopePrivate) return; 00936 } 00937 00938 symbol = create (name, command_type, use); 00939 00940 /* 00941 Parse the default value. 00942 */ 00943 00944 symbol->add_value_to_list (command_type, use, 00945 Tag::get_default (), default_value); 00946 00947 /* 00948 Then parse all specific values 00949 00950 |
|
? |
Definition at line 1130 of file cmt_symbol.cxx. References cmt_vector< T >::add(), cmt_vector< T >::back(), cmt_vector< T >::clear(), SymbolValueList::command_type, CommandAction, CommandMacro, CommandPath, CommandSet, Use::discarded, SymbolValueList::discarded, Tag::get_default(), SymbolValueList::is_reflexive, SymbolValue::selected, cmt_vector< T >::size(), SymbolValue::tag, SymbolValue::text, SymbolValueList::use, value_is_reflexive(), value_lists, and SymbolValueList::values. Referenced by action(). 01134 { 01135 SymbolValueList* value_list = 0; 01136 bool is_reflexive = false; 01137 01138 // 01139 // First pickup the most recent value_list 01140 // 01141 if (value_lists.size () > 0) value_list = &(value_lists.back ()); 01142 01143 // 01144 // Create a new value list is we switch to another use or 01145 // if we switch to a new command_type (eg. switching from 01146 // macro to macro_append). 01147 // 01148 if ((value_list == 0) || 01149 (use != value_list->use) || 01150 (command_type != value_list->command_type) || 01151 (tag == Tag::get_default ())) 01152 { 01153 value_list = &(value_lists.add ()); 01154 value_list->use = use; 01155 value_list->command_type = command_type; 01156 value_list->values.clear (); 01157 value_list->discarded = false; 01158 value_list->is_reflexive = false; 01159 } 01160 01161 /* 01162 else 01163 { 01164 value_list = &(value_lists[value_lists.size () - 1]); 01165 } 01166 */ 01167 01168 is_reflexive = value_list->is_reflexive; 01169 01170 // 01171 // If the command_type is command_macro or command_set, 01172 // this is considered as a full re-set of this symbol 01173 // In this case, we have to discard all previous values 01174 // 01175 // However, we'd like to exclude from this logic the cases where 01176 // the value is **exactly* 01177 // 01178 // $( |
|
? |
Definition at line 1378 of file cmt_symbol.cxx. References Bat, print(), cmt_vector< T >::size(), symbol(), symbol_number(), SymbolAlias, SymbolPath, symbols(), SymbolSet, SymbolSetupScript, SymbolVector, and type. Referenced by Cmt::print(). 01379 { 01380 static SymbolVector& Symbols = symbols (); 01381 01382 int number; 01383 01384 if (Symbols.size () == 0) return; 01385 01386 for (number = 0; number < Symbol::symbol_number (); number++) 01387 { 01388 Symbol& symbol = Symbol::symbol (number); 01389 01390 if ((symbol.type == SymbolSet) || 01391 (symbol.type == SymbolAlias) || 01392 (symbol.type == SymbolSetupScript)) 01393 { 01394 if (symbol.print (mode)) 01395 { 01396 if (mode == Bat) 01397 { 01398 cout << endl; 01399 } 01400 else 01401 { 01402 //cout << "; "; 01403 cout << endl; 01404 } 01405 } 01406 } 01407 } 01408 01409 for (number = 0; number < Symbol::symbol_number (); number++) 01410 { 01411 Symbol& symbol = Symbol::symbol (number); 01412 01413 if ((symbol.type != SymbolPath)) continue; 01414 01415 if (symbol.print (mode)) 01416 { 01417 if (mode == Bat) 01418 { 01419 cout << endl; 01420 } 01421 else 01422 { 01423 //cout << "; "; 01424 cout << endl; 01425 } 01426 } 01427 } 01428 } |
|
? |
Definition at line 1431 of file cmt_symbol.cxx. References print_clean(), cmt_vector< T >::size(), symbol(), SymbolAlias, SymbolCleanupScript, SymbolPath, symbols(), SymbolSet, SymbolVector, and type. Referenced by Cmt::print_clean(). 01432 { 01433 static SymbolVector& Symbols = symbols (); 01434 01435 int number; 01436 01437 if (Symbols.size () == 0) return; 01438 01439 for (number = Symbols.size () - 1; number >= 0; number--) 01440 { 01441 Symbol& symbol = Symbols[number]; 01442 01443 if ((symbol.type == SymbolSet) || 01444 (symbol.type == SymbolAlias) || 01445 (symbol.type == SymbolCleanupScript)) 01446 { 01447 if (symbol.print_clean (mode)) 01448 { 01449 cout << endl; 01450 } 01451 } 01452 } 01453 01454 for (number = Symbols.size () - 1; number >= 0; number--) 01455 { 01456 Symbol& symbol = Symbols[number]; 01457 01458 if ((symbol.type != SymbolPath)) continue; 01459 01460 if (symbol.print_clean (mode)) 01461 { 01462 cout << endl; 01463 } 01464 } 01465 } |
|
? |
Compute the current value of all environment variables and set them to the shell. Definition at line 1235 of file cmt_symbol.cxx. References cmt_vector< T >::add(), build_macro_value(), cmt_vector< T >::clear(), CmtSystem::cmt_string_vector, Use::current(), Use::discarded, expand(), Cmt::get_all_sets_done(), CmtSystem::get_cmt_config(), Cmt::get_debug(), Use::get_full_path(), Use::get_ordered_uses(), Use::get_package_name(), Use::get_strategy(), name, Use::prefix, CmtSystem::putenv(), cmt_string::replace_all(), Cmt::set_all_sets_done(), cmt_vector< T >::size(), symbol(), symbol_number(), SymbolPath, symbols(), SymbolSet, SymbolVector, type, and Use::UsePtrVector. Referenced by Cmt::do_broadcast(), Cmt::do_do(), Cmt::do_run(), resolve_value(), resolve_value_for_macros(), and suppress_OS_delimiters(). 01236 { 01237 //cerr << "all_set" << endl; 01238 01239 if (Cmt::get_debug ()) 01240 { 01241 cout << "Symbol::all_set> done" << Cmt::get_all_sets_done () << endl; 01242 } 01243 01244 if (Cmt::get_all_sets_done ()) return; 01245 01246 Cmt::set_all_sets_done (); 01247 01248 static SymbolVector& Symbols = symbols (); 01249 Use::UsePtrVector& Uses = Use::get_ordered_uses (); 01250 01251 static CmtSystem::cmt_string_vector envs; 01252 01253 envs.clear (); 01254 01255 int number; 01256 01257 if (Symbols.size () == 0) 01258 { 01259 //running = false; 01260 return; 01261 } 01262 01263 cmt_string value; 01264 01265 for (number = 0; number < Symbol::symbol_number (); number++) 01266 { 01267 Symbol& symbol = Symbol::symbol (number); 01268 01269 if (symbol.type != SymbolSet) continue; 01270 01271 value = symbol.build_macro_value (); 01272 if (value != "") 01273 { 01274 cmt_string& temp = envs.add (); 01275 01276 temp = symbol.name; 01277 temp += '='; 01278 temp += value; 01279 } 01280 } 01281 01282 cmt_string cmtconfig = CmtSystem::get_cmt_config (); 01283 01284 if (Uses.size () > 0) 01285 { 01286 int number; 01287 01288 for (number = 0; number < Uses.size (); number++) 01289 { 01290 Use& use = *(Uses[number]); 01291 01292 if (use.discarded) continue; 01293 01294 if (use.get_package_name () == "cmt_standalone") continue; 01295 01296 if (use.get_strategy ("SetupConfig")) 01297 { 01298 cmt_string& temp = envs.add (); 01299 01300 temp = use.prefix; 01301 temp += "CONFIG="; 01302 temp += cmtconfig; 01303 } 01304 01305 if (use.get_strategy ("SetupRoot")) 01306 { 01307 cmt_string& temp = envs.add (); 01308 01309 temp = use.prefix; 01310 temp += "ROOT="; 01311 temp += use.get_full_path (); 01312 } 01313 } 01314 } 01315 01316 { 01317 Use& use = Use::current (); 01318 01319 if (use.get_package_name () != "cmt_standalone") 01320 { 01321 if (use.get_strategy ("SetupConfig")) 01322 { 01323 cmt_string& temp = envs.add (); 01324 01325 temp = use.prefix; 01326 temp += "CONFIG="; 01327 temp += cmtconfig; 01328 } 01329 01330 if (use.get_strategy ("SetupRoot")) 01331 { 01332 cmt_string& temp = envs.add (); 01333 01334 temp = use.prefix; 01335 temp += "ROOT="; 01336 temp += use.get_full_path (); 01337 } 01338 } 01339 } 01340 01341 for (number = 0; number < Symbol::symbol_number (); number++) 01342 { 01343 Symbol& symbol = Symbol::symbol (number); 01344 01345 if ((symbol.type != SymbolPath)) continue; 01346 01347 value = symbol.build_macro_value (); 01348 if (value != "") 01349 { 01350 cmt_string& temp = envs.add (); 01351 01352 temp = symbol.name; 01353 temp += '='; 01354 temp += value; 01355 } 01356 } 01357 01358 for (number = 0; number < envs.size (); number++) 01359 { 01360 cmt_string& env = envs[number]; 01361 Symbol::expand (env); 01362 01363 #ifdef WIN32 01364 env.replace_all ("/", "\\"); 01365 #endif 01366 01367 if (Cmt::get_debug ()) 01368 { 01369 cout << "Symbol::all_set> " << env << endl; 01370 } 01371 CmtSystem::putenv (env); 01372 } 01373 01374 //running = false; 01375 } |
|
? |
Definition at line 1651 of file cmt_symbol.cxx. References ValueBuilder::build(), ValueBuilder::build_and_display(), and builder. Referenced by all_set(), Use::build_library_links(), CvsImplementation::clear(), CmtInstallAreaMgr::config(), Cmt::configure_cmt_path(), Cmt::configure_home(), Cmt::configure_site_tag(), Cmt::configure_tags(), Cmt::configure_user_context(), Cmt::do_build_library_links(), Cmt::do_do(), Cmt::do_remove_library_links(), ApplicationAnalyzer::end(), LibraryAnalyzer::end(), CmtLock::lock(), Constituent::parse_all(), print(), Cmt::set_standard_macros(), CmtInstallAreaMgr::setup_current_installarea(), show_macro(), and CmtLock::unlock(). 01652 { 01653 cmt_string temp; 01654 01655 if (display_it) 01656 { 01657 temp = builder->build_and_display (*this); 01658 } 01659 else 01660 { 01661 temp = builder->build (*this); 01662 } 01663 01664 return (temp); 01665 } |
|
? |
Definition at line 2918 of file cmt_symbol.cxx. References cmt_vector< T >::size(), symbol(), symbol_number(), symbols(), SymbolVector, SymbolValue::tag, Tag::use_operand(), value_lists, and SymbolValueList::values. Referenced by Cmt::do_check_configuration(). 02919 { 02920 if (tag == 0) return (false); 02921 02922 static SymbolVector& Symbols = symbols (); 02923 02924 if (Symbols.size () == 0) 02925 { 02926 return (false); 02927 } 02928 02929 for (int number = 0; number < Symbol::symbol_number (); number++) 02930 { 02931 Symbol& symbol = Symbol::symbol (number); 02932 02933 for (int i = 0; i < symbol.value_lists.size (); i++) 02934 { 02935 const SymbolValueList& value_list = symbol.value_lists[i]; 02936 02937 for (int j = 0; j < value_list.values.size (); j++) 02938 { 02939 const SymbolValue& value = value_list.values[j]; 02940 Tag* t = value.tag; 02941 02942 if (t != 0) 02943 { 02944 if (t->use_operand (tag)) return (true); 02945 } 02946 } 02947 } 02948 } 02949 02950 return (false); 02951 } |
|
? |
Definition at line 1668 of file cmt_symbol.cxx. References builder, and ValueBuilder::clean(). Referenced by print_clean(). 01669 { 01670 cmt_string temp; 01671 01672 temp = builder->clean (*this); 01673 01674 return (temp); 01675 } |
|
? |
Definition at line 1802 of file cmt_symbol.cxx. References cmt_vector< T >::clear(), cmt_map< K, T >::clear(), symbol_map(), SymbolMap, symbols(), and SymbolVector. Referenced by Database::clear(). 01803 { 01804 static SymbolVector& Symbols = symbols (); 01805 static SymbolMap& SymbolMap = symbol_map (); 01806 01807 SymbolMap.clear (); 01808 Symbols.clear (); 01809 } |
|
? |
Definition at line 652 of file cmt_symbol.cxx. References action(), action_build_tag_makefile, ActionType, cmt_map< K, T >::add(), cmt_vector< T >::add(), builder, cmt_vector< T >::clear(), CommandAction, CommandAlias, CommandCleanupScript, CommandMacro, CommandMacroAppend, CommandMacroPrepend, CommandMacroRemove, CommandMacroRemoveAll, CommandMacroRemoveAllRegexp, CommandMacroRemoveRegexp, CommandPath, CommandPathAppend, CommandPathPrepend, CommandPathRemove, CommandPathRemoveRegexp, CommandSet, CommandSetAppend, CommandSetPrepend, CommandSetRemove, CommandSetRemoveRegexp, CommandSetupScript, find(), Cmt::get_action(), Use::get_current_scope(), Use::get_package_name(), Cmt::get_quiet(), name, scope, selected_value, symbol(), symbol_map(), SymbolAction, SymbolAlias, SymbolCleanupScript, SymbolMacro, SymbolMap, SymbolPath, symbols(), SymbolSet, SymbolSetupScript, SymbolType, SymbolUndefined, SymbolVector, type, and value_lists. Referenced by action(). 00655 { 00656 static SetBuilder Set; 00657 static PathBuilder Path; 00658 static MacroBuilder Macro; 00659 static ScriptBuilder Script; 00660 static ActionBuilder Action; 00661 00662 static SymbolVector& Symbols = symbols (); 00663 static SymbolMap& SymbolMap = symbol_map (); 00664 00665 SymbolType type = SymbolUndefined; 00666 00667 switch (command) 00668 { 00669 case CommandSet: 00670 case CommandSetAppend: 00671 case CommandSetPrepend: 00672 case CommandSetRemove: 00673 case CommandSetRemoveRegexp: 00674 type = SymbolSet; 00675 break; 00676 case CommandPath: 00677 case CommandPathAppend: 00678 case CommandPathPrepend: 00679 case CommandPathRemove: 00680 case CommandPathRemoveRegexp: 00681 type = SymbolPath; 00682 break; 00683 case CommandMacro: 00684 case CommandMacroAppend: 00685 case CommandMacroPrepend: 00686 case CommandMacroRemove: 00687 case CommandMacroRemoveRegexp: 00688 case CommandMacroRemoveAll: 00689 case CommandMacroRemoveAllRegexp: 00690 type = SymbolMacro; 00691 break; 00692 case CommandAction: 00693 type = SymbolAction; 00694 break; 00695 case CommandAlias: 00696 type = SymbolAlias; 00697 break; 00698 case CommandSetupScript: 00699 type = SymbolSetupScript; 00700 break; 00701 case CommandCleanupScript: 00702 type = SymbolCleanupScript; 00703 break; 00704 } 00705 00706 { 00707 Symbol* symbol; 00708 00709 symbol = find (name); 00710 if (symbol != 0) 00711 { 00712 if (symbol->type != type) 00713 { 00714 ActionType action = Cmt::get_action (); 00715 00716 if ((!Cmt::get_quiet ()) && 00717 (action != action_build_tag_makefile)) 00718 { 00719 cmt_string s1; 00720 cmt_string s2; 00721 00722 switch (symbol->type) 00723 { 00724 case SymbolSet: 00725 s1 = "set"; 00726 break; 00727 case SymbolPath: 00728 s1 = "path"; 00729 break; 00730 case SymbolMacro: 00731 s1 = "macro"; 00732 break; 00733 case SymbolSetupScript: 00734 s1 = "setup_script"; 00735 break; 00736 case SymbolCleanupScript: 00737 s1 = "cleanup_script"; 00738 break; 00739 case SymbolAction: 00740 s1 = "action"; 00741 break; 00742 case SymbolAlias: 00743 s1 = "alias"; 00744 break; 00745 } 00746 00747 switch (type) 00748 { 00749 case SymbolSet: 00750 s2 = "set"; 00751 break; 00752 case SymbolPath: 00753 s2 = "path"; 00754 break; 00755 case SymbolMacro: 00756 s2 = "macro"; 00757 break; 00758 case SymbolSetupScript: 00759 s2 = "setup_script"; 00760 break; 00761 case SymbolCleanupScript: 00762 s2 = "cleanup_script"; 00763 break; 00764 case SymbolAction: 00765 s2 = "action"; 00766 break; 00767 case SymbolAlias: 00768 s2 = "alias"; 00769 break; 00770 } 00771 00772 cerr << "#CMT> Warning: Symbol " << name 00773 << " inconsistently redeclared from " << s1 << " to " << s2; 00774 if (use != 0) cerr << " in package " << use->get_package_name (); 00775 cerr << endl; 00776 } 00777 } 00778 00779 return (symbol); 00780 } 00781 } 00782 00783 Symbol& symbol = Symbols.add (); 00784 SymbolMap.add (name, symbol); 00785 00786 symbol.name = name; 00787 symbol.scope = use->get_current_scope (); 00788 symbol.type = type; 00789 00790 symbol.value_lists.clear (); 00791 00792 switch (type) 00793 { 00794 case SymbolSet: 00795 symbol.builder = &Set; 00796 break; 00797 case SymbolPath: 00798 symbol.builder = &Path; 00799 break; 00800 case SymbolAlias: 00801 symbol.builder = &Set; 00802 break; 00803 case SymbolMacro: 00804 symbol.builder = &Macro; 00805 break; 00806 case SymbolSetupScript: 00807 case SymbolCleanupScript: 00808 symbol.builder = &Script; 00809 break; 00810 case SymbolAction: 00811 symbol.builder = &Action; 00812 break; 00813 } 00814 00815 symbol.selected_value = -1; 00816 00817 return (&symbol); 00818 } |
|
? |
Definition at line 1812 of file cmt_symbol.cxx. References cmt_regexp::match(), and resolve_value(). Referenced by Use::action(), action(), ApplyPattern::action(), Fragment::action(), Tag::action_apply(), all_set(), DependencyGenerator::build(), MakeSetupGenerator::build(), Use::build_library_links(), CvsImplementation::clear(), CmtInstallAreaMgr::config(), Cmt::configure_cmt_path(), Cmt::configure_home(), Cmt::configure_site_tag(), Cmt::configure_tags(), Cmt::configure_user_context(), CmtModel::display(), Cmt::do_build_library_links(), Cmt::do_do(), Cmt::do_filter(), Cmt::do_remove_library_links(), install_library(), Include::parse(), Constituent::parse(), CmtGenerator::prepare_use_context(), Use::set(), CmtGenerator::set_full_name(), and show_macro(). 01813 { 01814 static cmt_regexp reg ("[$%`]"); 01815 01816 if (!reg.match (text)) return; 01817 01818 resolve_value (text); 01819 } |
|
? |
Definition at line 821 of file cmt_symbol.cxx. References cmt_map< K, T >::find(), symbol_map(), and SymbolMap. Referenced by DepsBuilder::add_includes(), Use::build_library_links(), CvsImplementation::clear(), CmtInstallAreaMgr::config(), Cmt::configure_cmt_path(), Cmt::configure_home(), Cmt::configure_site_tag(), Cmt::configure_tags(), Cmt::configure_user_context(), create(), Cmt::do_build_library_links(), Cmt::do_do(), Cmt::do_remove_library_links(), Cmt::do_show_action(), Cmt::do_show_macro(), ApplicationAnalyzer::end(), LibraryAnalyzer::end(), is_selected(), CmtLock::lock(), resolve_value(), resolve_value_for_macros(), DepsBuilder::run(), Cmt::set_standard_macros(), CmtInstallAreaMgr::setup_current_installarea(), Use::show_sub_uses(), CmtLock::unlock(), and Fragment::wincopy(). 00822 { 00823 static SymbolMap& SymbolMap = symbol_map (); 00824 00825 Symbol* result = 0; 00826 00827 result = SymbolMap.find (name); 00828 00829 return (result); 00830 } |
|
? |
Definition at line 1013 of file cmt_symbol.cxx. References SymbolValueList::command_type, CommandAction, CommandAlias, CommandMacro, CommandSet, CommandSetAppend, CommandSetPrepend, CommandSetRemove, CommandSetRemoveRegexp, SymbolValueList::discarded, find(), Tag::get_default(), Tag::is_selected(), cmt_vector< T >::size(), symbol(), SymbolValue::tag, value_lists, and SymbolValueList::values. Referenced by StandardMacroBuilder::fill_for_branches(), StandardMacroBuilder::fill_for_constituent_macros(), StandardMacroBuilder::fill_for_fincludes(), StandardMacroBuilder::fill_for_includes(), StandardMacroBuilder::fill_for_package(), StandardMacroBuilder::fill_for_tag(), StandardMacroBuilder::fill_for_use_cflags(), StandardMacroBuilder::fill_for_use_cppflags(), StandardMacroBuilder::fill_for_use_fflags(), StandardMacroBuilder::fill_for_use_fincludes(), StandardMacroBuilder::fill_for_use_includes(), StandardMacroBuilder::fill_for_use_libraries(), StandardMacroBuilder::fill_for_use_linkopts(), StandardMacroBuilder::fill_for_use_pp_cflags(), StandardMacroBuilder::fill_for_use_pp_cppflags(), StandardMacroBuilder::fill_for_use_pp_fflags(), StandardMacroBuilder::fill_for_use_requirements(), StandardMacroBuilder::fill_for_use_stamps(), Cmt::set_standard_macros(), and CmtInstallAreaMgr::setup_current_installarea(). 01014 { 01015 Symbol* symbol; 01016 int number; 01017 int value_number; 01018 01019 symbol = find (name); 01020 if (symbol == 0) return (0); 01021 01022 if (symbol->value_lists.size () == 0) return (0); 01023 01024 for (number = 0; 01025 number < symbol->value_lists.size (); 01026 number++) 01027 { 01028 const SymbolValueList& value_list = symbol->value_lists[number]; 01029 01030 if (value_list.discarded) continue; 01031 01032 if ((value_list.command_type == CommandMacro) || 01033 (value_list.command_type == CommandSet) || 01034 (value_list.command_type == CommandSetAppend) || 01035 (value_list.command_type == CommandSetPrepend) || 01036 (value_list.command_type == CommandSetRemove) || 01037 (value_list.command_type == CommandSetRemoveRegexp) || 01038 (value_list.command_type == CommandAlias) || 01039 (value_list.command_type == CommandAction)) 01040 { 01041 for (value_number = 0; 01042 value_number < value_list.values.size (); 01043 value_number++) 01044 { 01045 Tag* tag; 01046 01047 SymbolValue& value = value_list.values[value_number]; 01048 01049 tag = value.tag; 01050 if ((tag == 0) || 01051 (tag == Tag::get_default ()) || 01052 (tag->is_selected () != 0)) 01053 { 01054 return (1); 01055 } 01056 } 01057 } 01058 } 01059 01060 return (0); 01061 } |
|
? |
Definition at line 1559 of file cmt_symbol.cxx. References Bat, build_macro_value(), Csh, name, Sh, cmt_string::size(), SymbolAlias, SymbolPath, SymbolSet, SymbolSetupScript, and type. Referenced by all_print(). 01560 { 01561 int result = 0; 01562 cmt_string temp; 01563 01564 temp = build_macro_value (); 01565 01566 bool empty = (temp.size () == 0) ? true : false; 01567 01568 switch (type) 01569 { 01570 case SymbolSet : 01571 case SymbolPath : 01572 switch (mode) 01573 { 01574 case Csh : 01575 if (empty) cout << "unsetenv " << name; 01576 else cout << "setenv " << name << " \"" << temp << "\""; 01577 01578 result = 1; 01579 break; 01580 case Sh : 01581 if (empty) cout << "unset " << name; 01582 else cout << name << "=\"" << temp << "\"; export " << name; 01583 01584 result = 1; 01585 break; 01586 case Bat : 01587 temp.replace_all ("/", "\\"); 01588 cout << "set " << name << "=" << temp; 01589 result = 1; 01590 break; 01591 } 01592 break; 01593 case SymbolAlias : 01594 switch (mode) 01595 { 01596 case Csh : 01597 cout << "alias " << name << 01598 " \"" << temp << "\""; 01599 result = 1; 01600 break; 01601 case Sh : 01602 cout << "alias " << name << 01603 "=\"" << temp << "\""; 01604 result = 1; 01605 break; 01606 case Bat : 01607 cout << "set " << name << 01608 "=" << temp; 01609 result = 1; 01610 break; 01611 } 01612 break; 01613 default : 01614 break; 01615 } 01616 01617 if (temp != "") 01618 { 01619 switch (type) 01620 { 01621 case SymbolSetupScript : 01622 switch (mode) 01623 { 01624 case Csh : 01625 cout << "if ( -f " << name << ".csh ) then" << endl; 01626 cout << " source " << name << ".csh" << endl; 01627 cout << "endif" << endl; 01628 result = 1; 01629 break; 01630 case Sh : 01631 cout << "if test -f " << name << ".sh; then" << endl; 01632 cout << " . " << name << ".sh" << endl; 01633 cout << "fi" << endl; 01634 result = 1; 01635 break; 01636 case Bat : 01637 cout << "call " << name; 01638 result = 1; 01639 break; 01640 } 01641 break; 01642 default: 01643 break; 01644 } 01645 } 01646 01647 return (result); 01648 } |
|
? |
Definition at line 1468 of file cmt_symbol.cxx. References Bat, clean_macro_value(), Csh, name, Sh, SymbolAlias, SymbolCleanupScript, SymbolPath, SymbolSet, and type. Referenced by all_print_clean(). 01469 { 01470 int result = 0; 01471 static cmt_string temp; 01472 01473 if (name == "CMTCONFIG") return (0); 01474 01475 switch (type) 01476 { 01477 case SymbolSet : 01478 switch (mode) 01479 { 01480 case Csh : 01481 cout << "unsetenv " << name; 01482 result = 1; 01483 break; 01484 case Sh : 01485 cout << "unset " << name; 01486 result = 1; 01487 break; 01488 case Bat : 01489 cout << "set " << name << "="; 01490 result = 1; 01491 break; 01492 } 01493 break; 01494 case SymbolAlias : 01495 switch (mode) 01496 { 01497 case Csh : 01498 cout << "unalias " << name; 01499 result = 1; 01500 break; 01501 case Sh : 01502 cout << "unset " << name; 01503 result = 1; 01504 break; 01505 } 01506 break; 01507 case SymbolPath : 01508 temp = clean_macro_value (); 01509 switch (mode) 01510 { 01511 case Csh : 01512 if (temp == "") 01513 { 01514 cout << "unsetenv " << name; 01515 } 01516 else 01517 { 01518 cout << "setenv " << name << " " << temp; 01519 } 01520 result = 1; 01521 break; 01522 case Sh : 01523 cout << name << "=" << temp << "; export " << name; 01524 result = 1; 01525 break; 01526 case Bat : 01527 cout << "set " << name << "=" << temp; 01528 result = 1; 01529 break; 01530 } 01531 break; 01532 case SymbolCleanupScript : 01533 switch (mode) 01534 { 01535 case Csh : 01536 cout << "if ( -f " << name << ".csh ) then" << endl; 01537 cout << " source " << name << ".csh" << endl; 01538 cout << "endif" << endl; 01539 result = 1; 01540 break; 01541 case Sh : 01542 cout << "if test -f " << name << ".sh; then" << endl; 01543 cout << " . " << name << ".sh" << endl; 01544 cout << "fi" << endl; 01545 result = 1; 01546 break; 01547 case Bat : 01548 cout << "call " << name; 01549 result = 1; 01550 break; 01551 } 01552 break; 01553 } 01554 01555 return (result); 01556 } |
|
? |
Attempt to substitute into the symbol value all occurrences of. ${xxx} `xxx` xxx% [on Windows only] by the appropriate value: for `xxx` : xxx is considered as a shell command. Value is the result of its execution for other patterns: if xxx is a symbol name, its value is substituted to the pattern otherwise, xxx is tried as an environment variable ===> In all cases, the pattern is filtered away. Definition at line 1701 of file cmt_symbol.cxx. References ValueBuilder::build(), builder, and resolve_value(). Referenced by DepsBuilder::add_includes(), resolve_value(), resolve_value_for_macros(), DepsBuilder::run(), Use::show_sub_uses(), and Fragment::wincopy(). 01702 { 01703 cmt_string temp = builder->build (*this, tag_name); 01704 01705 resolve_value (temp); 01706 01707 return (temp); 01708 } |
|
? |
Definition at line 1711 of file cmt_symbol.cxx. References action(), action_build_tag_makefile, action_load, action_show_action, action_show_action_value, action_show_actions, action_show_macro, action_show_macro_value, action_show_macros, action_show_set, action_show_set_value, action_show_sets, ActionType, build_macro_value(), expand(), Cmt::get_action(), Cmt::get_debug(), Cmt::get_quiet(), Make, name, cmt_string::size(), and suppress_OS_delimiters(). Referenced by Cmt::do_show_action(), Cmt::do_show_macro(), and Cmt::print_macros(). 01712 { 01713 if (Cmt::get_debug ()) 01714 { 01715 cout << "Symbol::show_macro> " << name << endl; 01716 } 01717 01718 ActionType action = Cmt::get_action (); 01719 01720 cmt_string value = build_macro_value (true); 01721 01722 if ((!Cmt::get_quiet ()) && 01723 (action != action_build_tag_makefile) && 01724 (action != action_show_macros) && 01725 (action != action_show_actions) && 01726 (action != action_show_sets)) 01727 { 01728 cout << "#" << endl; 01729 cout << "# Selection : " << endl; 01730 } 01731 01732 if (value.size () > 0) 01733 { 01734 if ((action == action_show_macro) || 01735 (action == action_show_macros) || 01736 (action == action_show_sets) || 01737 (action == action_show_set) || 01738 (action == action_show_actions) || 01739 (action == action_show_action) || 01740 (action == action_build_tag_makefile) || 01741 (action == action_load) || 01742 (!Cmt::get_quiet ())) 01743 { 01744 if (mode == Make) 01745 { 01746 cout << name << "="; 01747 } 01748 else 01749 { 01750 cout << name << "='"; 01751 } 01752 } 01753 01754 if ((action == action_show_macro_value) || 01755 (action == action_show_set_value) || 01756 (action == action_show_action_value)) 01757 { 01758 expand (value); 01759 } 01760 else if (action == action_build_tag_makefile) 01761 { 01762 /* 01763 Unfortunately, the %xxx% pattern has to be kept on Unix. Therefore 01764 we cannot force all patterns to become $(xxx) 01765 01766 This was useful on Windows so as to only keep $(xxx) 01767 */ 01768 #ifdef WIN32 01769 suppress_OS_delimiters (value); 01770 #endif 01771 } 01772 01773 cout << value; 01774 01775 if ((action == action_show_macro) || 01776 (action == action_show_macros) || 01777 (action == action_show_sets) || 01778 (action == action_show_set) || 01779 (action == action_show_actions) || 01780 (action == action_show_action) || 01781 (action == action_build_tag_makefile) || 01782 (action == action_load) || 01783 (!Cmt::get_quiet ())) 01784 { 01785 if (mode != Make) 01786 { 01787 cout << "'"; 01788 } 01789 #ifdef WIN32 01790 else 01791 { 01792 cout << " "; 01793 } 01794 #endif 01795 } 01796 01797 cout << endl; 01798 } 01799 } |
|
? |
Definition at line 859 of file cmt_symbol.cxx. References symbols(), and SymbolVector. Referenced by action(), all_print(), all_print_clean(), all_set(), check_tag_used(), create(), is_selected(), Constituent::parse_all(), Cmt::print_macros(), and Cmt::print_symbol_names(). 00860 { 00861 static SymbolVector& Symbols = symbols (); 00862 00863 return (Symbols[index]); 00864 } |
|
? |
Definition at line 850 of file cmt_symbol.cxx. References Database::instance(), Database::symbol_map(), and SymbolMap. Referenced by clear_all(), create(), and find(). 00851 { 00852 static Database& db = Database::instance (); 00853 static SymbolMap& SymbolMap = db.symbol_map (); 00854 00855 return (SymbolMap); 00856 } |
|
? |
Definition at line 833 of file cmt_symbol.cxx. References cmt_vector< T >::size(), symbols(), and SymbolVector. Referenced by all_print(), all_set(), check_tag_used(), Constituent::parse_all(), Cmt::print_macros(), and Cmt::print_symbol_names(). 00834 { 00835 static SymbolVector& Symbols = symbols (); 00836 00837 return (Symbols.size ()); 00838 } |
|
? |
Definition at line 841 of file cmt_symbol.cxx. References Database::instance(), Database::symbols(), and SymbolVector. Referenced by all_print(), all_print_clean(), all_set(), check_tag_used(), clear_all(), create(), symbol(), and symbol_number(). 00842 { 00843 static Database& db = Database::instance (); 00844 static SymbolVector& Symbols = db.symbols (); 00845 00846 return (Symbols); 00847 } |
|
? |
Characterizes if a value is provided as the reference to itself. Definition at line 1077 of file cmt_symbol.cxx. References name, and cmt_string::size(). Referenced by add_value_to_list(), ActionBuilder::build(), MacroBuilder::build(), PathBuilder::build(), and SetBuilder::build(). 01078 { 01079 bool result = false; 01080 int text_length = text.size (); 01081 01082 if (text_length == (name.size () + 3)) 01083 { 01084 static cmt_string temp; 01085 01086 if (text[0] == '$') 01087 { 01088 if (text[1] == '(') 01089 { 01090 temp = "$("; 01091 temp += name; 01092 temp += ")"; 01093 01094 if (text == temp) 01095 { 01096 result = true; 01097 } 01098 } 01099 else if (text[1] == '{') 01100 { 01101 temp = "${"; 01102 temp += name; 01103 temp += "}"; 01104 01105 if (text == temp) 01106 { 01107 result = true; 01108 } 01109 } 01110 } 01111 } 01112 else if (text_length == (name.size () + 2)) 01113 { 01114 static cmt_string temp; 01115 01116 temp = "%"; 01117 temp += name; 01118 temp += "%"; 01119 01120 if (text == temp) 01121 { 01122 result = true; 01123 } 01124 } 01125 01126 return (result); 01127 } |
|
? |
Definition at line 117 of file cmt_symbol.h. Referenced by build_macro_value(), clean_macro_value(), create(), and resolve_macro_value(). |
|
? |
Definition at line 119 of file cmt_symbol.h. Referenced by action(), all_set(), ActionBuilder::build(), ScriptBuilder::build(), MacroBuilder::build(), PathBuilder::build(), SetBuilder::build(), PathBuilder::clean(), create(), Constituent::parse_all(), print(), print_clean(), Cmt::print_macros(), Cmt::print_symbol_names(), SymbolValueList::show(), show_macro(), Symbol(), and value_is_reflexive(). |
|
? |
Definition at line 120 of file cmt_symbol.h. Referenced by create(). |
|
? |
Definition at line 125 of file cmt_symbol.h. Referenced by create(). |
|
? |
Definition at line 121 of file cmt_symbol.h. Referenced by all_print(), all_print_clean(), all_set(), create(), Cmt::do_show_action(), Cmt::do_show_macro(), Constituent::parse_all(), print(), print_clean(), Cmt::print_macros(), Cmt::print_symbol_names(), and resolve_value_for_macros(). |
|
? |
Definition at line 123 of file cmt_symbol.h. Referenced by add_value_to_list(), ActionBuilder::build(), ScriptBuilder::build(), MacroBuilder::build(), PathBuilder::build(), SetBuilder::build(), check_tag_used(), PathBuilder::clean(), create(), Cmt::do_show_action(), Cmt::do_show_macro(), is_selected(), Constituent::parse_all(), and Cmt::print_macros(). |