MoochoPack: Miscellaneous Utilities for MOOCHO  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
OptionsFromStreamPack_CommandLineOptionsFromStreamProcessor.hpp
1 // @HEADER
2 // ***********************************************************************
3 //
4 // Moocho: Multi-functional Object-Oriented arCHitecture for Optimization
5 // Copyright (2003) Sandia Corporation
6 //
7 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8 // license for use of this work by or on behalf of the U.S. Government.
9 //
10 // Redistribution and use in source and binary forms, with or without
11 // modification, are permitted provided that the following conditions are
12 // met:
13 //
14 // 1. Redistributions of source code must retain the above copyright
15 // notice, this list of conditions and the following disclaimer.
16 //
17 // 2. Redistributions in binary form must reproduce the above copyright
18 // notice, this list of conditions and the following disclaimer in the
19 // documentation and/or other materials provided with the distribution.
20 //
21 // 3. Neither the name of the Corporation nor the names of the
22 // contributors may be used to endorse or promote products derived from
23 // this software without specific prior written permission.
24 //
25 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 //
37 // Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov)
38 //
39 // ***********************************************************************
40 // @HEADER
41 
42 #ifndef OPTIONS_FORM_STEAM_PACK_COMMANDLINE_OPTIONS_FROM_STREAM_PROCESSOR_HPP
43 #define OPTIONS_FORM_STEAM_PACK_COMMANDLINE_OPTIONS_FROM_STREAM_PROCESSOR_HPP
44 
45 #include "OptionsFromStreamPack_OptionsFromStream.hpp"
47 #include "Teuchos_RCP.hpp"
49 
50 namespace OptionsFromStreamPack {
51 
58 public:
59 
72  const std::string &options_file_name_opt_name = "ofs-options-file"
73  ,const std::string &options_file_name_opt_doc = "The name of the file containing input options for OptionsFromStream object."
74  ,const std::string &options_file_name = ""
75  ,const std::string &extra_options_str_opt_name = "ofs-extra-options"
76  ,const std::string &extra_options_str_opt_doc = "Extra options in format \"OptGrp1{name1=val1,...,namen=valn}:OptGr2{name1=val1,...,namen=valn}:...\""
77  ,const std::string &extra_options_str = ""
78  );
79  // RAB: 2006/01/27: Note, this value contains no semi-columns since this
80  // conflicts with Trilinos' runtests script. Therefore, I have to replace
81  // the ',' separators with ';' below!
82  // Note: we can leave off the last ',' since it turns out that the
83  // way the new OptionsFromStream::parse_options(...) is written that
84  // the last semicolon in an options group is not necessary!
85 
93  void set_options(
94  Teuchos::RCP<OptionsFromStream> const& options
95  );
96 
103 
111  STANDARD_MEMBER_COMPOSITION_MEMBERS(std::string,options_file_name_opt_name);
112 
120  STANDARD_MEMBER_COMPOSITION_MEMBERS(std::string,options_file_name_opt_doc);
121 
129  STANDARD_MEMBER_COMPOSITION_MEMBERS(std::string,options_file_name);
130 
138  STANDARD_MEMBER_COMPOSITION_MEMBERS(std::string,extra_options_str_opt_name);
139 
147  STANDARD_MEMBER_COMPOSITION_MEMBERS(std::string,extra_options_str_opt_doc);
148 
156  STANDARD_MEMBER_COMPOSITION_MEMBERS(std::string,extra_options_str);
157 
168  );
169 
186  void process_options();
187 
192 
193 private:
194 
196 
197 };
198 
199 } // end namespace OptionsFromStreamPack
200 
201 #endif // OPTIONS_FORM_STEAM_PACK_COMMANDLINE_OPTIONS_FROM_STREAM_PROCESSOR_HPP
Reads from a file and/or parses from the commandline to initalize an OptionsFromStream object...
void setup_commandline_processor(Teuchos::CommandLineProcessor *clp)
Setup a comandline processor before it processes commandline options or reads form a file...
Teuchos::RCP< OptionsFromStream > get_options() const
Just return the OptionsFromStream object in its current state.
void set_options(Teuchos::RCP< OptionsFromStream > const &options)
Set the OptionsFromStream object that will be used to fill options in to.
STANDARD_MEMBER_COMPOSITION_MEMBERS(std::string, options_file_name_opt_name)
Set the name of the commandline option name that specifies the options file name. ...
void process_options()
Read the options file and/or process the commandline options.
Teuchos::RCP< OptionsFromStream > process_and_get_options()
Calls process_options() and returns get_options()
CommandLineOptionsFromStreamProcessor(const std::string &options_file_name_opt_name="ofs-options-file", const std::string &options_file_name_opt_doc="The name of the file containing input options for OptionsFromStream object.", const std::string &options_file_name="", const std::string &extra_options_str_opt_name="ofs-extra-options", const std::string &extra_options_str_opt_doc="Extra options in format \"OptGrp1{name1=val1,...,namen=valn}:OptGr2{name1=val1,...,namen=valn}:...\"", const std::string &extra_options_str="")
Construct with default values for the options file name and extra options.