Go to the documentation of this file.
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_ )
468 const std::string& value
475 const std::string& value
484 const std::string& value
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_;
594 const std::string& name,
595 const std::string& short_description,
597 const std::string& long_description =
""
602 const std::string& name,
603 const std::string& short_description,
607 const std::string& long_description =
""
612 const std::string& name,
613 const std::string& short_description,
617 const std::string& long_description =
""
622 const std::string& name,
623 const std::string& short_description,
629 const std::string& long_description =
""
634 const std::string& name,
635 const std::string& short_description,
637 const std::string& long_description =
""
642 const std::string& name,
643 const std::string& short_description,
646 const std::string& long_description =
""
651 const std::string& name,
652 const std::string& short_description,
655 const std::string& long_description =
""
660 const std::string& name,
661 const std::string& short_description,
665 const std::string& long_description =
""
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 =
""
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 =
""
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 =
""
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 =
""
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 =
""
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 =
""
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 =
""
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 =
""
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 =
""
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 =
""
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
870 std::list<std::string>& categories
876 std::list<std::string>& categories
882 std::list<std::string>& categories
891 return registered_options_;
virtual void AddIntegerOption(const std::string &name, const std::string &short_description, Index default_value, const std::string &long_description="")
Add a Integer option (with no restrictions)
virtual void AddUpperBoundedNumberOption(const std::string &name, const std::string &short_description, Number upper, bool strict, Number default_value, const std::string &long_description="")
Add a Number option (with a upper bound)
virtual void OutputDoxygenOptionDocumentation(const Journalist &jnlst, std::list< std::string > &categories)
Output documentation in Doxygen format to include in doxygen documentation.
std::string default_string_
virtual ~RegisteredOption()
virtual void AddStringOption10(const std::string &name, const std::string &short_description, const std::string &default_value, const std::string &setting1, const std::string &description1, const std::string &setting2, const std::string &description2, const std::string &setting3, const std::string &description3, const std::string &setting4, const std::string &description4, const std::string &setting5, const std::string &description5, const std::string &setting6, const std::string &description6, const std::string &setting7, const std::string &description7, const std::string &setting8, const std::string &description8, const std::string &setting9, const std::string &description9, const std::string &setting10, const std::string &description10, const std::string &long_description="")
virtual void AddStringOption(const std::string &name, const std::string &short_description, const std::string &default_value, const std::vector< std::string > &settings, const std::vector< std::string > &descriptions, const std::string &long_description="")
Add a String option (with no restrictions)
RegisteredOptions()
Constructors / Destructors.
RegisteredOption(const std::string &name, const std::string &short_description, const std::string &long_description, const std::string ®istering_category, Index counter)
virtual void AddUpperBoundedIntegerOption(const std::string &name, const std::string &short_description, Index upper, Index default_value, const std::string &long_description="")
Add a Integer option (with a upper bound)
virtual void SetUpperNumber(const Number &upper, const bool &strict)
set the Number version of the upper bound
virtual std::string RegisteringCategory()
retrieve the value of the current registering category
std::string MakeValidHTMLNumber(Number value) const
virtual Number LowerNumber() const
get the Number version of the lower bound
Base class for registered options.
virtual std::vector< string_entry > GetValidStrings() const
get the valid string settings
virtual void AddLowerBoundedNumberOption(const std::string &name, const std::string &short_description, Number lower, bool strict, Number default_value, const std::string &long_description="")
Add a Number option (with a lower bound)
virtual void OutputOptionDocumentation(const Journalist &jnlst, std::list< std::string > &categories)
Output documentation for the options - gives a description, etc.
This file contains a base class for all exceptions and a set of macros to help with exceptions.
double Number
Type of all numbers.
virtual void AddStringOption1(const std::string &name, const std::string &short_description, const std::string &default_value, const std::string &setting1, const std::string &description1, const std::string &long_description="")
Methods that make adding string options with only a few entries easier.
virtual void AddStringOption2(const std::string &name, const std::string &short_description, const std::string &default_value, const std::string &setting1, const std::string &description1, const std::string &setting2, const std::string &description2, const std::string &long_description="")
virtual void AddValidStringSetting(const std::string value, const std::string description)
method to add valid string entries
virtual bool IsValidIntegerSetting(const Index &value) const
Check if the Integer value is a valid setting.
class to hold the valid string settings for a string option
virtual void SetRegisteringCategory(const std::string ®istering_category)
Methods to interact with registered options.
virtual void AddStringOption5(const std::string &name, const std::string &short_description, const std::string &default_value, const std::string &setting1, const std::string &description1, const std::string &setting2, const std::string &description2, const std::string &setting3, const std::string &description3, const std::string &setting4, const std::string &description4, const std::string &setting5, const std::string &description5, const std::string &long_description="")
virtual void SetLowerNumber(const Number &lower, const bool &strict)
set the Number version of the lower bound
RegisteredOption(const RegisteredOption ©)
virtual void SetUpperInteger(const Index &upper)
set the Integer version of the upper bound
virtual void AddStringOption7(const std::string &name, const std::string &short_description, const std::string &default_value, const std::string &setting1, const std::string &description1, const std::string &setting2, const std::string &description2, const std::string &setting3, const std::string &description3, const std::string &setting4, const std::string &description4, const std::string &setting5, const std::string &description5, const std::string &setting6, const std::string &description6, const std::string &setting7, const std::string &description7, const std::string &long_description="")
virtual void SetShortDescription(const std::string &short_description)
Set the short description.
Class for storing registered options.
virtual void SetRegisteringCategory(const std::string ®istering_category)
Set the registering class.
virtual void AddBoundedNumberOption(const std::string &name, const std::string &short_description, Number lower, bool lower_strict, Number upper, bool upper_strict, Number default_value, const std::string &long_description="")
Add a Number option (with a both bounds)
std::string MakeValidLatexNumber(Number value) const
int Index
Type of all indices of vectors, matrices etc.
virtual void OutputLatexOptionDocumentation(const Journalist &jnlst, std::list< std::string > &categories)
Output documentation in Latex format to include in a latex file.
virtual const bool & HasUpper() const
check if the option has an upper bound
virtual SmartPtr< const RegisteredOption > GetOption(const std::string &name)
Get a registered option.
virtual void SetType(const RegisteredOptionType &type)
Get the Option's type.
virtual Index Counter() const
Counter.
virtual const bool & UpperStrict() const
check if the upper bound is strict
virtual Index MapStringSettingToEnum(const std::string &value) const
Map a user setting (allowing any case) to the index of the matched setting in the list of string sett...
virtual Number UpperNumber() const
get the Number version of the upper bound
Template class for Smart Pointers.
virtual ~RegisteredOptions()
Destructor.
std::string current_registering_category_
virtual const std::string & RegisteringCategory() const
Get the registering class.
virtual void AddLowerBoundedIntegerOption(const std::string &name, const std::string &short_description, Index lower, Index default_value, const std::string &long_description="")
Add a Integer option (with a lower bound)
std::map< std::string, SmartPtr< RegisteredOption > > registered_options_
virtual Index UpperInteger() const
get the Integer version of the upper bound
virtual const std::string & LongDescription() const
Get the long description.
virtual const RegOptionsList & RegisteredOptionsList() const
Giving access to iteratable representation of the registered options.
virtual void OutputDoxygenDescription(const Journalist &jnlst) const
output a doxygen version
virtual void SetName(const std::string &name)
Set the option's name (tag in the input file)
std::string long_description_
std::map< std::string, SmartPtr< RegisteredOption > > RegOptionsList
virtual void AddNumberOption(const std::string &name, const std::string &short_description, Number default_value, const std::string &long_description="")
Add a Number option (with no restrictions)
Class responsible for all message output.
virtual std::string DefaultString() const
get the default as a string
virtual Index LowerInteger() const
get the Integer version of the lower bound
RegisteredOptionType type_
virtual const std::string & Name() const
Standard Get / Set Methods.
virtual const bool & HasLower() const
check if the option has a lower bound
virtual bool IsValidNumberSetting(const Number &value) const
Check if the Number value is a valid setting.
virtual std::string MapStringSetting(const std::string &value) const
Map a user setting (allowing any case) to the case used when the setting was registered.
RegisteredOption(Index counter)
Constructors / Destructors.
virtual const RegisteredOptionType & Type() const
Get the Option's type.
virtual Number DefaultNumber() const
get the default as a Number
std::string registering_category_
virtual void OutputDescription(const Journalist &jnlst) const
output a description of the option
virtual void AddBoundedIntegerOption(const std::string &name, const std::string &short_description, Index lower, Index upper, Index default_value, const std::string &long_description="")
Add a Integer option (with a both bounds)
virtual void AddStringOption8(const std::string &name, const std::string &short_description, const std::string &default_value, const std::string &setting1, const std::string &description1, const std::string &setting2, const std::string &description2, const std::string &setting3, const std::string &description3, const std::string &setting4, const std::string &description4, const std::string &setting5, const std::string &description5, const std::string &setting6, const std::string &description6, const std::string &setting7, const std::string &description7, const std::string &setting8, const std::string &description8, const std::string &long_description="")
virtual Index DefaultStringAsEnum() const
get the default as a string, but as the index of the string in the list
virtual void SetDefaultString(const std::string &default_value)
Set the default as a string.
DECLARE_STD_EXCEPTION(FATAL_ERROR_IN_LINEAR_SOLVER)
std::string short_description_
std::vector< string_entry > valid_strings_
virtual void SetDefaultInteger(const Index &default_value)
Set the default as an Integer.
virtual void AddStringOption6(const std::string &name, const std::string &short_description, const std::string &default_value, const std::string &setting1, const std::string &description1, const std::string &setting2, const std::string &description2, const std::string &setting3, const std::string &description3, const std::string &setting4, const std::string &description4, const std::string &setting5, const std::string &description5, const std::string &setting6, const std::string &description6, const std::string &long_description="")
const Index counter_
Has the information as how many-th option this one was registered.
bool string_equal_insensitive(const std::string &s1, const std::string &s2) const
Compare two strings and return true if they are equal (case insensitive comparison)
string_entry(const std::string &value, const std::string &description)
virtual void AddStringOption3(const std::string &name, const std::string &short_description, const std::string &default_value, const std::string &setting1, const std::string &description1, const std::string &setting2, const std::string &description2, const std::string &setting3, const std::string &description3, const std::string &long_description="")
Storing the reference count of all the smart pointers that currently reference it.
virtual void OutputLatexDescription(const Journalist &jnlst) const
output a latex version
virtual void SetLongDescription(const std::string &long_description)
Set the long description.
virtual const bool & LowerStrict() const
check if the lower bound is strict
virtual Index DefaultInteger() const
get the default as an Integer
void MakeValidLatexString(std::string source, std::string &dest) const
virtual void OutputShortDescription(const Journalist &jnlst) const
output a more concise version
virtual bool IsValidStringSetting(const std::string &value) const
Check if the String value is a valid setting.
virtual void AddStringOption9(const std::string &name, const std::string &short_description, const std::string &default_value, const std::string &setting1, const std::string &description1, const std::string &setting2, const std::string &description2, const std::string &setting3, const std::string &description3, const std::string &setting4, const std::string &description4, const std::string &setting5, const std::string &description5, const std::string &setting6, const std::string &description6, const std::string &setting7, const std::string &description7, const std::string &setting8, const std::string &description8, const std::string &setting9, const std::string &description9, const std::string &long_description="")
virtual void SetDefaultNumber(const Number &default_value)
Set the default as a Number.
virtual void SetLowerInteger(const Index &lower)
set the Integer version of the lower bound
virtual void AddStringOption4(const std::string &name, const std::string &short_description, const std::string &default_value, const std::string &setting1, const std::string &description1, const std::string &setting2, const std::string &description2, const std::string &setting3, const std::string &description3, const std::string &setting4, const std::string &description4, const std::string &long_description="")
virtual const std::string & ShortDescription() const
Get the short description.