aqnwb 0.4.0
Loading...
Searching...
No Matches
ElementIdentifiers.hpp
Go to the documentation of this file.
1#pragma once
2
5
6namespace AQNWB::NWB
7{
13{
14public:
15 struct DataSpec : public Data::DataSpec<ElementIdentifiers>
16 {
17 DataSpec(const std::string& datasetName,
18 const IO::ArrayDataSetConfig& dataConfig)
19 : Data::DataSpec<ElementIdentifiers>(datasetName, dataConfig)
20 {
21 }
22
23 Status initialize(Data& data) const override
24 {
25 auto* elementIdentifiers = dynamic_cast<ElementIdentifiers*>(&data);
26 if (!elementIdentifiers) {
27 std::cerr << "ElementIdentifiers::DataSpec::initialize received "
28 "incompatible Data object"
29 << std::endl;
30 return Status::Failure;
31 }
32 return elementIdentifiers->initialize(
33 static_cast<const IO::ArrayDataSetConfig&>(*this));
34 }
35 };
36
37 // Register ElementIdentifiers class as a registered type
39 Data,
41
42protected:
49 ElementIdentifiers(const std::string& path, std::shared_ptr<IO::BaseIO> io);
50
51public:
55 virtual ~ElementIdentifiers() override {}
56
59
60 static std::shared_ptr<DataSpec> createDataSpec(
61 const std::string& name, const IO::ArrayDataSetConfig& dataConfig)
62 {
63 return std::make_shared<DataSpec>(name, dataConfig);
64 }
65
67 {
68 return Data::initialize(dataConfig);
69 }
70
71 DEFINE_DATASET_FIELD(readData, recordData, int, "", The main data)
72};
73} // namespace AQNWB::NWB
AQNWB::Types::Status Status
Definition BaseIO.hpp:21
#define REGISTER_SUBCLASS(T, BASE, NAMESPACE)
Macro to register a subclass with the RegisteredType class registry.
Definition RegisteredType.hpp:547
#define DEFINE_DATASET_FIELD(readName, writeName, default_type, fieldPath, description)
Defines a lazy-loaded dataset field accessor function.
Definition RegisteredType.hpp:619
The configuration for an array dataset.
Definition BaseIO.hpp:321
An abstract data type for a dataset.
Definition Data.hpp:21
Status initialize(const IO::BaseArrayDataSetConfig &dataConfig)
Initialize the dataset for the Data object.
Definition Data.cpp:18
Data(const std::string &path, std::shared_ptr< IO::BaseIO > io)
Constructor.
Definition Data.cpp:13
A list of unique identifiers for values within a dataset, e.g. rows of a DynamicTable.
Definition ElementIdentifiers.hpp:13
virtual ~ElementIdentifiers() override
Virtual destructor.
Definition ElementIdentifiers.hpp:55
static std::shared_ptr< DataSpec > createDataSpec(const std::string &name, const IO::ArrayDataSetConfig &dataConfig)
Definition ElementIdentifiers.hpp:60
ElementIdentifiers(const std::string &path, std::shared_ptr< IO::BaseIO > io)
Constructor.
Definition ElementIdentifiers.cpp:9
std::unique_ptr< AQNWB::IO::ReadDataWrapper< AQNWB::NWB::DatasetField, VTYPE > > readData() const
Status initialize(const IO::ArrayDataSetConfig &dataConfig)
Definition ElementIdentifiers.hpp:66
std::shared_ptr< AQNWB::IO::BaseRecordingData > recordData(bool reset=false)
std::string m_path
The path of the registered type.
Definition RegisteredType.hpp:471
std::weak_ptr< IO::BaseIO > m_io
A weak pointer to the IO object.
Definition RegisteredType.hpp:483
Namespace for all classes related to the NWB data standard.
const std::string namespaceName
Definition hdmf_common.hpp:21
Typed runtime configuration for a concrete Data subclass.
Definition Data.hpp:79
DataSpec(const std::string &datasetName, const IO::ArrayDataSetConfig &dataConfig)
Definition ElementIdentifiers.hpp:17
Status initialize(Data &data) const override
Initialize the created concrete Data object from this spec.
Definition ElementIdentifiers.hpp:23