cpp_class_diagram.puml - moduleus/urx GitHub Wiki
@startuml
/' Objects '/
namespace urx { abstract class IRawData { +getDataType() : DataType {query} +getSamplingType() : SamplingType {query} }
abstract class RawData {
+{abstract} getDataType() : DataType {query}
+{abstract} getSamplingType() : SamplingType {query}
+{abstract} getSize() : size_t {query}
+{abstract} getBuffer() : void* {query}
+{abstract} getBuffer() : void*
}
class RawDataNoInit {
+RawDataNoInit(size_t size)
-_size : size_t
+getSize() : size_t {query}
-_buffer : std::unique_ptr<DataType [ ]>
+getBuffer() : void* {query}
+getBuffer() : void*
}
class RawDataVector {
+RawDataVector(std::vector<DataType>&& vector)
+getSize() : size_t {query}
-_vector : std::vector<DataType>
+getBuffer() : void* {query}
+getBuffer() : void*
}
class RawDataWeak {
+RawDataWeak(void* buffer, size_t size)
-_size : size_t
+getSize() : size_t {query}
-_buffer : void*
+getBuffer() : void* {query}
+getBuffer() : void*
}
enum DataType {
DOUBLE
FLOAT
INT16
INT32
UNDEFINED
}
enum ProbeType {
CURVILINEAR
LINEAR
MATRIX
RCA
SPARSE
UNDEFINED
}
enum SamplingType {
IQ
RF
UNDEFINED
}
enum WaveType {
CONVERGING_WAVE
CYLINDRICAL_WAVE
DIVERGING_WAVE
PLANE_WAVE
UNDEFINED
}
class Element {
+transform : Transform
+element_geometry : std::weak_ptr<ElementGeometry>
+impulse_response : std::weak_ptr<ImpulseResponse>
}
class ElementGeometry {
+perimeter : std::vector<Vector3D>
}
class Excitation {
+sampling_frequency : DoubleNan
+transmit_frequency : DoubleNan
+pulse_shape : std::string
+waveform : std::vector<double>
}
class GroupData {
+group_timestamp : DoubleNan
+raw_data : std::shared_ptr<RawData>
+sequence_timestamps : std::vector<double>
+event_timestamps : std::vector<std::vector<double>>
+group : std::weak_ptr<Group>
}
class ImpulseResponse {
+sampling_frequency : DoubleNan
+time_offset : DoubleNan
+units : std::string
+data : std::vector<double>
}
class Probe {
+type : ProbeType
+transform : Transform
+description : std::string
+elements : std::vector<Element>
+element_geometries : std::vector<std::shared_ptr<ElementGeometry>>
+impulse_responses : std::vector<std::shared_ptr<ImpulseResponse>>
}
class ReceiveSetup {
+modulation_frequency : DoubleNan
+sampling_frequency : DoubleNan
+tgc_sampling_frequency : DoubleNan
+time_offset : DoubleNan
+probe_transform : Transform
+tgc_profile : std::vector<double>
+active_elements : std::vector<std::vector<uint32_t>>
+probe : std::weak_ptr<Probe>
+number_samples : uint32_t
}
class Transform {
+rotation : Vector3D
+translation : Vector3D
}
class Vector2D {
+x : double
+y : double
}
class Vector3D {
+x : double
+y : double
+z : double
}
class Version {
+major : uint16_t
+minor : uint16_t
+patch : uint16_t
}
class Wave {
+time_zero : DoubleNan
+time_zero_reference_point : Vector3D
+type : WaveType
+parameters : std::vector<double>
}
class Acquisition {
+groups_data : std::vector<GroupData>
}
class AcquisitionBase {
+timestamp : DoubleNan
+authors : std::string
+country_code : std::string
+description : std::string
+local_time : std::string
+system : std::string
+excitations : std::vector<std::shared_ptr<Excitation>>
+groups : std::vector<std::shared_ptr<Group>>
+probes : std::vector<std::shared_ptr<Probe>>
}
class Dataset {
+acquisition : Acquisition
+version : Version
}
class Event {
+receive_setup : ReceiveSetup
+transmit_setup : TransmitSetup
}
class Group {
+data_type : DataType
+sound_speed : DoubleNan
+sampling_type : SamplingType
+description : std::string
+sequence : std::vector<Event>
}
class TransmitSetup {
+time_offset : DoubleNan
+probe_transform : Transform
+wave : Wave
+delays : std::vector<double>
+active_elements : std::vector<std::vector<uint32_t>>
+excitations : std::vector<std::weak_ptr<Excitation>>
+probe : std::weak_ptr<Probe>
}
}
/' Inheritance relationships '/
urx.AcquisitionBase <|-- urx.Acquisition
urx.IRawData <|-- urx.RawDataNoInit
urx.IRawData <|-- urx.RawDataVector
urx.IRawData <|-- urx.RawDataWeak
urx.RawData <|-- urx.IRawData
/' Aggregation relationships '/
urx.Acquisition *-- urx.GroupData
urx.AcquisitionBase *-- urx.Excitation
urx.AcquisitionBase *-- urx.Group
urx.AcquisitionBase *-- urx.Probe
urx.Dataset *-- urx.Acquisition
urx.Dataset *-- urx.Version
urx.Event *-- urx.ReceiveSetup
urx.Event *-- urx.TransmitSetup
urx.Group *-- urx.DataType
urx.Group *-- urx.Event
urx.Group *-- urx.SamplingType
urx.GroupData *-- urx.RawData
urx.Probe *-- urx.Element
urx.Probe *-- urx.ElementGeometry
urx.Probe *-- urx.ImpulseResponse
urx.Probe *-- urx.ProbeType
urx.TransmitSetup *-- urx.Wave
urx.Wave *-- urx.WaveType
/' Nested objects '/
@enduml