Handles spatial transformations. More...
Namespaces | |
class_of_service | |
Contains tag types for requesting different classes of service from the networking-based underlying transport (VRPN) | |
elements | |
Namespace for the various element types that may constitute a node in the path tree. | |
exceptions | |
Exceptions that may be thrown from this module. | |
traits | |
Type traits and metaprogramming supports related to specially-handled reports. | |
Classes | |
struct | ActualBufferAlignment |
Traits class describing actual alignment of Buffer. More... | |
class | AliasProcessor |
A short-lived class for setting up options then processing alias directives to apply to a path tree. More... | |
class | BaseDevice |
Class used as an interface for underlying devices that can have device components (corresponding to interface classes) More... | |
singleton | Buffer |
A buffer of bytes, built on a byte-vector-like container. Provides methods for easily appending to the buffer (including alignment padding), and a nested class for reading from such a buffer. More... | |
singleton | BufferReader |
Provides for a single reading pass over a buffer. It is important that the buffer not change while a Reader obtained from it is still in scope. More... | |
struct | CallbackStorage |
Trait computing the storage for callbacks for a report type. More... | |
class | ChangeOfBasis |
class | CommonComponent |
BaseDevice component, for the VRPN built-in common messages. More... | |
class | ConnectionWrapper |
class | CorrelatedStringMap |
class | DeduplicatingFunctionWrapper |
A wrapper for a unary function that only calls its contained function when the input has changed. More... | |
struct | DesiredBufferAlignment |
Traits class specifying the (potentially platform-specific!) preferred alignment for Buffer. More... | |
class | DeviceComponent |
class | DeviceWrapper |
Base class used to implement BaseDevice/DeviceComponent-based devices on top of VRPN. More... | |
class | DirectionComponent |
BaseDevice component. More... | |
struct | DirectionData |
class | ExternalBufferReadingWrapper |
Class wrapping an externally-owned and controlled buffer with the vector-like functionality needed to read from it. More... | |
class | EyeTrackerComponent |
BaseDevice component. More... | |
class | GeneralizedTransform |
Container for easy manipulation of nested transforms. More... | |
struct | ImageData |
class | ImagingComponent |
BaseDevice component. More... | |
class | ImpliedSenderMessageHandleTraits |
A class template for the common message traits where the registrar is passed by pointer, has registerHandler and unregisterHandler methods, and doesn't take a RawSenderType because it's implied. More... | |
class | InterfaceCallbacks |
Class to maintain callbacks for an interface for each report type explicitly enumerated. More... | |
class | InterfaceState |
Class to maintain state for an interface for each report (and thus state) type explicitly enumerated. More... | |
class | IPCRingBuffer |
A ring buffer for interprocess communication, with managed occupancy. More... | |
struct | is_buffer |
Type trait: is the given type a buffer? More... | |
struct | is_buffer_reader |
Type trait: is the given type a buffer reader? More... | |
class | JSONTransformVisitor |
class | Location2DComponent |
BaseDevice component. More... | |
struct | LocationData |
class | LocomotionComponent |
BaseDevice component. More... | |
class | LowLatency |
class | MessageHandler |
RAII class template managing a message handler callback. More... | |
class | MessageHandlerBase |
class | MessageRegistration |
CRTP class template wrapping message-specific data and/or logic. More... | |
struct | NaviPositionData |
struct | NaviVelocityData |
class | NetworkingSupport |
RAII class wrapping networking system startup. More... | |
class | OriginalSource |
The result of resolving a tree node to a device: either an original source to connect to, or nothing. Typically wrapped in boost::optional for return from functions. More... | |
struct | OSVR_EyeNotification |
class | ParsedAlias |
class | PathTree |
A tree representation, with path/url syntax, of the known OSVR system. More... | |
class | PathTreeObserver |
class | PathTreeOwner |
Object responsible for owning a path tree (specifically a "downstream"/client path tree), replacing its contents from JSON-serialized data, and notifying a collection of observers of such events. More... | |
class | RawMessageType |
Type-safe wrapper with built-in default for a VRPN "message type" integer. More... | |
class | RawSenderType |
Type-safe wrapper with built-in default for a VRPN "sender type" integer. More... | |
class | RegisteredStringMap |
class | RouteContainer |
struct | StateMapContents |
A templated type containing state and a timestamp for known, specialized report types. More... | |
class | SystemComponent |
BaseDevice component, to be used only with the "OSVR" special device. More... | |
struct | TrackerSensorInfo |
fully-resolved data about a tracker sensor. Defaults per the schema. More... | |
class | Transform |
Spatial transformation, consisting of both pre and post components. More... | |
class | TreeResolutionVisitor |
struct | YourComplicatedType |
Dummy example for your type. More... | |
struct | YourSimpleType |
Typedefs | |
typedef shared_ptr< BaseDevice > | BaseDevicePtr |
typedef ImpliedSenderMessageHandleTraits < vrpn_MESSAGEHANDLER, BaseDevice > | BaseDeviceMessageHandleTraits |
Traits class for use with MessageHandler. | |
typedef char | BufferElement |
The single-byte element in a buffer. | |
typedef std::allocator < BufferElement > | BufferAllocator |
Allocator type for Buffer - might be usefully aligned. | |
typedef std::vector < BufferElement, BufferAllocator > | BufferByteVector |
A typedef for a vector of bytes usable as a buffer, that might be "over-aligned" in some desirable way. More... | |
template<typename T = ClientContext> | |
using | ClientContextUniquePtr = unique_ptr< T, ClientContextDeleter > |
Template alias for a ClientContext unique_ptr with the correct deleter class. | |
using | ClientContextSharedPtr = shared_ptr< ClientContext > |
typedef ::OSVR_ClientContextObject | ClientContext |
typedef void(* | ClientContextDeleter )(ClientContext *) |
using | ClientInterfaceFactory = std::function< ClientInterfacePtr(ClientContext &, const char[])> |
A factory function type taking the client context and path, and returning a ClientInterfacePtr. The ClientContext will handle notifying its internals about the new interface before returning it. | |
typedef ::OSVR_ClientInterfaceObject | ClientInterface |
typedef shared_ptr < ClientInterface > | ClientInterfacePtr |
Pointer for holding ClientInterface objects safely. | |
typedef weak_ptr< ClientInterface > | ClientInterfaceWeakPtr |
Pointer for observing ClientInterface objects safely and weakly. | |
typedef shared_ptr < DeviceComponent > | DeviceComponentPtr |
typedef std::vector < DeviceComponentPtr > | DeviceComponentList |
typedef shared_ptr < OSVR_ImageBufferElement > | ImageBufferPtr |
using | CallbackTuple = typepack::TypeKeyedTuple< traits::ReportTypeList, CallbackStorage > |
typedef std::vector < ClientInterfacePtr > | InterfaceList |
template<typename ReportType > | |
using | StateMapValueType = boost::optional< StateMapContents< ReportType >> |
Alias taking a report type and returning a state map value type. | |
using | StateMap = typepack::TypeKeyedTuple< traits::ReportTypeList, typepack::quote< StateMapValueType >> |
Data structure mapping from a report type to an optional state value. | |
typedef shared_ptr< IPCRingBuffer > | IPCRingBufferPtr |
Pointer type for holding a shared memory ring buffer. | |
template<typename MessageTraits > | |
using | MessageHandlerPtr = shared_ptr< MessageHandler< MessageTraits > > |
template<typename MessageTraits > | |
using | MessageHandlerList = std::vector< MessageHandlerPtr< MessageTraits > > |
typedef std::vector < shared_ptr < MessageHandlerBase > > | GenericMessageHandlerList |
typedef uint8_t | AliasPriority |
typedef ::osvr::util::TreeNode < PathElement > | PathNode |
The specific tree node type that contains a path element. | |
typedef ::osvr::util::TreeNodePointer < PathElement >::type | PathNodePtr |
The ownership pointer of the specific tree node. | |
typedef PathNode * | PathNodeParentPtr |
The weak (non-owning) pointer used to refer to a parent tree node. | |
typedef shared_ptr < PathTreeObserver > | PathTreeObserverPtr |
typedef weak_ptr < PathTreeObserver > | PathTreeObserverWeakPtr |
Enumerations | |
enum | PathTreeEvents : std::size_t { AboutToUpdate, AfterUpdate } |
Functions | |
PathNode & | addDevice (PathTree &tree, std::string const &deviceName, elements::DeviceElement dev=elements::DeviceElement()) |
Adds/updates nodes for the basic path to a device. More... | |
Json::Value | convertRouteToAlias (Json::Value const &val) |
Given a single JSON object, if it's an old-fashioned "routing
directive", convert it to a normal "alias". More... | |
Json::Value | createJSONAlias (std::string const &path, Json::Value const &destination) |
Given a path and a destination, combine them into a JSON alias description. More... | |
Json::Value | applyPriorityToAlias (Json::Value const &alias, AliasPriority priority) |
Given a JSON object describing one or more aliases, set the priority of the alias(es). More... | |
size_t | computeAlignmentPadding (size_t alignment, size_t currentSize) |
Given an alignment in bytes, and a current size of a buffer, return the number of bytes of padding required to align the next field to be added to the buffer at the desired alignment within that buffer. More... | |
template<typename Visitor > | |
Visitor::result_type | applyPathNodeVisitor (Visitor &v, PathNode &node) |
Visit a node's element's contained type, similar to boost::apply_visitor, but passing both the PathNode and the PathElement type. | |
template<typename Visitor > | |
Visitor::result_type | applyPathNodeVisitor (Visitor &v, PathNode const &node) |
template<typename CharType > | |
BufferReader < ExternalBufferReadingWrapper < CharType > > | readExternalBuffer (const CharType *buf, size_t len) |
Constructs and returns a buffer reader for an externally-allocated buffer: it's on you to supply a valid pointer and length. | |
void | deleteContext (ClientContext *ctx) |
Use the stored deleter to appropriately delete the client context. | |
template<typename T , typename... Args> | |
T * | makeContext (Args...args) |
Create a subclass object of ClientContext, setting the deleter appropriately by passing it as the last parameter. Compare to std::make_shared. | |
template<typename T > | |
ClientContextSharedPtr | wrapSharedContext (T *context) |
Wrap a client context pointer in a shared pointer with the correct custom deleter. | |
ClientInterfaceFactory | getStandardClientInterfaceFactory () |
Returns a client interface factory suitable for standard client use. | |
BaseDevicePtr | createClientDevice (std::string const &name, vrpn_ConnectionPtr const &conn) |
Factory function for a bare client device with no components/interfaces registered by default. | |
BaseDevicePtr | createServerDevice (std::string const &name, vrpn_ConnectionPtr const &conn) |
Factory function for a bare server device with no components/interfaces registered by default. | |
double | degreesToRadians (double degrees) |
template<typename UnaryPredicate > | |
void | remove_if (GeneralizedTransform &transform, UnaryPredicate pred) |
Remove levels from a generalized transform as dictated by an arbitrary predicate. More... | |
template<typename Type > | |
Type | integerByteSwap (Type const v) |
Swap the order of bytes of an arbitrary integer type. | |
template<typename Derived > | |
Json::Value | toJson (Eigen::QuaternionBase< Derived > const &quat) |
Converts quaternions to JSON objects. | |
template<typename Derived > | |
Json::Value | toJson (Eigen::MatrixBase< Derived > const &vec) |
Converts vectors to JSON arrays. | |
Eigen::Quaterniond | quatFromJson (Json::Value const &json) |
Eigen::Vector3d | vec3FromJson (Json::Value const &json) |
Json::Value | jsonParse (std::string const &str) |
Parses a string as JSON, returning a null value if parsing fails. | |
std::string | jsonToCompactString (Json::Value const &val) |
Turns the JSON value into a compact string representation. | |
std::string | jsonToStyledString (Json::Value const &val) |
Turns the JSON value into a pretty-printed, human-targeted string representation. | |
Json::Value | toJson (OSVR_TimeValue const &ts) |
OSVR_TimeValue | timevalueFromJson (Json::Value const &val) |
std::string | normalizeDeviceDescriptor (std::string const &jsonDescriptor) |
"Normalizes" a device descriptor by parsing it and adding implied interfaces to the existing device descriptor before serializing it back out to a string. Contains logic for every interface that combines multiple other interfaces, such as eyetracker (direction, location2d, tracker, button) More... | |
detail::AliasPriorityWrapper | outputPriority (AliasPriority priority) |
Helper method to output a priority in a formatted way to a stream. | |
std::string | getFullPath (PathNode const &node) |
Gets the absolute path for the given node. More... | |
const char * | getTypeName (PathNode const &node) |
Gets an identifying string for the node value type. | |
bool | addAliasFromSourceAndRelativeDest (PathNode &node, std::string const &source, std::string const &dest, AliasPriority priority=ALIASPRIORITY_MANUAL) |
bool | isPathAbsolute (std::string const &source) |
Json::Value | pathNodeToJson (PathNode const &node) |
Serialize a path node to a JSON object. | |
Json::Value | pathTreeToJson (PathTree const &tree, bool keepNulls=false) |
Serialize a path tree to a JSON array of objects, one for each node. | |
void | jsonToPathTree (PathTree &tree, Json::Value nodes) |
Deserialize a path tree from a JSON array of objects. | |
bool | processDeviceDescriptorForPathTree (PathTree &tree, std::string const &deviceName, std::string const &jsonDescriptor, int listenPort, std::string const &host) |
Set up a path tree based on a device descriptor. More... | |
bool | processDeviceDescriptorFromExistingDevice (PathNode &devNode, elements::DeviceElement const &devElt) |
Set up a path tree based on a device descriptor from an existing DeviceElement node. More... | |
template<typename ReportType > | |
traits::StateType< ReportType > ::type const & | reportState (ReportType const &r) |
Generic const accessor for the "state" member of a report. | |
template<typename ReportType > | |
traits::StateType< ReportType > ::type & | reportState (ReportType &r) |
Generic accessor for the "state" member of a report. | |
std::vector< std::string > | resolveFullTree (PathTree &tree) |
Traverse the given path tree, resolving all aliases found to fully populate any generated sensor targets. More... | |
boost::optional< OriginalSource > | resolveTreeNode (PathTree &pathTree, std::string const &path) |
template<typename BufferType , typename MessageClass > | |
void | serialize (BufferType &buf, MessageClass &msg) |
Serializes a message into a buffer, using a MessageClass More... | |
template<typename BufferReaderType , typename MessageClass > | |
void | deserialize (BufferReaderType &reader, MessageClass &msg) |
Deserializes a message from a buffer, using a MessageClass More... | |
TrackerSensorInfo | getTrackerSensorInfo (OriginalSource const &source) |
template<typename T > | |
Eigen::Matrix4d | rotate (double degrees, T const &axis) |
std::string | getJSONStringAtNode (PathNode const &node) |
std::string | getJSONStringFromTree (PathTree const &tree, std::string const &path) |
template<typename T = Eigen::Vector3d> | |
T | vectorFromJson (Json::Value const &v) |
void | mergeIdenticalInterfaces (Json::Value &existingIface, Json::Value &newIface, std::string const &detail) |
void | appendCurrentIface (Json::Value &augInterface, Json::Value &currInterface) |
appends json value for a given string More... | |
void | normalizeForEyeTracker (Json::Value &descriptor, std::string const &ifaceName) |
For eyetracker, it will add the following interfaces to the descriptor provided that they are set to true: OSVR_Direction, OSVR_Location2D, OSVR_Tracker, OSVR_Button. | |
template<typename T > | |
boost::optional< T > | getSensorNumberHelper (OriginalSource const &self) |
std::string | getPathFromOldRouteSource (Json::Value obj) |
Helper, converts old-style tracker source into normal. For a little backward-compatibility. More... | |
template<typename T > | |
Json::Value | pathElementToJson (T const &element) |
Returns a JSON object with any element-type-specific data for the given PathElement-holdable type. | |
elements::PathElement | jsonToPathElement (Json::Value const &json) |
template<typename ValueType > | |
util::TreeNode< ValueType > & | treePathRetrieve (util::TreeNode< ValueType > &node, std::string path, bool permitParent=false) |
Internal method for parsing a path and getting or creating the nodes along it. More... | |
template<typename ValueType > | |
util::TreeNode< ValueType > const & | treePathRetrieve (util::TreeNode< ValueType > const &node, std::string path, bool permitParent=false) |
template<typename ValueType > | |
util::TreeNode< ValueType > & | pathParseAndRetrieve (util::TreeNode< ValueType > &root, std::string const &path) |
Internal method for parsing a path and getting or creating the nodes along it. More... | |
template<typename ValueType > | |
util::TreeNode< ValueType > const & | pathParseAndRetrieve (util::TreeNode< ValueType > const &root, std::string const &path) |
bool | addAlias (PathNode &node, std::string const &source, AliasPriority priority) |
bool | addAliasFromRoute (PathNode &node, std::string const &route, AliasPriority priority) |
void | clonePathTree (PathTree const &src, PathTree &dest) |
template<typename T , typename F > | |
void | for_each_cleanup_pointers (T &c, F &&f) |
bool | isNodeAnAlias (PathNode const &node) |
void | ifNullTryInferFromParent (common::PathNode &node) |
Given a node, if it's null, try to infer from the parent what it should be. More... | |
void | resolveTreeNodeImpl (PathTree &pathTree, std::string const &path, OriginalSource &source) |
Constants | |
Gets the path separator character - a slash. | |
char | getPathSeparatorCharacter () |
const char * | getPathSeparator () |
Gets the path separator - a slash - as a null-terminated string. | |
Handles spatial transformations.
typedef std::vector<BufferElement, BufferAllocator> osvr::common::BufferByteVector |
PathNode & osvr::common::addDevice | ( | PathTree & | tree, |
std::string const & | deviceName, | ||
elements::DeviceElement | dev = elements::DeviceElement() |
||
) |
Adds/updates nodes for the basic path to a device.
tree | Your path tree. |
deviceName | A namespaced device name coming from a plugin, like /com_osvr_plugin/SampleDevice . If a leading slash is missing, it will be assumed and added. |
Multiple levels are acceptable: for example, /com_osvr_plugin/SampleDriver/Instance1
is valid: Instance1 is the device, and com_osvr_plugin is the plugin.
osvr::common::exceptions::InvalidDeviceName | if an invalid device name (less than two components) was passed |
osvr::common::exceptions::EmptyPathComponent | if any component in the given path is empty after passing initial checks. |
Definition at line 42 of file AddDevice.cpp.
Json::Value osvr::common::convertRouteToAlias | ( | Json::Value const & | val | ) |
Given a single JSON object, if it's an old-fashioned "routing directive", convert it to a normal "alias".
Definition at line 220 of file AliasProcessor.cpp.
Json::Value osvr::common::createJSONAlias | ( | std::string const & | path, |
Json::Value const & | destination | ||
) |
Given a path and a destination, combine them into a JSON alias description.
Definition at line 206 of file AliasProcessor.cpp.
Json::Value osvr::common::applyPriorityToAlias | ( | Json::Value const & | alias, |
AliasPriority | priority | ||
) |
Given a JSON object describing one or more aliases, set the priority of the alias(es).
Definition at line 235 of file AliasProcessor.cpp.
|
inline |
Given an alignment in bytes, and a current size of a buffer, return the number of bytes of padding required to align the next field to be added to the buffer at the desired alignment within that buffer.
That is, return some padding such that (currentSize + padding) % alignment == 0 for alignment > 1.
alignment | Alignment in bytes: both 0 and 1 are accepted to mean "no alignment" |
currentSize | Current number of bytes in a buffer |
No alignment requested
Buffer is already aligned
Buffer needs some padding
Definition at line 49 of file AlignmentPadding.h.
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. const version
Definition at line 114 of file ApplyPathNodeVisitor.h.
|
inline |
Remove levels from a generalized transform as dictated by an arbitrary predicate.
Acts just like std::remove_if except that it also resizes the container.
Definition at line 111 of file GeneralizedTransform.h.
std::string osvr::common::normalizeDeviceDescriptor | ( | std::string const & | jsonDescriptor | ) |
"Normalizes" a device descriptor by parsing it and adding implied interfaces to the existing device descriptor before serializing it back out to a string. Contains logic for every interface that combines multiple other interfaces, such as eyetracker (direction, location2d, tracker, button)
if can't parse as json then leave unchanged, err will be handler later
no interfaces member so don't chanage anything
if can't parse as json then leave unchanged, err will be handler later
no interfaces member so don't chanage anything
Definition at line 136 of file NormalizeDeviceDescriptor.cpp.
std::string osvr::common::getFullPath | ( | PathNode const & | node | ) |
Gets the absolute path for the given node.
Definition at line 42 of file PathNode.cpp.
bool osvr::common::addAliasFromSourceAndRelativeDest | ( | PathNode & | node, |
std::string const & | source, | ||
std::string const & | dest, | ||
AliasPriority | priority = ALIASPRIORITY_MANUAL |
||
) |
Definition at line 135 of file PathTree.cpp.
bool osvr::common::processDeviceDescriptorForPathTree | ( | PathTree & | tree, |
std::string const & | deviceName, | ||
std::string const & | jsonDescriptor, | ||
int | listenPort, | ||
std::string const & | host | ||
) |
Set up a path tree based on a device descriptor.
Set up device node
normalize device descriptor
Parse JSON to stuff into device node.
Set up device node
normalize device descriptor
Parse JSON to stuff into device node.
Definition at line 171 of file ProcessDeviceDescriptor.cpp.
bool osvr::common::processDeviceDescriptorFromExistingDevice | ( | PathNode & | devNode, |
elements::DeviceElement const & | devElt | ||
) |
Set up a path tree based on a device descriptor from an existing DeviceElement node.
Definition at line 222 of file ProcessDeviceDescriptor.cpp.
std::vector< std::string > osvr::common::resolveFullTree | ( | PathTree & | tree | ) |
Traverse the given path tree, resolving all aliases found to fully populate any generated sensor targets.
Definition at line 44 of file ResolveFullTree.cpp.
void osvr::common::serialize | ( | BufferType & | buf, |
MessageClass & | msg | ||
) |
Serializes a message into a buffer, using a MessageClass
Your MessageClass
class must implement a method template<typename T> void processMessage(T & process)
that calls process()
with each field (optionally providing a tag type). After each such call, the fields processed so far are guaranteed to contain valid data (in this case, the same data they started with), in case your processMessage()
method needs to perform computation.
Definition at line 152 of file Serialization.h.
void osvr::common::deserialize | ( | BufferReaderType & | reader, |
MessageClass & | msg | ||
) |
Deserializes a message from a buffer, using a MessageClass
Your MessageClass
class must implement a method template<typename T> void processMessage(T & process)
that calls process()
with each field (optionally providing a tag type). After each such call, the fields processed so far are guaranteed to contain valid data (in this case, the data deserialized from the buffer), in case your processMessage()
method needs to perform computation.
Definition at line 169 of file Serialization.h.
|
inline |
Given a fully-parsed tracker source, determines what messages and subsets thereof it reports.
Get the named value from the object, using the given value reference as both a default value and a destination.
First see if there are device-global properties
Now check for a traits array - overrides device-global propertes
Definition at line 53 of file TrackerSensorInfo.h.
void osvr::common::mergeIdenticalInterfaces | ( | Json::Value & | existingIface, |
Json::Value & | newIface, | ||
std::string const & | detail | ||
) |
Definition at line 63 of file NormalizeDeviceDescriptor.cpp.
void osvr::common::appendCurrentIface | ( | Json::Value & | augInterface, |
Json::Value & | currInterface | ||
) |
appends json value for a given string
Definition at line 68 of file NormalizeDeviceDescriptor.cpp.
|
inline |
Helper, converts old-style tracker source into normal. For a little backward-compatibility.
Definition at line 43 of file ParseAlias.cpp.
|
inline |
Internal method for parsing a path and getting or creating the nodes along it.
path | An absolute path (beginning with /) or a path relative to the node (no leading /) - a trailing slash is trimmed silently |
node | A node of a tree. If a leading slash is found on the path, the node will be used to find the root, otherwise it is considered the place to which the given path is relative. |
permitParent | An optional flag indicating if ".." is permitted as a component of the path, moving to the parent level. |
If nodes do not exist, they are created as default. An empty path results in returning the same node provided. A component of a path equal to "." is effectively ignored ("current directory" behavior)
exceptions::EmptyPathComponent,exceptions::ForbiddenParentPath,exceptions::ImpossibleParentPath |
Definition at line 166 of file PathParseAndRetrieve.h.
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
This version works with const trees, and does not create missing children: instead it throws util::tree::NoSuchChild.
Definition at line 179 of file PathParseAndRetrieve.h.
|
inline |
Internal method for parsing a path and getting or creating the nodes along it.
path | An absolute path (beginning with /) - a trailing slash is trimmed silently |
root | The root node of a tree. This is not checked at runtime (just a debug assert) since this should only be called from safe, internal locations! |
If nodes do not exist, they are created as default
exceptions::PathNotAbsolute,exceptions::EmptyPath,exceptions::EmptyPathComponent,exceptions::ForbiddenParentPath |
Definition at line 201 of file PathParseAndRetrieve.h.
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Definition at line 220 of file PathParseAndRetrieve.h.
|
related |
Definition at line 103 of file PathTree.cpp.
|
inline |
Given a container of weak ptrs to some type and a functor that operates on references to that type, go through all elements of the container in a single pass, calling the functor on those elements still valid, and removing those invalid ones. (Uses member function resize with two iterators)
Definition at line 54 of file PathTreeOwner.cpp.
|
inline |
Given a node, if it's null, try to infer from the parent what it should be.
Right now can only infer that the children of an interface are sensors.
Not null.
Definition at line 51 of file ResolveTreeNode.cpp.