16#ifndef BIFROSTGRAPH_EXECUTOR_WATCHPOINT_H
17#define BIFROSTGRAPH_EXECUTOR_WATCHPOINT_H
19#include <BifrostGraph/Executor/internal/ExecutorExport.h>
33#define WATCHPOINT_DEPRECATED(REASON)
34#elif defined(__clang__)
35#define WATCHPOINT_DEPRECATED(REASON) [[deprecated(REASON)]]
36#elif defined(__GNUC__)
37#define WATCHPOINT_DEPRECATED(REASON) __attribute__((deprecated))
39#define WATCHPOINT_DEPRECATED(REASON)
51class WatchpointLayoutFactory;
52class WatchpointLayoutPath;
53class WatchpointLayoutPtr;
137 static const
char* createFuncName() noexcept;
140 virtual
void deleteThis() noexcept = 0;
155 virtual
void getSupportedTypeNames(
StringArray& names) const noexcept;
165 virtual
void getSupportedTypeIds(
TypeIdArray& typeIds) const noexcept = 0;
170 const
void* valueData);
176 virtual
CallBack getCallBackFunction(const
Amino::TypeId& typeId) const noexcept = 0;
183 virtual
CallBack getCallBackFunction(const
Amino::Type& type) const noexcept;
186 class BIFROSTGRAPH_EXECUTOR_SHARED_DECL
Watcher {
188 enum class Flags :
unsigned { kNone = 0, kWithinALoop = 1 };
194 virtual
void deleteThis() noexcept = 0;
240 Amino::Any const& any) const noexcept;
250 Amino::Any const& any,
264 virtual
bool getAvailableParameters(const
Amino::Type& type,
280 virtual
bool getParameterDetails(const
Amino::Type& type,
295 explicit Records(
const Amino::WatchPoint& watchpoint)
noexcept;
303 bool getSetting(const
String& parameter,
String& value) const noexcept;
306 virtual
void clear() noexcept = 0;
310 virtual
void erase(const
String& parameter) noexcept = 0;
315 virtual
void set(const
String& parameter, const
String& value) noexcept = 0;
325 virtual
void add(const
String& parameter, const
String& value) noexcept = 0;
334 Impl* m_pImpl =
nullptr;
347 virtual const
void* createClientData(const
Amino::Type& type,
Records& records) const noexcept;
358 virtual
bool releaseClientData(const
Amino::Type& type, const
void* clientData) const noexcept;
361 enum class
Field :
char { eIndex, eValue, eElement };
365 enum class Order :
char { eAscending, eDescending };
371 : m_order(order), m_field(
Field::eElement), m_elementName(
std::move(elementName)) {}
396 : m_conjunction(conjunction),
397 m_operation(operation),
398 m_field(
Field::eValue),
399 m_value(
std::move(value)),
405 : m_conjunction(conjunction),
406 m_operation(operation),
407 m_field(
Field::eElement),
408 m_value(
std::move(elementValue)),
409 m_elementName(
std::move(elementName)) {}
411 : m_conjunction(conjunction),
412 m_operation(operation),
414 m_value(
std::move(value)),
418 : m_conjunction(conjunction),
420 m_subFilters(
std::move(subFilters)) {}
426 Conjunction::eAnd, operation,
std::move(elementName),
std::move(elementValue)) {}
451 Indices& out_indices)
const noexcept;
A resizable container of contiguous elements.
C++ representation of integral and floating point Amino data types at runtime.
Type identifier for types.
#define WATCHPOINT_DEPRECATED(REASON)
unsigned long long ulong_t
Type alias for Amino's ulong type, an unsigned 64-bit integer.
Generic value class that allows for storage of a value of any type.
Define a Amino array of elements of type T.
The string class used by Amino.
BifrostGraph Executor Watchpoint.
Field
Field enumerants for indices sorter and filters.
void(*)(const void *clientData, Amino::ulong_t locationID, const void *valueData) CallBack
Callback function signature.
BifrostGraph::Executor::Watchpoint *(*)() CreateFunc
The signature of the function used to create the Watchpoint.
virtual bool getIndices(Amino::Any const &any, Filters const &filters, Sorter const &sorter, Indices &out_indices) const noexcept
Implemenation helper to return the indices of an array value for given filters and sorter settings.
virtual ~Watchpoint() noexcept
Destructor.
Amino::Array< String > StringArray
Watchpoint(String name) noexcept
Constructor.
The interface to get the watchpoint layout and value.
An interface for the watchpoints to manage recorded values.
Records(const Amino::WatchPoint &watchpoint) noexcept
virtual ~Records() noexcept
Structure that holds the sorting settings for getIndices.
Amino::String m_elementName
Sorter(Order order, Amino::String elementName)
Sorter(Order order, Field field)
Structure that holds the filtering settings for getIndices.
Filter(Conjunction conjunction, Operation operation, Amino::String elementName, Amino::Any elementValue)
Filter(Operation operation, Field field, Amino::Any value)
Filter(Conjunction conjunction, Operation operation, Amino::Any value)
Filter(Conjunction conjunction, Filters subFilters)
Filter(Operation operation, Amino::Any value)
Filter(Filters subFilters)
Filter(Operation operation, Amino::String elementName, Amino::Any elementValue)
Amino::String m_elementName
Conjunction m_conjunction
Filter(Conjunction conjunction, Operation operation, Field field, Amino::Any value)
A smart pointer on WatchpointLayout objects allowing them to be easily shared and managed.
Layout factory to build layouts for types and/or values.
Path to an element in a layout.