opynsim
Unofficial C++ Documentation
Loading...
Searching...
No Matches
component_output_subfield.h
Go to the documentation of this file.
1#pragma once
2
5
6#include <cstdint>
7#include <optional>
8#include <span>
9
10namespace OpenSim { class AbstractOutput; }
11namespace SimTK { class State; }
12
13namespace opyn
14{
15 // flag type that can be used to say what subfields an OpenSim output has
16 enum class ComponentOutputSubfield : uint32_t {
17 None = 0,
18 X = 1<<0,
19 Y = 1<<1,
20 Z = 1<<2,
21 Magnitude = 1<<3,
22 RX = 1<<4,
23 RY = 1<<5,
24 RZ = 1<<6,
25 RMagnitude = 1<<7,
26 NUM_FLAGS = 8,
27
28 Default = None,
29 };
31
32 std::optional<osc::CStringView> GetOutputSubfieldLabel(ComponentOutputSubfield);
33 std::span<const ComponentOutputSubfield> GetAllSupportedOutputSubfields();
34
35 // tests if the output produces numeric values (e.g. `float`, `Vector3`, etc. - as opposed to `std::string`)
36 bool ProducesExtractableNumericValues(const OpenSim::AbstractOutput&);
37
38 // returns `ComponentOutputSubfield`s that are usable with the given output.
39 ComponentOutputSubfields GetSupportedSubfields(const OpenSim::AbstractOutput&);
40
41 using SubfieldExtractorFunc = double(*)(const OpenSim::AbstractOutput&, const SimTK::State&);
43}
Definition flags.h:20
Definition static_component_registries.h:3
Definition custom_decoration_generator.h:6
Definition component_registry.h:14
double(*)(const OpenSim::AbstractOutput &, const SimTK::State &) SubfieldExtractorFunc
Definition component_output_subfield.h:41
std::span< const ComponentOutputSubfield > GetAllSupportedOutputSubfields()
std::optional< osc::CStringView > GetOutputSubfieldLabel(ComponentOutputSubfield)
bool ProducesExtractableNumericValues(const OpenSim::AbstractOutput &)
SubfieldExtractorFunc GetExtractorFuncOrNull(const OpenSim::AbstractOutput &, ComponentOutputSubfield)
ComponentOutputSubfields GetSupportedSubfields(const OpenSim::AbstractOutput &)
ComponentOutputSubfield
Definition component_output_subfield.h:16