xref: /netbsd-src/external/bsd/elftosb/dist/common/OptionContext.h (revision 993229b6fea628ff8b1fa09146c80b0cfb2768eb)
1 /*
2  * File:	OptionContext.h
3  *
4  * Copyright (c) Freescale Semiconductor, Inc. All rights reserved.
5  * See included license file for license details.
6  */
7 #if !defined(_OptionContext_h_)
8 #define _OptionContext_h_
9 
10 #include <string>
11 #include "Value.h"
12 
13 namespace elftosb
14 {
15 
16 /*!
17  * \brief Pure abstract interface class to a table of options.
18  */
19 class OptionContext
20 {
21 public:
22 	//! \brief Detemine whether the named option is present in the table.
23 	//! \param name The name of the option to query.
24 	//! \retval true The option is present and has a value.
25 	//! \retval false No option with that name is in the table.
26 	virtual bool hasOption(const std::string & name) const=0;
27 
28 	//! \brief Returns the option's value.
29 	//! \param name The name of the option.
30 	//! \return The value for the option named \a name.
31 	//! \retval NULL No option is in the table with that name.
32 	virtual const Value * getOption(const std::string & name) const=0;
33 
34 	//! \brief Adds or changes an option's value.
35 	//!
36 	//! If the option was not already present in the table, it is added.
37 	//! Otherwise the old value is replaced.
38 	//!
39 	//! \param name The option's name.
40 	//! \param value New value for the option.
41 	virtual void setOption(const std::string & name, Value * value)=0;
42 
43 	//! \brief Removes an option from the table.
44 	//! \param name The name of the option to remove.
45 	virtual void deleteOption(const std::string & name)=0;
46 };
47 
48 }; // namespace elftosb
49 
50 #endif // _OptionContext_h_
51