10 #include "Teuchos_VerboseObjectParameterListHelpers.hpp"
11 #include "Teuchos_StandardParameterEntryValidators.hpp"
17 const std::string VerboseObject_name =
"VerboseObject";
19 const std::string OutputFile_name =
"Output File";
20 const std::string OutputFile_default =
"none";
22 const std::string VerbosityLevel_name =
"Verbosity Level";
23 const std::string VerbosityLevel_default =
"default";
27 VerbosityLevel_validator;
35 Teuchos::getValidVerboseObjectSublist()
37 using Teuchos::rcp_implicit_cast;
38 static RCP<const ParameterList> validParams;
41 pl =
rcp(
new ParameterList(VerboseObject_name));
42 VerbosityLevel_validator = verbosityLevelParameterEntryValidator(VerbosityLevel_name);
44 VerbosityLevel_name, VerbosityLevel_default,
45 "The verbosity level to use to override whatever is set in code.\n"
46 "The value of \"default\" will allow the level set in code to be used.",
47 rcp_implicit_cast<const ParameterEntryValidator>(VerbosityLevel_validator)
50 OutputFile_name, OutputFile_default,
51 "The file to send output to. If the value \"none\" is used, then\n"
52 "whatever is set in code will be used. However, any other std::string value\n"
53 "will be used to create an std::ofstream object to a file with the given name.\n"
54 "Therefore, any valid file name is a valid std::string value for this parameter."
62 void Teuchos::setupVerboseObjectSublist( ParameterList* paramList )
65 paramList->sublist(VerboseObject_name).setParameters(
67 ).disableRecursiveValidation();
71 void Teuchos::readVerboseObjectSublist(
72 ParameterList* paramList,
81 &voSublist = paramList->sublist(VerboseObject_name);
84 outputFileStr = voSublist.get(OutputFile_name,OutputFile_default);
85 *verbLevel = VerbosityLevel_validator->getIntegralValue(
86 voSublist,VerbosityLevel_name,VerbosityLevel_default
89 if (outputFileStr==OutputFile_default) {
130 *oStream = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout));
133 const int outputFileMPIRank = 0;
135 #if defined(HAVE_TEUCHOS_MPI)
138 const int rank = outputFileMPIRank;
141 if ( rank == outputFileMPIRank) {
142 RCP<std::ofstream> oFileStream =
rcp(
new std::ofstream());
147 oFileStream->open(outputFileStr);
150 oFileStream->eof(), Exceptions::InvalidParameterValue,
151 "Error, the file \"" << outputFileStr <<
"\n given by the parameter\n"
152 "\'" << OutputFile_name <<
"\' in the sublist\n"
153 "\'" << voSublist.name() <<
"\' count not be opened for output!"
156 *oStream =
fancyOStream(rcp_implicit_cast<std::ostream>(oFileStream));
159 #if defined(HAVE_TEUCHOS_MPI)
161 (*oStream)->setOutputToRootOnly(outputFileMPIRank);
RCP< T > rcp(const boost::shared_ptr< T > &sptr)
Conversion function that takes in a boost::shared_ptr object and spits out a Teuchos::RCP object...
static int getRank()
The rank of the calling process in MPI_COMM_WORLD.
RCP< basic_FancyOStream< char > > fancyOStream(const RCP< std::basic_ostream< char > > &oStream, const std::basic_string< char > &tabIndentStr=" ", const int startingTab=0, const bool showLinePrefix=false, const int maxLenLinePrefix=10, const bool showTabCount=false, const bool showProcRank=false)
Dynamically allocate a FancyOStream and return it wrapped in an RCP object.
int rank(const Comm< Ordinal > &comm)
Get the process rank.
Standard implementation of a ParameterEntryValidator that maps from a list of strings to an enum or i...
EVerbosityLevel
Verbosity level.
bool is_null(const ArrayRCP< T > &p)
Returns true if p.get()==NULL.
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT RCP< const ParameterList > getValidVerboseObjectSublist()
Return the sublist of valid parameters for the "VerboseObject" sublist.
Smart reference counting pointer class for automatic garbage collection.
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
This macro is designed to be a short version of TEUCHOS_TEST_FOR_EXCEPTION() that is easier to call...
#define TEUCHOS_TEST_FOR_EXCEPTION_PURE_MSG(throw_exception_test, Exception, msg)
Macro for throwing an exception with breakpointing to ease debugging.