flipperzero-firmware/lib/app-scened-template/record-controller.hpp
SG 0b14db4fb3
C++ apps: templated scene controller (#517)
* C++ apps: templated scene controller
* templated app: fix type names
* templated app: text store component
* Applications: add "Templated Scene" application
* templated app: refractoring
* Gui module byte input: fix docs
* templated app: new byte input scene
* templated app: dialog ex view module
* templated app: popup view module
* templated app: dialog-ex view module, fix docs
* templated app: text input view module
* Gui module text input: fix docs
* Furi: duplicated include
* templated app: record holder (controller) class
* templated app: view modules can now be accessed via cast
* templated app: remove unused includes
* templated app: fix return code
2021-06-15 14:01:56 +03:00

46 lines
960 B
C++

#pragma once
#include <furi/record.h>
/**
* @brief Class for opening, casting, holding and closing records
*
* @tparam TRecordClass record class
*/
template <typename TRecordClass> class RecordController {
public:
/**
* @brief Construct a new Record Controller object for record with record name
*
* @param record_name record name
*/
RecordController(const char* record_name) {
name = record_name;
value = static_cast<TRecordClass*>(furi_record_open(name));
};
~RecordController() {
furi_record_close(name);
}
/**
* @brief Record getter
*
* @return TRecordClass* record value
*/
TRecordClass* get() {
return value;
}
/**
* @brief Record getter (by cast)
*
* @return TRecordClass* record value
*/
operator TRecordClass*() const {
return value;
}
private:
const char* name;
TRecordClass* value;
};