7 #ifndef __IPREGOPTIONS_HPP__
8 #define __IPREGOPTIONS_HPP__
41 const std::string& value,
42 const std::string& description
45 description_(description)
65 const std::string& name,
66 const std::string& short_description,
67 const std::string& long_description,
68 const std::string& registering_category,
72 short_description_(short_description),
73 long_description_(long_description),
74 registering_category_(registering_category),
86 short_description_(copy.short_description_),
87 long_description_(copy.long_description_),
88 registering_category_(copy.registering_category_),
90 has_lower_(copy.has_lower_),
92 has_upper_(copy.has_upper_),
94 valid_strings_(copy.valid_strings_),
95 counter_(copy.counter_)
109 virtual const std::string&
Name()
const
115 const std::string& name
123 return short_description_;
129 return long_description_;
134 const std::string& short_description
137 short_description_ = short_description;
142 const std::string& long_description
145 long_description_ = long_description;
151 return registering_category_;
156 const std::string& registering_category
159 registering_category_ = registering_category;
205 return lower_strict_;
229 lower_strict_ = strict, has_lower_ =
true;
239 return (
Index) lower_;
272 return upper_strict_;
296 upper_strict_ = strict;
307 return (
Index) upper_;
328 const std::string value,
329 const std::string description)
332 valid_strings_.push_back(
string_entry(value, description));
342 return default_number_;
350 const Number& default_value
354 default_number_ = default_value;
364 return (
Index) default_number_;
372 const Index& default_value
376 default_number_ = (
Number) default_value;
386 return default_string_;
398 return MapStringSettingToEnum(default_string_);
406 const std::string& default_value
410 default_string_ = default_value;
420 return valid_strings_;
432 if( has_lower_ && ((lower_strict_ ==
true && value <= lower_) || (lower_strict_ ==
false && value < lower_)) )
436 if( has_upper_ && ((upper_strict_ ==
true && value >= upper_) || (upper_strict_ ==
false && value > upper_)) )
452 if( has_lower_ && value < lower_ )
456 if( has_upper_ && value > upper_ )
467 virtual bool IsValidStringSetting(
468 const std::string& value
474 virtual std::string MapStringSetting(
475 const std::string& value
483 virtual Index MapStringSettingToEnum(
484 const std::string& value
489 virtual void OutputDescription(
494 virtual void OutputShortDescription(
499 virtual void OutputLatexDescription(
504 virtual void OutputDoxygenDescription(
523 void MakeValidLatexString(
528 std::string MakeValidLatexNumber(
532 std::string MakeValidHTMLNumber(
537 bool string_equal_insensitive(
538 const std::string& s1,
539 const std::string& s2
562 current_registering_category_(
"Uncategorized")
580 const std::string& registering_category
583 current_registering_category_ = registering_category;
589 return current_registering_category_;
593 virtual void AddNumberOption(
594 const std::string& name,
595 const std::string& short_description,
597 const std::string& long_description =
""
601 virtual void AddLowerBoundedNumberOption(
602 const std::string& name,
603 const std::string& short_description,
607 const std::string& long_description =
""
611 virtual void AddUpperBoundedNumberOption(
612 const std::string& name,
613 const std::string& short_description,
617 const std::string& long_description =
""
621 virtual void AddBoundedNumberOption(
622 const std::string& name,
623 const std::string& short_description,
629 const std::string& long_description =
""
633 virtual void AddIntegerOption(
634 const std::string& name,
635 const std::string& short_description,
637 const std::string& long_description =
""
641 virtual void AddLowerBoundedIntegerOption(
642 const std::string& name,
643 const std::string& short_description,
646 const std::string& long_description =
""
650 virtual void AddUpperBoundedIntegerOption(
651 const std::string& name,
652 const std::string& short_description,
655 const std::string& long_description =
""
659 virtual void AddBoundedIntegerOption(
660 const std::string& name,
661 const std::string& short_description,
665 const std::string& long_description =
""
669 virtual void AddStringOption(
670 const std::string& name,
671 const std::string& short_description,
672 const std::string& default_value,
673 const std::vector<std::string>& settings,
674 const std::vector<std::string>& descriptions,
675 const std::string& long_description =
""
679 virtual void AddStringOption1(
680 const std::string& name,
681 const std::string& short_description,
682 const std::string& default_value,
683 const std::string& setting1,
684 const std::string& description1,
685 const std::string& long_description =
""
688 virtual void AddStringOption2(
689 const std::string& name,
690 const std::string& short_description,
691 const std::string& default_value,
692 const std::string& setting1,
693 const std::string& description1,
694 const std::string& setting2,
695 const std::string& description2,
696 const std::string& long_description =
""
699 virtual void AddStringOption3(
700 const std::string& name,
701 const std::string& short_description,
702 const std::string& default_value,
703 const std::string& setting1,
704 const std::string& description1,
705 const std::string& setting2,
706 const std::string& description2,
707 const std::string& setting3,
708 const std::string& description3,
709 const std::string& long_description =
""
712 virtual void AddStringOption4(
713 const std::string& name,
714 const std::string& short_description,
715 const std::string& default_value,
716 const std::string& setting1,
717 const std::string& description1,
718 const std::string& setting2,
719 const std::string& description2,
720 const std::string& setting3,
721 const std::string& description3,
722 const std::string& setting4,
723 const std::string& description4,
724 const std::string& long_description =
""
727 virtual void AddStringOption5(
728 const std::string& name,
729 const std::string& short_description,
730 const std::string& default_value,
731 const std::string& setting1,
732 const std::string& description1,
733 const std::string& setting2,
734 const std::string& description2,
735 const std::string& setting3,
736 const std::string& description3,
737 const std::string& setting4,
738 const std::string& description4,
739 const std::string& setting5,
740 const std::string& description5,
741 const std::string& long_description =
""
744 virtual void AddStringOption6(
745 const std::string& name,
746 const std::string& short_description,
747 const std::string& default_value,
748 const std::string& setting1,
749 const std::string& description1,
750 const std::string& setting2,
751 const std::string& description2,
752 const std::string& setting3,
753 const std::string& description3,
754 const std::string& setting4,
755 const std::string& description4,
756 const std::string& setting5,
757 const std::string& description5,
758 const std::string& setting6,
759 const std::string& description6,
760 const std::string& long_description =
""
763 virtual void AddStringOption7(
764 const std::string& name,
765 const std::string& short_description,
766 const std::string& default_value,
767 const std::string& setting1,
768 const std::string& description1,
769 const std::string& setting2,
770 const std::string& description2,
771 const std::string& setting3,
772 const std::string& description3,
773 const std::string& setting4,
774 const std::string& description4,
775 const std::string& setting5,
776 const std::string& description5,
777 const std::string& setting6,
778 const std::string& description6,
779 const std::string& setting7,
780 const std::string& description7,
781 const std::string& long_description =
""
784 virtual void AddStringOption8(
785 const std::string& name,
786 const std::string& short_description,
787 const std::string& default_value,
788 const std::string& setting1,
789 const std::string& description1,
790 const std::string& setting2,
791 const std::string& description2,
792 const std::string& setting3,
793 const std::string& description3,
794 const std::string& setting4,
795 const std::string& description4,
796 const std::string& setting5,
797 const std::string& description5,
798 const std::string& setting6,
799 const std::string& description6,
800 const std::string& setting7,
801 const std::string& description7,
802 const std::string& setting8,
803 const std::string& description8,
804 const std::string& long_description =
""
807 virtual void AddStringOption9(
808 const std::string& name,
809 const std::string& short_description,
810 const std::string& default_value,
811 const std::string& setting1,
812 const std::string& description1,
813 const std::string& setting2,
814 const std::string& description2,
815 const std::string& setting3,
816 const std::string& description3,
817 const std::string& setting4,
818 const std::string& description4,
819 const std::string& setting5,
820 const std::string& description5,
821 const std::string& setting6,
822 const std::string& description6,
823 const std::string& setting7,
824 const std::string& description7,
825 const std::string& setting8,
826 const std::string& description8,
827 const std::string& setting9,
828 const std::string& description9,
829 const std::string& long_description =
""
832 virtual void AddStringOption10(
833 const std::string& name,
834 const std::string& short_description,
835 const std::string& default_value,
836 const std::string& setting1,
837 const std::string& description1,
838 const std::string& setting2,
839 const std::string& description2,
840 const std::string& setting3,
841 const std::string& description3,
842 const std::string& setting4,
843 const std::string& description4,
844 const std::string& setting5,
845 const std::string& description5,
846 const std::string& setting6,
847 const std::string& description6,
848 const std::string& setting7,
849 const std::string& description7,
850 const std::string& setting8,
851 const std::string& description8,
852 const std::string& setting9,
853 const std::string& description9,
854 const std::string& setting10,
855 const std::string& description10,
856 const std::string& long_description =
""
864 const std::string& name
868 virtual void OutputOptionDocumentation(
870 std::list<std::string>& categories
874 virtual void OutputLatexOptionDocumentation(
876 std::list<std::string>& categories
880 virtual void OutputDoxygenOptionDocumentation(
882 std::list<std::string>& categories
891 return registered_options_;
virtual bool IsValidIntegerSetting(const Index &value) const
Check if the Integer value is a valid setting.
string_entry(const std::string &value, const std::string &description)
virtual const std::string & LongDescription() const
Get the long description.
virtual void SetRegisteringCategory(const std::string ®istering_category)
Methods to interact with registered options.
virtual void SetLowerInteger(const Index &lower)
set the Integer version of the lower bound
virtual void SetType(const RegisteredOptionType &type)
Get the Option's type.
std::string registering_category_
virtual std::vector< string_entry > GetValidStrings() const
get the valid string settings
virtual Index Counter() const
Counter.
virtual Index DefaultInteger() const
get the default as an Integer
virtual void SetDefaultInteger(const Index &default_value)
Set the default as an Integer.
virtual const std::string & Name() const
Standard Get / Set Methods.
DECLARE_STD_EXCEPTION(FATAL_ERROR_IN_LINEAR_SOLVER)
double Number
Type of all numbers.
virtual const bool & UpperStrict() const
check if the upper bound is strict
Base class for registered options.
virtual Number UpperNumber() const
get the Number version of the upper bound
virtual void SetRegisteringCategory(const std::string ®istering_category)
Set the registering class.
virtual const std::string & RegisteringCategory() const
Get the registering class.
Template class for Smart Pointers.
RegisteredOptionType type_
Storing the reference count of all the smart pointers that currently reference it.
virtual ~RegisteredOptions()
Destructor.
virtual Index DefaultStringAsEnum() const
get the default as a string, but as the index of the string in the list
RegisteredOption(const std::string &name, const std::string &short_description, const std::string &long_description, const std::string ®istering_category, Index counter)
virtual const std::string & ShortDescription() const
Get the short description.
virtual std::string RegisteringCategory()
retrieve the value of the current registering category
virtual void SetLowerNumber(const Number &lower, const bool &strict)
set the Number version of the lower bound
class to hold the valid string settings for a string option
virtual void SetUpperInteger(const Index &upper)
set the Integer version of the upper bound
virtual void SetDefaultString(const std::string &default_value)
Set the default as a string.
virtual const bool & LowerStrict() const
check if the lower bound is strict
const Index counter_
Has the information as how many-th option this one was registered.
RegisteredOptions()
Constructors / Destructors.
int Index
Type of all indices of vectors, matrices etc.
virtual bool IsValidNumberSetting(const Number &value) const
Check if the Number value is a valid setting.
virtual const RegisteredOptionType & Type() const
Get the Option's type.
virtual const RegOptionsList & RegisteredOptionsList() const
Giving access to iteratable representation of the registered options.
std::string current_registering_category_
virtual Number LowerNumber() const
get the Number version of the lower bound
std::map< std::string, SmartPtr< RegisteredOption > > RegOptionsList
virtual const bool & HasLower() const
check if the option has a lower bound
std::string long_description_
virtual void SetUpperNumber(const Number &upper, const bool &strict)
set the Number version of the upper bound
Class responsible for all message output.
std::string default_string_
virtual Index LowerInteger() const
get the Integer version of the lower bound
std::string short_description_
virtual void AddValidStringSetting(const std::string value, const std::string description)
method to add valid string entries
std::map< std::string, SmartPtr< RegisteredOption > > registered_options_
virtual void SetLongDescription(const std::string &long_description)
Set the long description.
RegisteredOption(const RegisteredOption ©)
virtual Index UpperInteger() const
get the Integer version of the upper bound
virtual void SetDefaultNumber(const Number &default_value)
Set the default as a Number.
virtual void SetShortDescription(const std::string &short_description)
Set the short description.
std::vector< string_entry > valid_strings_
virtual void SetName(const std::string &name)
Set the option's name (tag in the input file)
virtual const bool & HasUpper() const
check if the option has an upper bound
virtual ~RegisteredOption()
virtual Number DefaultNumber() const
get the default as a Number
Class for storing registered options.
virtual std::string DefaultString() const
get the default as a string