xtd 0.2.0
Loading...
Searching...
No Matches
xtd::event< object_t, handler_t > Class Template Reference
Inheritance diagram for xtd::event< object_t, handler_t >:

Definition

template<typename object_t, typename handler_t>
class xtd::event< object_t, handler_t >

Represents an event.

Namespace
xtd
Library
xtd.core
Template Parameters
object_tthe owner object type of the event.
handler_tTypically a xtd::event_handler or inherited type.
Remarks
Only an object of type object_t can be create and invoke event.
For more info about events see Events guide.
Examples
The following example cshow hot to use event.
#include <xtd/as>
#include <xtd/console>
#include <xtd/environment>
#include <xtd/event>
#include <xtd/event_handler>
#include <xtd/ustring>
class control : public xtd::object {
public:
control() = default;
const xtd::ustring& text() const {return text_;}
void text(const xtd::ustring& text) {
if (text_ != text) {
text_ = text;
on_text_changed(xtd::event_args::empty);
}
}
protected:
void on_text_changed(const xtd::event_args& e) {text_changed(*this, e);}
private:
xtd::ustring text_;
};
class button : public control {
public:
button() = default;
void perform_click() {on_click(xtd::event_args::empty);}
protected:
virtual void on_click(const xtd::event_args& e) {click(*this, e);}
};
auto main() -> int {
auto button1 = button {};
button1.text_changed += [](xtd::object & sender, const xtd::event_args & e) {
xtd::console::out << "text_changed [text=" << xtd::as<control>(sender).text() << "]" << xtd::environment::new_line;
};
button1.click += [] {
};
button1.text("button1");
// click simulation
button1.perform_click();
}
// This code produces the following output:
//
// text_changed [text=button1]
// click on button1
static std::ostream out
Gets the standard output stream. A std::basic_ostream<char_t> that represents the standard output str...
Definition console.h:52
static xtd::ustring new_line() noexcept
Gets the newline string defined for this environment.
Represents the base class for classes that contain event data, and provides a value to use for events...
Definition event_args.h:18
static const event_args empty
Provides a value to use with events that do not have event data.
Definition event_args.h:25
Represents an event.
Definition event.h:21
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition object.h:40
Represents text as a sequence of UTF-8 code units.
Definition ustring.h:52
@ control
The left or right CTRL modifier key.
@ e
The E key.
@ button1
The first button on the message box is the default button.
@ button
The appearance of a button.
Examples
event.cpp, form_custom_event.cpp, graph_control.cpp, numeric_text_box.cpp, and send_message_to_form.cpp.

Public Methods

bool is_empty () const noexcept
 Gets a value indicate if the event is empty.
 

Operators

handler_t & operator+= (const handler_t &handler) noexcept
 Adds an handler to the event.
 
handler_t & operator+= (const typename handler_t::function_t &function) noexcept
 Adds a function to the event.
 
template<typename fn_t >
handler_t & operator+= (fn_t function) noexcept
 Adds a function to the event.
 
handler_t & operator-= (const handler_t &handler) noexcept
 Removes an handler to the event.
 
handler_t & operator-= (const typename handler_t::function_t &function) noexcept
 Removes a function to the event.
 
template<typename fn_t >
handler_t & operator-= (fn_t function) noexcept
 Removes a function to the event.
 
void clear () noexcept
 Clear event.
 

Member Function Documentation

◆ clear()

template<typename object_t , typename handler_t >
void xtd::event< object_t, handler_t >::clear ( )
inlinenoexcept

Clear event.

◆ is_empty()

template<typename object_t , typename handler_t >
bool xtd::event< object_t, handler_t >::is_empty ( ) const
inlinenoexcept

Gets a value indicate if the event is empty.

Returns
true if evcent does not contains functions; otherwise false.

◆ operator+=() [1/3]

template<typename object_t , typename handler_t >
handler_t & xtd::event< object_t, handler_t >::operator+= ( const handler_t &  handler)
inlinenoexcept

Adds an handler to the event.

Parameters
handlerHandler to add.
Returns
The current event instance.

◆ operator+=() [2/3]

template<typename object_t , typename handler_t >
handler_t & xtd::event< object_t, handler_t >::operator+= ( const typename handler_t::function_t &  function)
inlinenoexcept

Adds a function to the event.

Parameters
handlerFunction to add.
Returns
The current event instance.

◆ operator+=() [3/3]

template<typename object_t , typename handler_t >
template<typename fn_t >
handler_t & xtd::event< object_t, handler_t >::operator+= ( fn_t  function)
inlinenoexcept

Adds a function to the event.

Parameters
functionFunction to add.
Returns
The current event instance.

◆ operator-=() [1/3]

template<typename object_t , typename handler_t >
handler_t & xtd::event< object_t, handler_t >::operator-= ( const handler_t &  handler)
inlinenoexcept

Removes an handler to the event.

Parameters
handlerHandler to remove.
Returns
The current event instance.

◆ operator-=() [2/3]

template<typename object_t , typename handler_t >
handler_t & xtd::event< object_t, handler_t >::operator-= ( const typename handler_t::function_t &  function)
inlinenoexcept

Removes a function to the event.

Parameters
functionFunction to remove.
Returns
The current event instance.

◆ operator-=() [3/3]

template<typename object_t , typename handler_t >
template<typename fn_t >
handler_t & xtd::event< object_t, handler_t >::operator-= ( fn_t  function)
inlinenoexcept

Removes a function to the event.

Parameters
functionFunction to remove.
Returns
The current event instance.

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