xtd 0.2.0
Loading...
Searching...
No Matches
xtd::diagnostics::switch_base Class Reference
Inheritance diagram for xtd::diagnostics::switch_base:
xtd::object xtd::iequatable< switch_base > xtd::interface xtd::equality_operators< type_t, equatable_t > xtd::diagnostics::boolean_switch xtd::diagnostics::source_switch xtd::diagnostics::trace_switch

Definition

Provides an abstract base class to create new debugging and tracing switches.

Provides an abstract base class to create new debugging and tracing switches.
Definition switch_base.h:36
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition object.h:42
#define core_export_
Define shared library export.
Definition core_export.h:13
Inheritance
xtd::objectxtd::diagnostics::switch_base
Header
#include <xtd/diagnostics/switch_base>
Namespace
xtd::diagnostics
Library
xtd.core
Remarks
A switch provides an efficient mechanism for controlling tracing and debugging output at run time using external settings. The switch_base class implements default behavior for switches, allowing you to change the switch level at run time.
This class is the base class for the boolean_switch, source_switch and the trace_switch classes. These switches meet most debugging and tracing needs.
Notes to implementers
If you need trace levels, or mechanisms for setting switch levels different from those provided by boolean_switch, source_switch and trace_switch, you can inherit from switch_base. When inheriting from this class, you must implement the switch_setting method.

Public Properties

const std::map< xtd::string, xtd::string > & attributes () const noexcept
 Gets the custom switch attributes.
 
std::map< xtd::string, xtd::string > & attributes () noexcept
 Gets the custom switch attributes.
 
void attributes (const std::map< xtd::string, xtd::string > &attributes) noexcept
 Sets the custom switch attributes.
 
const xtd::stringdescription () const noexcept
 Gets a description of the switch.
 
const xtd::stringdisplay_name () const noexcept
 Gets a name used to identify the switch.
 

Public Methods

bool equals (const switch_base &value) const noexcept override
 
virtual bool equals (const object &obj) const noexcept
 Determines whether the specified object is equal to the current object.
 
template<typename object_a_t , typename object_b_t >
static bool equals (const object_a_t &object_a, const object_b_t &object_b) noexcept
 Determines whether the specified object instances are considered equal.
 

Protected constructors

 switch_base (const xtd::string &display_name, const xtd::string &description)
 Initializes a new instance of the switch_base class.
 
 switch_base (const xtd::string &display_name, const xtd::string &description, const xtd::string &default_switch_value)
 Initializes a new instance of the switch_base class.
 

Protected Properties

int32 switch_setting () const noexcept
 Gets the current setting for this switch.
 
void switch_setting (int32 switch_setting)
 Sets the current setting for this switch.
 
const xtd::stringvalue () const noexcept
 Gets the value of the switch.
 
void value (const xtd::string &value)
 Sets the value of the switch.
 

Protected Methods

virtual std::vector< xtd::stringget_supported_attributes () const noexcept
 Gets the custom attributes supported by the switch.
 
virtual void on_switch_setting_changed ()
 Invoked when the switch_setting property is changed.
 
virtual void on_value_changed ()
 Invoked when the value property is changed.
 

Additional Inherited Members

- Public Member Functions inherited from xtd::object
 object ()=default
 Create a new instance of the ultimate base class object.
 
virtual size_t get_hash_code () const noexcept
 Serves as a hash function for a particular type.
 
virtual type_object get_type () const noexcept
 Gets the type of the current instance.
 
template<typename object_t >
xtd::uptr< object_t > memberwise_clone () const
 Creates a shallow copy of the current object.
 
virtual xtd::string to_string () const noexcept
 Returns a xtd::string that represents the current object.
 
- Public Member Functions inherited from xtd::iequatable< switch_base >
virtual bool equals (const switch_base &) const noexcept=0
 Indicates whether the current object is equal to another object of the same type.
 
- Static Public Member Functions inherited from xtd::object
template<typename object_a_t , typename object_b_t >
static bool equals (const object_a_t &object_a, const object_b_t &object_b) noexcept
 Determines whether the specified object instances are considered equal.
 
template<typename object_a_t , typename object_b_t >
static bool reference_equals (const object_a_t &object_a, const object_b_t &object_b) noexcept
 Determines whether the specified object instances are the same instance.
 

Constructor & Destructor Documentation

◆ switch_base() [1/2]

xtd::diagnostics::switch_base::switch_base ( const xtd::string display_name,
const xtd::string description 
)
protected

Initializes a new instance of the switch_base class.

Parameters
display_nameThe name of the switch.
descriptionThe description for the switch.
Remarks
When you create a new switch_base object, the value of the display_name parameter is used to find initial switch settings. The default value is an empty string ("").
Notes to inheritors
To set the value of the switch, set the switch_setting property in the constructor.

◆ switch_base() [2/2]

xtd::diagnostics::switch_base::switch_base ( const xtd::string display_name,
const xtd::string description,
const xtd::string default_switch_value 
)
protected

Initializes a new instance of the switch_base class.

Parameters
display_nameThe name of the switch.
descriptionThe description for the switch.
default_switch_valueThe default value for the switch.
Remarks
The display_name parameter is used to set the value of the display_name property, and the description parameter is use to set the value of the description property. The default_switch_value parameter is the value for the switch if the value property is not set by code.

Member Function Documentation

◆ attributes() [1/3]

const std::map< xtd::string, xtd::string > & xtd::diagnostics::switch_base::attributes ( ) const
noexcept

Gets the custom switch attributes.

Returns
nA StringDictionary containing the case-insensitive custom attributes for the trace switch.

◆ attributes() [2/3]

std::map< xtd::string, xtd::string > & xtd::diagnostics::switch_base::attributes ( )
noexcept

Gets the custom switch attributes.

Returns
A StringDictionary containing the case-insensitive custom attributes for the trace switch.

◆ attributes() [3/3]

void xtd::diagnostics::switch_base::attributes ( const std::map< xtd::string, xtd::string > &  attributes)
noexcept

Sets the custom switch attributes.

Parameters
attributesA StringDictionary containing the case-insensitive custom attributes for the trace switch.

◆ description()

const xtd::string & xtd::diagnostics::switch_base::description ( ) const
noexcept

Gets a description of the switch.

Returns
The description of the switch. The default value is an empty string ("").
Remarks
This property should indicate the function of the switch; for example, "Enables tracing for a directory watcher component." The value is set by the descriptor parameter in the switch_base constructor.

◆ display_name()

const xtd::string & xtd::diagnostics::switch_base::display_name ( ) const
noexcept

Gets a name used to identify the switch.

Returns
The name used to identify the switch. The default value is an empty string ("").
Remarks
When you create a new switch_base object, the display_name finds initial switch settings. For more information, see the switch_base constructor.

◆ switch_setting() [1/2]

int32 xtd::diagnostics::switch_base::switch_setting ( ) const
protectednoexcept

Gets the current setting for this switch.

Returns
The current setting for this switch. The default is zero.

◆ switch_setting() [2/2]

void xtd::diagnostics::switch_base::switch_setting ( int32  switch_setting)
protected

Sets the current setting for this switch.

Parameters
switch_settingThe current setting for this switch. The default is zero.

◆ value() [1/2]

const xtd::string & xtd::diagnostics::switch_base::value ( ) const
protectednoexcept

Gets the value of the switch.

Returns
A string representing the value of the switch.
Remarks
The on_value_changed method is called when the value of the value property is changed. The on_value_changed method parses the value of this property and converts it to an integer value, which is then used to set the switch_setting property.
Notes to inheritors
You should override the on_value_changed() method and provide a conversion operation that sets the appropriate switch_setting value for your switch.

◆ value() [2/2]

void xtd::diagnostics::switch_base::value ( const xtd::string value)
protected

Sets the value of the switch.

Parameters
valueA string representing the value of the switch.
Remarks
The on_value_changed method is called when the value of the value property is changed. The on_value_changed method parses the value of this property and converts it to an integer value, which is then used to set the switch_setting property.
Notes to inheritors
You should override the on_value_changed() method and provide a conversion operation that sets the appropriate switch_setting value for your switch.

◆ get_supported_attributes()

virtual std::vector< xtd::string > xtd::diagnostics::switch_base::get_supported_attributes ( ) const
protectedvirtualnoexcept

Gets the custom attributes supported by the switch.

Returns
A string array that contains the names of the custom attributes supported by the switch, or null if there no custom attributes are supported.
Remarks
The default implementation for the get_supported_attributes method returns {} (empty array). If a switch is added in a configuration file and custom attributes are specified that are not included in the string array returned by get_supported_attributes, a configuration_exception is thrown when the switch is loaded.
Notes to Inheritors
When inheriting from the switch_base class or a derived class, you can override the get_supported_attributes() method to provide custom attributes for your class.

◆ on_switch_setting_changed()

virtual void xtd::diagnostics::switch_base::on_switch_setting_changed ( )
protectedvirtual

Invoked when the switch_setting property is changed.

Reimplemented in xtd::diagnostics::trace_switch.

◆ on_value_changed()

virtual void xtd::diagnostics::switch_base::on_value_changed ( )
protectedvirtual

Invoked when the value property is changed.

Remarks
The default implementation parses the new value of the value property to an integer value which it uses to set the switch_setting property.
Not to Inheritors
You should override this method and use a conversion that sets the appropriate switch_setting value for your switch.

Reimplemented in xtd::diagnostics::boolean_switch, xtd::diagnostics::source_switch, and xtd::diagnostics::trace_switch.

◆ equals() [1/2]

virtual bool xtd::object::equals ( const object obj) const
virtualnoexcept

Determines whether the specified object is equal to the current object.

Parameters
objThe object to compare with the current object.
Returns
true if the specified object is equal to the current object. otherwise, false.
Examples
The following code example compares the current instance with another object.
#include <xtd/console>
using namespace xtd;
auto main() -> int {
auto object1 = new_ptr<object>();
auto object2 = new_ptr<object>();
auto object3 = object2;
console::write_line(object1->equals(*object3));
console::write_line(*object1 == *object3);
object3 = object1;
console::write_line(object1->equals(*object3));
console::write_line(*object1 == *object3);
}
// This code produces the following output :
//
// false
// false
// true
// true
static void write_line()
Writes the current line terminator to the standard output stream using the specified format informati...
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition xtd_about_box.h:10

Reimplemented from xtd::object.

◆ equals() [2/2]

template<typename object_a_t , typename object_b_t >
static bool xtd::object::equals ( const object_a_t &  object_a,
const object_b_t &  object_b 
)
inlinestaticnoexcept

Determines whether the specified object instances are considered equal.

Parameters
object_aThe first object to compare.
object_bThe second object to compare.
Returns
true if object_a is the same instance as object_b or if both are null references or if object_a(object_b) returns true. otherwise, false.
Examples
The following code example compares different objects.
#include <xtd/console>
using namespace xtd;
auto main() -> int {
string s1 = "Tom";
string s2 = "Carol";
console::write_line("object::equals(\"{0}\", \"{1}\") => {2}", s1, s2, object::equals(s1, s2));
s1 = "Tom";
s2 = "Tom";
console::write_line("object::equals(\"{0}\", \"{1}\") => {2}", s1, s2, object::equals(s1, s2));
s1 = "";
s2 = "Tom";
console::write_line("object::equals(\"{0}\", \"{1}\") => {2}", s1, s2, object::equals(s1, s2));
s1 = "Carol";
s2 = "";
console::write_line("object::equals(\"{0}\", \"{1}\") => {2}", s1, s2, object::equals(s1, s2));
s1 = "";
s2 = "";
console::write_line("object::equals(\"{0}\", \"{1}\") => {2}", s1, s2, object::equals(s1, s2));
}
// This code produces the following output :
//
// object::equals("Tom", "Carol") => false
// object::equals("Tom", "Tom") => true
// object::equals("", "Tom") => false
// object::equals("Carol", "") => false
// object::equals("", "") => true
virtual bool equals(const object &obj) const noexcept
Determines whether the specified object is equal to the current object.

The documentation for this class was generated from the following file: