@startuml
interface Ambiorix {
	__ Public methods __
	+Ambiorix()
	+~Ambiorix()
	+Ambiorix(const Ambiorix &)
	+{abstract} bool set()
	+{abstract} add_instance()
	+{abstract} remove_instance()
}

class AmbiorixImpl {
	__ Private data __
    -amxb_bus_ctx_t *m_bus_ctx
    -amxd_dm_t m_datamodel
    -amxo_parser_t m_parser
    -std::shared_ptr<EventLoop> m_event_loop
    -amxd_trans_t m_transaction
    -amxd_object_t *m_object
	__ Public methods __
	+AmbiorixImpl()
	+{abstract}~AmbiorixImpl()
	+init()
	__ Private methods __
	-load_datamodel()
	-init_event_loop()
	-remove_event_loop()
	-init_signal_loop()
	-remove_event_loop()
	-remove_signal_loop()
	-*find_object()
	-prepare_transaction()
	-apply_transaction()
}

class AmbiorixDummy {
	__ Public methods __
	+AmbiorixDummy();
	+{abstract}~AmbiorixDummy();
}

Ambiorix <|.. AmbiorixImpl
Ambiorix <|.. AmbiorixDummy
@enduml
