#include <cmt_symbol.h>
Collaboration diagram for SymbolValueList:
Public Types | |
typedef cmt_vector< SymbolValueList > | SymbolValueListVector |
Public Member Functions | |
int | select_first (const cmt_string &tag_name="") const |
int | select_last () const |
void | show (const Symbol &symbol, const SymbolValue &value, bool &first_definition) const |
Public Attributes | |
CommandType | command_type |
Use * | use |
SymbolValue::SymbolValueVector | values |
bool | is_reflexive |
bool | discarded |
|
Definition at line 31 of file cmt_symbol.h. |
|
Definition at line 2655 of file cmt_symbol.cxx. References Tag::find(), Tag::get_priority(), Tag::is_selected(), cmt_vector< T >::size(), SymbolValue::tag, and values. Referenced by ActionBuilder::build(), MacroBuilder::build(), PathBuilder::build(), SetBuilder::build(), and PathBuilder::clean().
02656 { 02657 int priority = 0; 02658 int value_number; 02659 int selected = -1; 02660 02661 Tag* the_tag = 0; 02662 02663 if (tag_name != "") the_tag = Tag::find (tag_name); 02664 02665 for (value_number = 0; 02666 value_number < values.size (); 02667 value_number++) 02668 { 02669 const SymbolValue& value = values[value_number]; 02670 02671 const Tag* tag = value.tag; 02672 02673 if (the_tag == 0) 02674 { 02675 if (!tag->is_selected ()) continue; 02676 } 02677 else 02678 { 02679 if (tag != the_tag) continue; 02680 selected = value_number; 02681 } 02682 02683 // 02684 // Only the first value at a given priority is 02685 // selected (which implies the '>' test instead 02686 // of '>=') 02687 // 02688 02689 if (tag->get_priority () > priority) 02690 { 02691 priority = tag->get_priority (); 02692 selected = value_number; 02693 } 02694 } 02695 02696 return (selected); 02697 } |
|
Definition at line 2700 of file cmt_symbol.cxx. References Tag::get_priority(), Tag::is_selected(), cmt_vector< T >::size(), SymbolValue::tag, and values.
02701 { 02702 int priority = 0; 02703 int value_number; 02704 int selected = -1; 02705 02706 for (value_number = 0; 02707 value_number < values.size (); 02708 value_number++) 02709 { 02710 SymbolValue& value = values[value_number]; 02711 02712 const Tag* tag = value.tag; 02713 02714 if (tag->is_selected ()) 02715 { 02716 // 02717 // The last value at a given priority is 02718 // selected (which implies the '>=' test instead 02719 // of '>') 02720 // 02721 02722 if (tag->get_priority () >= priority) 02723 { 02724 priority = tag->get_priority (); 02725 selected = value_number; 02726 } 02727 } 02728 } 02729 02730 return (selected); 02731 } |
|
Definition at line 2734 of file cmt_symbol.cxx. References ActionType, command_type, CommandAction, CommandAlias, CommandMacro, CommandMacroAppend, CommandMacroPrepend, CommandMacroRemove, CommandMacroRemoveAll, CommandMacroRemoveAllRegexp, CommandMacroRemoveRegexp, CommandPath, CommandPathAppend, CommandPathPrepend, CommandPathRemove, CommandPathRemoveRegexp, CommandSet, CommandSetAppend, CommandSetPrepend, CommandSetRemove, CommandSetRemoveRegexp, discarded, Cmt::get_action(), Tag::get_default(), Tag::get_name(), Use::get_package_name(), Symbol::name, SymbolValue::tag, SymbolValue::text, use, and Use::version. Referenced by ActionBuilder::build(), MacroBuilder::build(), PathBuilder::build(), and SetBuilder::build().
02737 { 02738 cmt_string discarded_text; 02739 cmt_string define_text; 02740 ActionType action = Cmt::get_action (); 02741 02742 if (value.text == "") return; 02743 02744 if (discarded) discarded_text = " (discarded by override)"; 02745 else discarded_text = ""; 02746 02747 if (first_definition) define_text = "defines"; 02748 else define_text = "overrides"; 02749 02750 cout << "# Package "; 02751 if (use != 0) 02752 { 02753 cout << use->get_package_name () << " " << use->version; 02754 } 02755 02756 switch (command_type) 02757 { 02758 case CommandSet : 02759 cout << " " << define_text << " set " << symbol.name << " as "; 02760 first_definition = false; 02761 break; 02762 case CommandSetAppend : 02763 cout << " appends to set " << symbol.name << " : "; 02764 break; 02765 case CommandSetPrepend : 02766 cout << " prepends to set " << symbol.name << " : "; 02767 break; 02768 case CommandSetRemove : 02769 cout << " removes from set " << symbol.name << " : "; 02770 break; 02771 case CommandSetRemoveRegexp : 02772 cout << " removes RE from set " << symbol.name << " : "; 02773 break; 02774 case CommandAlias : 02775 cout << " " << define_text << " alias " << symbol.name << " as "; 02776 first_definition = false; 02777 break; 02778 case CommandPath : 02779 cout << " " << define_text << " path " << symbol.name << " as "; 02780 first_definition = false; 02781 break; 02782 case CommandPathAppend : 02783 cout << " appends to path " << symbol.name << " : "; 02784 break; 02785 case CommandPathPrepend : 02786 cout << " prepends to path " << symbol.name << " : "; 02787 break; 02788 case CommandPathRemove : 02789 cout << " removes from path " << symbol.name << " : "; 02790 break; 02791 case CommandPathRemoveRegexp : 02792 cout << " removes RE from path " << symbol.name << " : "; 02793 break; 02794 case CommandMacroPrepend : 02795 cout << " prepends to macro " << symbol.name << " : "; 02796 break; 02797 case CommandMacro : 02798 cout << " " << define_text << " macro " << symbol.name << " as "; 02799 break; 02800 case CommandMacroAppend : 02801 cout << " appends to macro " << symbol.name << " : "; 02802 break; 02803 case CommandMacroRemove : 02804 cout << " remove from macro " << symbol.name << " : "; 02805 break; 02806 case CommandMacroRemoveRegexp : 02807 cout << " remove RE from macro " << symbol.name << " : "; 02808 break; 02809 case CommandMacroRemoveAll : 02810 cout << " remove all from macro " << symbol.name << " : "; 02811 break; 02812 case CommandMacroRemoveAllRegexp : 02813 cout << " remove all RE from macro " << symbol.name << " : "; 02814 break; 02815 case CommandAction : 02816 cout << " " << define_text << " action " << symbol.name << " as "; 02817 first_definition = false; 02818 break; 02819 } 02820 02821 cout << "'" << value.text << "'"; 02822 02823 Tag* selected_tag = value.tag; 02824 02825 if ((selected_tag == 0) || 02826 (selected_tag == Tag::get_default ())) 02827 { 02828 cout << " for default tag"; 02829 } 02830 else 02831 { 02832 cout << " for tag '" << selected_tag->get_name () << "'"; 02833 } 02834 02835 cout << discarded_text << endl; 02836 } |
|
Definition at line 37 of file cmt_symbol.h. Referenced by Symbol::add_value_to_list(), ActionBuilder::build(), MacroBuilder::build(), PathBuilder::build(), SetBuilder::build(), PathBuilder::clean(), Symbol::is_selected(), and show(). |
|
Definition at line 41 of file cmt_symbol.h. Referenced by Symbol::add_value_to_list(), ActionBuilder::build(), ScriptBuilder::build(), MacroBuilder::build(), PathBuilder::build(), SetBuilder::build(), PathBuilder::clean(), Symbol::is_selected(), and show(). |
|
Definition at line 40 of file cmt_symbol.h. Referenced by Symbol::add_value_to_list(), ActionBuilder::build(), MacroBuilder::build(), PathBuilder::build(), and SetBuilder::build(). |
|
Definition at line 38 of file cmt_symbol.h. Referenced by Symbol::add_value_to_list(), ActionBuilder::build(), ScriptBuilder::build(), MacroBuilder::build(), PathBuilder::build(), SetBuilder::build(), PathBuilder::clean(), and show(). |
|
Definition at line 39 of file cmt_symbol.h. Referenced by Symbol::add_value_to_list(), ActionBuilder::build(), MacroBuilder::build(), PathBuilder::build(), SetBuilder::build(), Symbol::check_tag_used(), PathBuilder::clean(), Symbol::is_selected(), select_first(), and select_last(). |