Non-templated base class for generic parameter access and iteration. More...
#include <Parameter.hpp>
Classes | |
class | ParameterValueIterator |
Generic value iterator for a SINGLE parameter which represents values ONLY as std::string. More... | |
Public Types | |
typedef class sparta::ParameterBase::ParameterValueIterator | const_iterator |
Generic value iterator for a SINGLE parameter which represents values ONLY as std::string. | |
![]() | |
typedef uint64_t | node_uid_type |
Type of unique-identifier assigned to every node. | |
typedef std::vector< TreeNode * > | ChildrenVector |
Vector of TreeNode children. | |
typedef std::vector< std::string > | AliasVector |
Vector of aliases (other names for this node) | |
typedef std::multimap< std::string, TreeNode * > | ChildNameMapping |
Mapping of names, aliases, and groups to individual child nodes within one node. This must be in a deterministic order, so an ordered container (e.g. std::map) is required. A sorted contained is probably desirable, but not required. | |
typedef uint32_t | group_idx_type |
Index within a group. | |
typedef std::weak_ptr< TreeNode > | WeakPtr |
Weak pointer to a TreeNode. Acquire with getWeakPtr. | |
typedef std::weak_ptr< const TreeNode > | ConstWeakPtr |
Weak pointer to a const TreeNode. Acquire with getWeakPtr. | |
typedef std::shared_ptr< TreeNode > | SharedPtr |
Shared pointer to TreeNode. Acquire with WeakPtr::lock(). | |
typedef std::map< const std::string *, std::vector< TreeNode * > > | TagsMap |
Map of strings (interned in StringManager) tags to TreeNodes. | |
![]() | |
enum | TreePhase { TREE_BUILDING = 0 , TREE_CONFIGURING = 1 , TREE_FINALIZING = 2 , TREE_FINALIZED = 3 , TREE_TEARDOWN = 4 } |
Current phase of tree construction (applies to node and entire tree). More... | |
Public Member Functions | |
ParameterBase (const std::string &name, const std::string &desc) | |
Constructor. | |
virtual | ~ParameterBase () |
Destructor. | |
void | setIsVolatile () |
Set volatile flag (allows write after read) | |
bool | isVolatile () const |
Is this a volatile parmaeter? | |
virtual const std::string | getTypeName () const =0 |
Gets the compiler-independent readable type string of the value currently held. | |
virtual std::string | getDefaultAsString () const =0 |
Gets the default value of this Parameter as a string. | |
virtual bool | isDefault () const |
Is this parameter's current value the default value. | |
virtual std::string | getValueAsString () const =0 |
Gets the current value of this Parameter as a string. | |
virtual std::string | getValueAsStringAt (size_t idx, bool peek=false) const =0 |
Gets the current value of this Parameter as a string at a particular index as if this Parameter were a vector. | |
virtual std::string | getItemValueFromString (const std::vector< uint32_t > &indices, bool peek=false) const =0 |
Gets the current value of a single element within this parameter of the parameter as if this parameter were a N-dimensional vector. | |
std::string | peekItemValueFromString (const std::vector< uint32_t > &indices) const |
Wrapper for getItemValueFromString with peek=true. | |
template<class T > | |
const T | getValueAs () const |
Gets the value of this ParameterBase as a templated type T if this parameter actually contains a value of type T. | |
virtual bool | isVector () const =0 |
Determines whether this Parameter is a vector or a scalar Parameter. | |
virtual uint32_t | getDimensionality () const =0 |
Determines the number of dimensions of this Parameter. A scalar has 0 dimensions. A parameter of type vector<uint32_t> would have a dimensionality of 1. vector<vector<uint32_t>> would have a dimensionality of 2. | |
virtual uint32_t | getVectorSizeAt (const std::vector< uint32_t > &indices, bool peek=false) const =0 |
Determines the size of a vector contained by this parameter at the location specified by indices. | |
uint32_t | peekVectorSizeAt (const std::vector< uint32_t > &indices) const |
Wrapper of getVectorSizeAt with peek=true. | |
virtual size_t | getNumValues (bool peek=false) const =0 |
Gets the number of elements contained in this Parameter as a Vector. | |
size_t | peekNumValues () const |
Wrapper for getNumValues with peek=true. | |
virtual double | getDoubleValue () const =0 |
Gets the value of this parameter as a double. \thwo Exception if underlying parameter type is not numeric. | |
virtual const_iterator | begin () const =0 |
Gets a beginning const_iterator for values of this Parameter. | |
virtual const_iterator | end () const =0 |
Gets an ending const_iterator for values of this Parameter. | |
virtual bool | isDefaultOverridden () const =0 |
Has the default value (NOT the current value) for parameter been overridden in any way (including partially changed). | |
virtual void | overrideDefaultFromString (const std::string &val)=0 |
Sets the default value of this non-vector parameter for architecture baseline configuration purposes. | |
virtual void | overrideDefaultFromStringVector (const std::vector< std::string > &val)=0 |
Sets the default value of this vector parameter for architecture baseline configuration purposes. | |
virtual void | overrideDefaultItemValueFromString (const std::vector< uint32_t > &indices, const std::string &str)=0 |
Partially override the default default value in some element at an n-dimensional array specified. | |
virtual void | overrideDefaultResizeVectorsFromString (const std::vector< uint32_t > &indices)=0 |
Override the default value by clearing the possibly-nested vector (if this parameter is a vector). The nested vector contens can then be set by overrideDefaultItemValueFromString. | |
virtual void | overrideDefaultClearVectorValue ()=0 |
If the parameter is a vector type, clears the default value so that it becomes an empty vector (regardless of dimensionality) | |
void | restoreValueFromDefault () |
Attempts to restore the devalue value of this parameter. | |
void | setValueFromString (const std::string &str, bool poke=false) |
Attempts to assign a value to this non-vector Parameter from a string. | |
void | setValueFromStringVector (const std::vector< std::string > &str, bool poke=false) |
Attempts to assign a value to this vector Parameter from a string. | |
void | setItemValueFromString (const std::vector< uint32_t > &indices, const std::string &str) |
Attempts to assign a value to this nested vector Parameter from a string at a position within the vector indicated by indices. | |
virtual bool | equals (const ParameterBase &other)=0 |
Returns true if the value of this equals other . | |
virtual void | resizeVectorsFromString (const std::vector< uint32_t > &indices)=0 |
Attempt to resize a vector nested within this parameter to contain the vector indicated by indices. | |
virtual void | clearVectorValue ()=0 |
If the parameter is a vector type, clears the value so that it becomes an empty vector (regardless of dimensionality) | |
virtual std::string | stringize (bool pretty=false) const override |
Render description of this parameter as a string. | |
virtual bool | validateIndependently (std::string &err_names) const =0 |
Performs validation independently of all other Parameters. | |
virtual bool | validateDependencies (const TreeNode *node, std::string &err_names) const =0 |
Performs validation based on other Parameters in the Device Tree. | |
void | associateParametersForModification (std::vector< const ParameterBase * > params, const sparta::SpartaHandler &modifier_callback) |
Associate a parameter with this parameter for future modification. | |
![]() | |
const Clock * | getClock () override |
Walks up parents (starting with self) until a parent with an associated local clock is found, then returns that clock. | |
const Clock * | getClock () const |
const Clock * | getLocalClock () |
Gets the clock associated directly with this Node. This is useful for configuration and simulator debug, but not at run-time. | |
const Clock * | getLocalClock () const |
virtual void | setClock (const Clock *clk) |
Assigns a clock to this node. This clock will then be accessed by any descendant which has no assigned clock or an ancestor with an assigned clock between that descendant and this node. getClock returns the Clock associated with the nearest ancestor. | |
Scheduler * | getScheduler (const bool must_exist=false) |
Get the scheduler associated with this tree node's root. | |
const Scheduler * | getScheduler (const bool must_exist=false) const |
WeakPtr | getWeakPtr () |
Gets a weak pointer to this TreeNode. This weak pointer is guaranteed to expire when this TreeNode is destructed unless locked. | |
ConstWeakPtr | getWeakPtr () const |
Const variant of getWeakPtr. | |
virtual void | addLink (TreeNode *node, const std::string &label) |
Link this tree node with another tree node. | |
virtual void | activateLink (const std::string &label) |
Activate one of the links added with addLink. | |
TreeNode ()=delete | |
Not default-constructable. | |
TreeNode (const TreeNode &)=delete | |
Not copy-constructable. | |
TreeNode (TreeNode &&rhp) | |
Move constructor. | |
TreeNode & | operator= (const TreeNode &)=delete |
Not assign-constructable. | |
TreeNode (TreeNode *parent, const std::string &name, const std::string &group, group_idx_type group_idx, const std::string &desc, bool is_indexable) | |
TreeNode full constructor. Initializes node and adds it as a child of an existing tree node (if parent is not null). | |
TreeNode (TreeNode *parent, const std::string &name, const std::string &group, group_idx_type group_idx, const std::string &desc) | |
TreeNode constructor with no is_indexable parameter [defaults to true]. | |
TreeNode (const std::string &name, const std::string &group, group_idx_type group_idx, const std::string &desc) | |
TreeNode constructor with no parent Node. | |
TreeNode (TreeNode *parent, const std::string &name, const std::string &desc) | |
TreeNode constructor with no group information. | |
TreeNode (TreeNode *parent, const std::string &group, group_idx_type group_idx, const std::string &desc) | |
TreeNode constructor for anonymous node with group information. | |
TreeNode (const std::string &name, const std::string &desc) | |
TreeNode constructor with no parent node or group information. | |
virtual | ~TreeNode () |
Virtual destructor. | |
void | addAlias (const std::string &alias) |
Add a single alias for this node. | |
void | addAliases (const AliasVector &v) |
Adds each element of a vector of aliases to this node.. | |
void | addTag (const std::string &tag) |
Adds single tag to this node. | |
void | addTags (const std::vector< std::string > &v) |
Adds each elements of a vector of tags to this node. | |
void | stringizeTags (std::stringstream &ss) const |
Render tags to a string in the form: " tags:[tag0, tag1]" If there are any tags. The leading space makes this a useful sub-utility of stringize because if there are no tags, returns empty string with no leading space. | |
node_uid_type | getNodeUID () const |
Gets the unique ID of this node. | |
const std::string & | getName () const override |
Gets the name of this node. | |
const std::string * | getNamePtr () const |
Gets the name of this node's string pointer which isinterned in StringManager) | |
bool | isAnonymous () const |
Is this node anonymous. | |
bool | isExpired () const |
Is this expired (i.e. has it been the rhp of a move constructor) | |
bool | isIndexableByGroup () const |
Returns whether this object is accessible through its parent's interfaces for getting children by group and index. | |
const std::string & | getGroup () const |
Gets the group name of this node. | |
const std::string * | getGroupNamePtr () const |
Gets the group name string pointer (interned in StringManager singleton) of this node. | |
group_idx_type | getGroupIdx () const |
Gets the group index of this node. | |
const std::vector< const std::string * > & | getTags () const |
Gets the set of tags associated with this TreeNode. | |
bool | hasTag (const std::string &tag) const |
Does this node have a specific tag (by name) | |
bool | hasTag (const std::string *interned_tag_name) const |
Does this node have a specific tag (by string pointer interned with StringManager). This is faster than the alternate hasTag method because it relies only on pointer comparisons. | |
const std::string & | getDesc () const |
Gets the description of this node. | |
bool | isBuiltin () const |
Is this node in the builtins group. | |
void | markHidden (bool hidden=true) |
Marks this TreeNode hidden for the purposes of printint out nodes. This does not make the node inaccessible, but causes it (and its subtree) to be hidden from typical recursive tree printouts. | |
bool | isHidden () const |
Is this TreeNode supposed to be hidden during tree printouts This value does not have to be respected by anything using TreeNode and is mainly a UI/printout convenience. | |
void | validateName (const std::string &nm) |
Validates the given name string for this TreeNode. Does not consider context (e.g. name collisions) | |
void | validateGroup (const std::string &name, const std::string &group, group_idx_type idx) |
Validates the given group name string and group index for this TreeNode. Does not consider context (e.g. name collisions) | |
void | validateDesc (const std::string &desc) |
Validates the given description string for this TreeNode. | |
void | addExtensionParameters (const std::string &extension_name, std::unique_ptr< ParameterSet > extension_params) |
Add a named parameter set to extend this tree node's metadata. | |
void | addExtensionFactory (const std::string &extension_name, std::function< ExtensionsBase *()> factory) |
Add an extension factory to this tree node by its type (name). This method does not actually create any objects at this time. It will validate and create the extension only if asked for later on during simulation. | |
ExtensionsBase * | getExtension (const std::string &extension_name) |
Get an extension object by type string. Returns nullptr if not found (unrecognized). | |
ExtensionsBase * | getExtension () |
Get an extension without needing to specify any particular type string. If no extensions exist, returns nullptr. If only one extension exists, returns that extension. If more than one extension exists, throws an exception. | |
const std::set< std::string > & | getAllExtensionNames () |
Extension names, if any. Tree node extensions are typically instantiated on-demand for best performance (you have to explicitly ask for an extension by its name, or it won't be created) - so note that calling this method will trigger the creation of all this node's extensions. The performance cost is proportional to the number of nodes in the virtual parameter tree. | |
void | addChild (TreeNode *child, bool inherit_phase=true) |
Adds a TreeNode to this node as a child. | |
void | addChild (TreeNode &child) |
AddChild by reference for convenience. | |
void | makeSubtreePrivate () |
Make the entire subtree private. | |
void | setScopeRoot () |
bool | isScopeRoot () const |
void | lockdownParameters () |
Method to put the device tree in lockdown phase. All LOCKED and HIDDEN parameters are frozen after this point. Regular parameters are not affected by this phase. This method requires a Simulation pointer and will assert at compile time if anyone tries to lockdown the tree without the context of a Simulation. | |
virtual bool | isAttached () const |
Is this node part of a device tree with a proper RootTreeNode at the root. | |
virtual TreeNode * | getParent () |
Gets immediate parent of this node if one exists. | |
virtual const TreeNode * | getParent () const |
template<class T , typename = typename std::enable_if<std::is_pointer<T>::value>::type> | |
const T | getParentAs (bool must_exist=true) const |
Retrieves a parent casted to type T* if this node has a parent. | |
template<class T , typename = typename std::enable_if<!std::is_pointer<T>::value>::type> | |
const T * | getParentAs (bool must_exist=true) const |
template<class T , typename = typename std::enable_if<std::is_pointer<T>::value>::type> | |
T | getParentAs (bool must_exist=true) |
template<class T , typename = typename std::enable_if<!std::is_pointer<T>::value>::type> | |
T * | getParentAs (bool must_exist=true) |
virtual TreeNode * | getRoot () |
Gets farthest ancestor of this node. | |
virtual const TreeNode * | getRoot () const |
TreeNode * | getScopeRoot () |
const TreeNode * | getScopeRoot () const |
const TreeNode * | getExpectedRoot () const |
build-time equivalent to getRoot before an object is actually attached to a tree. This is a mainly a framework and debugging tool for determining what the root of a node being constructed will be when complete | |
app::Simulation * | getSimulation () const |
Gets the simulation (if any) associated with this tree. | |
uint32_t | getNumChildren () const |
Gets the number of children that this node has including those in the sparta builtins group. | |
TreeNode * | getChildAt (uint32_t idx) const |
Gets a child at a position in the children vector in the order in which they were added to this node. | |
const ChildrenVector | getChildren () const |
Gets a vector of all children of this node in any group in the order in which they were added to this node. | |
uint32_t | getChildren (std::vector< TreeNode * > &results, bool ignore_builtin_group=true, bool ignore_anonymous_nodes=true) |
Gets all children of this node in the order in which they were added to this node. | |
template<class T > | |
uint32_t | getChildrenOfType (std::vector< T * > &results) const |
return all the children matching a particular type using dynamic cast. | |
sparta::TreeNode * | findAncestorByName (const std::string &name) |
Find ancestor by name. | |
template<typename T > | |
sparta::TreeNode * | findAncestorByType () |
Find ancestor by type. | |
sparta::TreeNode * | findAncestorByTag (const std::string &tag) |
Find the first ancestor with a particular tag. | |
template<typename T > | |
T * | findAncestorResourceByType () |
Find an ancestor's resource with a certain type. | |
const AliasVector & | getAliases () const |
Gets a vector of all aliases of this node. | |
uint32_t | getChildrenIdentifiers (std::vector< std::string > &idents, bool ignore_builtin_group=true) const |
Gets all child identifiers, aliases, group names, and group-aliases which can be used to refer to a child of this node. | |
std::vector< const std::string * > | getIdentifiers () const |
Gets all the identifiers for this node (excluding groups) | |
uint32_t | getGroupSize (const std::string &group) |
Gets the number of nodes in a group. | |
group_idx_type | getGroupIndexMax (const std::string &group) |
Gets the largest index of a node in the given group. | |
uint32_t | getGroup (const std::string &group, std::vector< TreeNode * > &results) |
Gets all nodes in a child group. | |
uint32_t | findChildren (const std::string &pattern, std::vector< TreeNode * > &results, std::vector< std::vector< std::string > > &replacements) |
Finds all children starting at this node with a given pattern relative to this node by matching names an aliases. Appends each found child to <results>. | |
uint32_t | findChildren (const std::string &pattern, std::vector< TreeNode * > &results) |
Version of findChildren with no replacements vector. | |
virtual uint32_t | findImmediateChildren_ (std::regex &expr, std::vector< TreeNode * > &found, std::vector< std::vector< std::string > > &replacements, bool allow_private=false) |
Finds immediate children with some identity (name or alias) matching a regex. | |
uint32_t | findImmediateChildren_ (std::regex &expr, std::vector< TreeNode * > &found, bool allow_private=false) |
Variant of findImmediateChildren_ with no replacements vector. | |
virtual uint32_t | findImmediateChildren_ (std::regex &expr, std::vector< const TreeNode * > &found, std::vector< std::vector< std::string > > &replacements, bool allow_private=false) const |
Const-qualified variant of findImmediateChildren_. | |
uint32_t | findImmediateChildren_ (std::regex &expr, std::vector< const TreeNode * > &found, bool allow_private=false) const |
Variant of const-qualified findImmediateChildren_ with no replacements vector. | |
bool | locationMatchesPattern (const std::string &pattern, const TreeNode *pat_loc) const |
Determines if the given pattern (which may contain wildcards) can describe this node. | |
TreeNode * | getChild (const std::string &name, bool must_exist=true) |
Retrieves a child with this dotted path name. | |
const TreeNode * | getChild (const std::string &name, bool must_exist=true) const |
Overloaded const-qualified. | |
std::string | getDeepestMatchingPath (const std::string &path) const |
Gets the deepest whole node location starting from this node that matches some part of path starting at its beginning. | |
bool | hasChild (const std::string &name) const noexcept |
Determines if a child can be found with the given dotted path. | |
bool | hasImmediateChild (const TreeNode *n) const noexcept |
Determines if the node n is an immediate child of this node. | |
template<class T , typename = typename std::enable_if<std::is_pointer<T>::value>::type, class ConstT = typename ptr_to_const_obj_ptr<T>::type> | |
const ConstT | getChildAs (const std::string &name, bool must_exist=true) const |
Retrieves a child that is castable to T with the given dotted path. | |
template<class T , typename = typename std::enable_if<!std::is_pointer<T>::value>::type> | |
const T * | getChildAs (const std::string &name, bool must_exist=true) const |
template<class T , typename = typename std::enable_if<std::is_pointer<T>::value>::type> | |
T | getChildAs (const std::string &name, bool must_exist=true) |
template<class T , typename = typename std::enable_if<!std::is_pointer<T>::value>::type> | |
T * | getChildAs (const std::string &name, bool must_exist=true) |
template<class T , typename = typename std::enable_if<std::is_pointer<T>::value>::type, class ConstT = typename ptr_to_const_obj_ptr<T>::type> | |
ConstT | getAs () const |
Retrieves this node after casting to type T. | |
template<class T , typename = typename std::enable_if<!std::is_pointer<T>::value>::type> | |
const T * | getAs () const |
Retrieves this node after casting to type const T. | |
template<class T , typename = typename std::enable_if<std::is_pointer<T>::value>::type> | |
T | getAs () |
Retrieves this node after casting to type const T. | |
template<class T , typename = typename std::enable_if<!std::is_pointer<T>::value>::type> | |
T * | getAs () |
Retrieves this node after casting to type const T. | |
uint32_t | findChildrenByTag (const std::string &tag, std::vector< TreeNode * > &results, int32_t max_depth=-1) |
Finds a set of all children having the selected tag which this node or descendants of this node within a distance of the given max_depth. | |
bool | isDescendantOf (const TreeNode *ancestor, int32_t max_depth=-1) const |
Determines if this node is a descendant of the specified ancestor node within some number of generations (depth). | |
std::string | getLocation () const override final |
std::string | getDisplayLocation () const |
Returns the location of this node in the device tree which might not be usable for navigating the device tree (it cannot be used as an argument for getChild/findChildren). | |
std::string | getExpectedLocation () const |
build-time equivalent to getLocation before an object is actually attached to a tree. This is a mainly a framework and debugging tool for determining what the location of a node currently being constructed will be when complete. | |
std::string | renderSubtree (int32_t max_depth=-1, bool show_builtins=false, bool names_only=false, bool hide_hidden=false, bool(*leaf_filt_fxn)(const TreeNode *)=nullptr) const |
Renders the subtree starting at this node as a string containing an indentation-based depth-first representation. | |
uint32_t | getLevel () const |
Gets the level of this node. 0 is root. | |
template<typename T > | |
uint32_t | getRecursiveNodeCount () const |
Recursively gets the count of a nodes that are a subclass of a particular type (determined by dynamic_cast). Includes all descendants of this node in the tree, but excludes this node. | |
uint32_t | getPossibleNotifications (std::vector< NotificationInfo > &infos) const |
Gets information on the possible notifications generated by this node (excludes children). | |
void | dumpPossibleNotifications (std::ostream &o) const noexcept |
Dumps a listing of the notifications which this node can generate to the ostream o. | |
template<typename DataT = ANY_TYPE> | |
uint32_t | locateNotificationSources (std::vector< TreeNode * > &nodes, const std::string &name="") |
Gets all possible notification info from NotificationSources within this node's subtree. | |
template<typename DataT = ANY_TYPE> | |
void | dumpLocatedNotificationSources (std::ostream &o, const std::string &name="") |
Retrieves the relevant NotificationSources from locateNotificationSources and prints them to the output o. | |
uint32_t | getPossibleSubtreeNotifications (std::vector< NotificationInfo > &infos) const noexcept |
Gets information on the possible notifications generated by this node and all its descendants. | |
void | dumpPossibleSubtreeNotifications (std::ostream &o) const noexcept |
Dumps a listing of the notifications which this node and its descendants can generate to the ostream o. | |
bool | canGenerateNotification (const std::type_info &tinfo, const std::string *name) const |
Can this TreeNode generate a notification of the given type having the given name or pattern. | |
bool | canGenerateNotification (const std::type_info &tinfo, const std::string &name) const |
Can this TreeNode generate a notification of the given type having the given name (does not require interned string - will intern automatically with StringManager). | |
bool | canGenerateNotification (const NotificationInfo &info) const |
Can this TreeNode generate a notification of the given NotificationInfo. | |
bool | canSubtreeGenerateNotification (const std::type_info &tinfo, const std::string *name) const |
Can this TreeNode or its descendants (of any distance) generate a notification of the given type having the given name. | |
bool | canSubtreeGenerateNotification (const std::type_info &tinfo, const std::string &name) const |
Can this TreeNode or its descendants (of any distance) generate a notification of the given type having the given name (does not require interned string) | |
bool | canSubtreeGenerateNotifications (const std::type_info &tinfo, const std::vector< const std::string * > &names) const |
Checks to see if any a subtree can generate any of several notification names which may be patterns. | |
template<typename DataT , typename T , void(T::*)(const TreeNode &, const TreeNode &, const DataT &) TMethod> | |
void | registerForNotification (T *obj, const std::string &name, bool ensure_possible=true) |
Registers a callback method to listen for all notifications having the specified data type DataT and name (or any name if name is "") occuring on this node or any descendant (subtree). | |
template<typename DataT , typename T , void(T::*)(const DataT &) TMethod> | |
void | registerForNotification (T *obj, const std::string &name, bool ensure_possible=true) |
template<typename DataT , typename T , void(T::*)(const TreeNode &, const TreeNode &, const DataT &) TMethod> | |
void | deregisterForNotification (T *obj, const std::string &name) |
Removes at most one registration made with registerForNotification. | |
template<typename DataT , typename T , void(T::*)(const DataT &) TMethod> | |
void | deregisterForNotification (T *obj, const std::string &name) |
bool | hasObserversRegisteredForNotification (const std::type_info &tinfo, const std::string *name) const noexcept |
Determines if this TreeNode (not descendants) has any observers for this type of event and name. | |
void | getDelegatesRegisteredForNotification (const std::type_info &tinfo, const std::string *name, std::vector< delegate > &dels) noexcept |
Gets the vector of delegates registered for a notification on this TreeNode. | |
![]() | |
ResourceContainer () | |
Consturct with a null, unlocked resource. | |
ResourceContainer (const ResourceContainer &)=delete | |
Copy construction disbled. | |
ResourceContainer (ResourceContainer &&)=default | |
Move constructor. | |
virtual | ~ResourceContainer () |
Destructor. | |
Resource * | getResource () |
Gets the resource contained by this node if any. May only be called after finalization begins or during teardown. | |
const Resource * | getResource () const |
Const variant of getResource. | |
bool | hasResource () const |
Determines if this node has a resource. This method exists in case the TreeNode is being explored by a tool or interactive UI. Typical TreeNode clients (such as Resources) will assume that there is a resource if they are expecting one. | |
template<class T , typename = typename std::enable_if<std::is_pointer<T>::value>::type> | |
const T | getResourceAs () const |
Gets the resource contained by this node (if any) as the given type. | |
template<class T , typename = typename std::enable_if<!std::is_pointer<T>::value>::type> | |
const T * | getResourceAs () const |
Overload of getResourceAs for const access with a non-pointer template type. | |
template<class T , typename = typename std::enable_if<std::is_pointer<T>::value>::type> | |
T | getResourceAs () |
Non-const overload of getResourceAs. | |
template<class T , typename = typename std::enable_if<!std::is_pointer<T>::value>::type> | |
T * | getResourceAs () |
Non-const overload of getResourceAs. | |
virtual std::string | getResourceType () const |
Gets the typename of the resource that this node will eventually contain. | |
virtual std::string | getResourceTypeRaw () const |
Gets the typename of the resource that this node will eventually contain. | |
![]() | |
PhasedObject (PhasedObject &&)=default | |
TreePhase | getPhase () const |
Gets the trees current phase. | |
virtual bool | isBuilding () const |
Is this node (and thus the entire tree above and below it) currently in the TREE_BUILDING phase. | |
virtual bool | isBuilt () const |
Is this node (and thus the entire tree above it) "built". Checks that getPhase has passed TREE_BUILDING. | |
virtual bool | isConfigured () const |
Is this node (and thus the entire tree above it) "configured". Checks that getPhase has passed TREE_CONFIGURING (i.e. FINALIZED, FINALIZING, TEARDOWN, etc). | |
virtual bool | isConfiguring () const |
Is this node (and thus the entire tree above it) currently in the TREE_CONFIGURING phase. | |
virtual bool | isFinalizing () const |
Is this node (and thus the entire tree above it) "finalized". | |
virtual bool | isFinalized () const |
Is this node (and thus the entire tree above it) "finalized". | |
virtual bool | isTearingDown () const |
Is this node (and thus the entire tree above it) in the "teardown" phase. | |
![]() | |
std::vector< ArchData * > | getAssociatedArchDatas () |
Retrieves all ArchDatas associated with this TreeNode so that children can use it to allocate their data. | |
const std::vector< ArchData * > | getAssociatedArchDatas () const |
Const variant of getAssociatedArchDatas. | |
ArchDataContainer ()=default | |
Default constructor. | |
ArchDataContainer (ArchDataContainer &)=delete | |
Copy construction disabled. | |
ArchDataContainer (ArchDataContainer &&)=default | |
Move constructor. | |
virtual | ~ArchDataContainer () |
Virtual destructor. | |
Static Public Attributes | |
static constexpr char | PARAMETER_NODE_TAG [] = "SPARTA_Parameter" |
Tag added to Parameter nodes. | |
![]() | |
static const group_idx_type | GROUP_IDX_NONE = (group_idx_type)-1 |
GroupIndex indicating that a node has no group index because it belongs to no group. | |
static const node_uid_type | MAX_NODE_UID |
Maximum value of node_uid_ before the framework throws an exception. | |
static constexpr char | GROUP_NAME_NONE [] = "" |
Group name indicating that a node belongs to no group. | |
static constexpr char | NODE_NAME_NONE [] = "" |
Node name for anonymous node. | |
static const std::string | DEBUG_DUMP_SECTION_DIVIDER |
String dividing sections in a debug dump file. | |
static constexpr char | NODE_NAME_VIRTUAL_GLOBAL [] = "_SPARTA_virtual_global_" |
Node name for the virtual glopbal node. | |
static constexpr char | LOCATION_NODE_SEPARATOR_ATTACHED = '.' |
Separator character between node identifiers in a location string when the child is attached to the parent. | |
static constexpr char | LOCATION_NODE_SEPARATOR_EXPECTING = ',' |
Separator character between node identifiers in a location string when the child is being attached to the parent but has not been entirely attached (i.g. during construction of the child node) | |
static constexpr char | LOCATION_NODE_SEPARATOR_UNATTACHED = '~' |
Separator character preceding a node identifiers in a location string when that node has no parent and is not in the process of being attached to one. | |
static const uint32_t | RENDER_SUBTREE_INDENT = 2 |
Spaces to indent for each tree level in sparta::TreeNode::renderSubtree. | |
static constexpr char | GROUP_NAME_BUILTIN [] = "_SPARTA_builtin_group_" |
Reserved name for built-in nodes. | |
static const uint64_t | CHILD_FIND_THRESHOLD = 100000 |
Threshold for number of findChildren calls after finalization before a warning message is printed about framework misuse. | |
static const uint64_t | CHILD_GET_THRESHOLD = 100000 |
Threshold for number of getChild calls after finalization before a warning message is printed about framework misuse. | |
static const uint32_t | TEARDOWN_ERROR_LIMIT = 5 |
Number of teardown-phase-related messages that can be printed before the rest will be suppressed. | |
static const std::vector< std::pair< const char *, std::function< void(std::string &)> > > | TREE_NODE_PATTERN_SUBS |
List of pattern susbtitutions when creating a search pattern from a TreeNode name containing wildcards. | |
Access Counting | |
class | ParameterSet |
sparta::SpartaHandler | modifier_callback_ |
Modifier callback called when the parameter is written. | |
bool | ignored_ |
Has this parameter been ignored. Resettable. Mutable so that it can be accessed from a const Parmeter. | |
std::string | string_quote_ |
The quote sequence for printing strings. Defaults to empty string. | |
uint32_t | getWriteCount () const |
Number of times this Parameter has been written after initialization. | |
uint32_t | getReadCount () const |
Number of times this Parameter has been read after initialization or after the last write (or explicit resetReadCount_() call) | |
bool | isReadOrIgnored () const |
Is this parameter ignored or read at least once (barring any reset of the read count or ignore flag) | |
bool | isIgnored () const |
Has this parameter been ignored (without having read count reset after) | |
virtual bool | supportsCompression () const |
Scalar parameters may compress well, but we cannot really make a strong enough determination without knowing more about the parameter. Let's disable compression for these by default. | |
virtual bool | isVisibilityAllowed () const =0 |
Query if this parameter is safe to be displayed via prints, dumps. A parameter should not be displayed if it is HIDDEN and the subtree containing this parameter is already locked. | |
std::string | setStringQuote (const std::string &s) |
Set the quote sequence for printing strings. | |
virtual void | restoreValueFromDefaultImpl_ ()=0 |
Implements restoreValueFromDefault. | |
virtual void | setValueFromStringImpl_ (const std::string &s, bool poke=false)=0 |
Implements setValueFromString. | |
virtual void | setValueFromStringVectorImpl_ (const std::vector< std::string > &str, bool poke=false)=0 |
Implements setValueFromStringVectorImpl_. | |
virtual void | setItemValueFromStringImpl_ (const std::vector< uint32_t > &indices, const std::string &str)=0 |
Implements setItemValueFromStringImpl_. | |
void | unread_ () const |
Mark this parameter as unread and unignored This is used or preloading defaults to parameters and then clearing the write count. It is intended to be used by ParameterSet. | |
void | invokeModifierCB_ () |
Invoke any register callbacks for this parameter. These callbacks are used by Parameters to make modifications to other parameters. | |
void | incrementReadCount_ () const |
Increment the number of reads that will be reported by getReadCount. | |
void | resetReadCount_ () const |
Resets the number of reads that wil be reported by getReadCount. | |
void | resetWriteCount_ () |
Resets the number of writes that wil be reported by getWriteCount. | |
void | ignore_ () const |
Flag as ignored. See Parameter<T>::ignore. | |
bool | usingFinalConfig_ () |
Ask the simulator if we are using a final config. | |
void | incrementWriteCount_ () |
Increments the number of writes that will be reported by getWriteCount. | |
void | logLoadedDefaultValue_ () const |
Log the default loaded to this parameter to the global parameters logger for debugging. | |
void | logAssignedValue_ () const |
Log the most recently assigned value given to this parameter to the global parameters logger for debugging. | |
void | addToSet_ (ParameterSet *ps) |
Add this parameter to a set - an action which is protected and requires the friendship that the Parameter<> class has. | |
static void | logCurrentBackTrace_ () |
Log the current backtrace to the global parameters logger. | |
Additional Inherited Members | |
![]() | |
static std::string | createSearchRegexPattern (const std::string &pat) |
Compute a regex pattern for a node child path containing any number of wildcard characters (not a dot-separated location) which can be used to test against child node names. | |
static bool | hasWildcardCharacters (const std::string &name) |
Determines if a given node name has any wildcard characters which will be substituted in createSearchRegexPattern. | |
static std::string | getNextName (const std::string &name, size_t &pos) |
Gets the next name between two '.' chars in a string starting at pos. | |
static bool | matchesGlobLike (const std::string &pattern, const std::string &other) |
Determine if a glob-like search pattern matches some other string. | |
static const std::map< const TreeNode *, WeakPtr > & | getParentlessNodes () |
static const std::map< const TreeNode *, WeakPtr > & | getAllNodes () |
Gets the vector of all TreeNodes currently known to be constructed. | |
static std::string | formatAllNodes () |
Prints the list of all TreeNodes currently known to be constructed. | |
static bool | isNodeConstructed (const TreeNode *) |
Is a given node constructed? | |
static TreeNode * | getVirtualGlobalNode () |
Gets the virtual global node singleton. This node can have no parent and no children. It receives notifications from all nodes in the simulator as if it were the parent of every node in the simulation that has no parent. | |
static std::vector< const std::string * > | parseNotificationNameString (const std::string &csl) |
Parses a comma-separated list of notification names (or patterns) separated by commas and ignoring whitespace around commas. | |
static bool | notificationCategoryMatch (const std::string *query_id, const std::string *node_id) |
Checks if two notification categories match where one is an actual category. | |
![]() | |
typedef std::vector< delegate > | DelegateVector |
Vector of delegates representing a list of observers to notify. | |
typedef std::map< type_info_container, DelegateVector > | NotificationObserverMap |
Map of delegate vectors containing all observers. | |
![]() | |
std::pair< uint32_t, std::string > | recursGetDeepestMatchingPath_ (const std::string &path, size_t name_pos) const |
Finds the deepest node path mathing the input path. Implements getDeepestMatchingPath. | |
void | setExpectedParent_ (const TreeNode *parent) |
Tracks a node as an expected parent without actually adding this node as a child. This is used almost exclusively for printing error messages which include a device-tree location BEFORE actually inserting this node into the device tree since node construction can fail. | |
void | enterFinalizing_ () |
Recursively enter TREE_FINALIZING phase. | |
void | finalizeTree_ () |
Recursively create resources based on tree configuration. enter_finalize_ should be invoked after this method successfully completes for an entire tree. Finalizes in the order of construction. | |
void | validateTree_ () |
Iterates the finalized tree and validates each node (e.g. ensures statistics can be evaluated) | |
void | enterFinalized_ () |
Recursively enter TREE_FINALIZED phase. | |
void | enterConfig_ () noexcept |
Recursively enter TREE_CONFIGURING phase. | |
void | bindTreeEarly_ () |
Recursively invoke TreeNode::onBindTreeEarly_ and Resource::onBindTreeEarly_ (in that order for each node) | |
void | bindTreeLate_ () |
Recursively invoke TreeNode::onBindTreeEarly_ and Resource::onBindTreeLate_ (in that order for each node) | |
void | simulationTerminating_ () |
Hook to allow simulation resources to clean-up before simulation is ended. | |
void | validatePostRun_ (const PostRunValidationInfo &info) const |
Hook to check the state of the simulator post-run and throw exceptions if something is incorrect. | |
void | dumpDebugContent_ (std::ostream &out) const noexcept |
Allows resources to write out detailed textual debugging information about the node. This is typically called by a simulator when shutting down due to an exception (or depending on simulator config). However, it could also be called at other times. | |
void | enterTeardown_ () noexcept |
Recursively enter TREE_TEARDOWN phase while alerting nodes through onEnteringTeardown_ and alterting Resources through Resource::onStartingTeardown_. Nodes already in TREE_TEARDOWN phase will not be alerted (neither will their associated Resources). All nodes are visited regardless of their parent's phase. | |
void | verifyUniqueChildIdentifier_ (const std::string &ident, bool ignore_group_collision=false) |
Verifies that the given identifier is unique for all children of this node by comparing against names, groups, and aliases. Throws SpartaException if not unique. | |
void | removeChildForTeardown_ (TreeNode *child) |
"Removes" the given child by invoking onDestroyingChild_ then removing this child from the children_ list | |
void | removeFromParentForTeardown_ (TreeNode *parent) |
Protected Wrapper for getParent()->removeChildForTeardown_ which allows subclases of TreeNode to indirectly invoke removeChildForTeardown_ with themselves as the argument. | |
void | detachFromParent_ () |
Removes a node from its parent with the expectation this node will be immediately destroyed (i.e. is an xvalue) | |
void | detachFromChildren_ () |
Removes a node from its children with the expectation this node will be immediately destroyed (i.e. is an xvalue) | |
bool | areParametersLocked_ () const |
This method informs whether the tree is past the lockdown phase for all LOCKED and HIDDEN parameters. Modifying LOCKED and HIDDEN parameters after this phase is disallowed. Tree can be locked down during TREE_BUILDING phase or TREE_CONFIGURING phase. During TREE_FINALIZING phase, all parameters are locked down as is. | |
template<typename DataT > | |
void | postPropagatingNotification_ (const TreeNode *origin, const DataT &data, const std::string *name_id) |
Starts a notification propagating up the tree. | |
template<typename DataT , typename T , void(T::*)(const TreeNode &, const TreeNode &, const DataT &) TMethod> | |
DelegateVector::iterator | findDelegate_ (DelegateVector &dvec, T *obj, const std::string &target_name) |
Finds a delegate associated with the given type T, object pointer, DataT, and TMethod within a DelevateVector. The intent of this function is to help see if a delegate is already registered with a calback by checking all known information associated with that callback against the input arguments. | |
template<typename DataT , typename T , void(T::*)(const DataT &) TMethod> | |
DelegateVector::iterator | findDelegate_ (DelegateVector &dvec, T *obj, const std::string &target_name) |
virtual void | broadcastRegistrationForNotificationToChildren_ (const std::type_info &tinfo, const std::vector< const std::string * > &name_ids, TreeNode *obs_node, const delegate *del, const bool allow_private) |
Recursively notifies children that the notification described is now (or still is) being observed at the observation point TreeNode obs_node with the newly registered delegate del. | |
virtual void | broadcastDeregistrationForNotificationToChildren_ (const std::type_info &tinfo, const std::vector< const std::string * > &name_ids, TreeNode *obs_node, const delegate *del, const bool allow_private) |
Recursively notifies children that the notification described has lost one particular observer (del) which was observing at the observation point TreeNode obs_node with the delegate del. | |
void | broadcastRegistrationForNotificationListStringToChildren_ (const std::type_info &tinfo, const std::string &name, TreeNode *obs_node, const delegate *del, const bool private_only) |
Entry point to broadcastRegistrationForNotificationToChildren_ recursion. Breaks a name string. | |
void | broadcastDeregistrationForNotificationListStringToChildren_ (const std::type_info &tinfo, const std::string &name, TreeNode *obs_node, const delegate *del, const bool private_only) |
Symmetric oppostie of broadcastRegistrationForNotificationListStringToChildren_. | |
template<typename DataT > | |
void | invokeDelegatesOn_ (TreeNode *to_invoke, const DataT &data, const std::string *name_id) |
Protected wrapper for invokeDelegates_ which allows a TreeNode to invoke delegates on another TreeNode using itself as the origin. | |
![]() | |
std::string | getResourceTypeName_ () const |
Gets the rtti type name (demangled) of the resource type held by this container. If there is no resource held, returns empty string. | |
void | setResource_ (Resource *r) |
Allows subclasses to assign the resource associated with this node. | |
void | unsetResource_ () |
Allows a resource to unset the resource set with setResource_. | |
void | lockResource_ () |
Allows subclasses to assign the resource associated with this node. | |
Resource * | getResource_ () noexcept |
Returns the currently held resource of this node (if any). This method can be called at any time. | |
const Resource * | getResource_ () const noexcept |
Const variant of getResource_. | |
![]() | |
void | setPhase_ (TreePhase phase) |
Sets the current phase. | |
![]() | |
static bool | identityMatchesPattern_ (const std::string &ident, std::regex &expr, std::vector< std::string > &replacements) |
Performs pattern matching on a identity string. | |
static bool | identityMatchesPattern_ (const std::string &ident, std::regex &expr) |
Variant of identityMatchesPattern_ with no replacements vector. | |
static std::string | getPreviousName_ (const std::string &name, size_t &pos) |
Gets the previous name between two '.' chars in a string starting at pos. | |
Non-templated base class for generic parameter access and iteration.
Allows values to be set and read as strings. Default value and description can also be read as a string. To access value by its internal type, a subclass must be used. For a model to consume parameters, the use of a sparta::ParameterSet subclass is expected. Such as class would allow direct access to parameters in their native types instead of through the generic string-based API provided by ParameterBase.
Subclasses are responsible for incremeneting read and write counts when setting or reading the value as its actual type or as a string. Serializing the Parameter does not count as a read. Refer to incrementReadCount_ and incrementWriteCount_. Read count must always be reset to 0 when the parameter is set (whether changed or not) and when initialized.
Definition at line 114 of file Parameter.hpp.
Generic value iterator for a SINGLE parameter which represents values ONLY as std::string.
For Scalar parameters (including std::string), this itererator will cover exactly 1 element. For vector parameters, this iterator will cover any number of elements.
Iterates values in a ParameterBase by index.
|
inline |
Constructor.
name | Name of this Parameter. Available through getName() |
def | Default value of this Parameter. Available through getDefaultAsString() |
desc | Description of this parameter. Available through getDesc() |
Definition at line 246 of file Parameter.hpp.
|
inlinevirtual |
Destructor.
Definition at line 265 of file Parameter.hpp.
|
protected |
Add this parameter to a set - an action which is protected and requires the friendship that the Parameter<> class has.
[in] | ps | ParameterSet to add self to |
void sparta::ParameterBase::associateParametersForModification | ( | std::vector< const ParameterBase * > | params, |
const sparta::SpartaHandler & | modifier_callback ) |
Associate a parameter with this parameter for future modification.
params | List of parameters that this parameter will modify/reference |
modifier_callback | The callback called when this parameter is modifed |
Example:
|
pure virtual |
Gets a beginning const_iterator for values of this Parameter.
Implemented in sparta::Parameter< ValueType >.
|
pure virtual |
If the parameter is a vector type, clears the value so that it becomes an empty vector (regardless of dimensionality)
Implemented in sparta::Parameter< ValueType >.
|
pure virtual |
Gets an ending const_iterator for values of this Parameter.
Implemented in sparta::Parameter< ValueType >.
|
pure virtual |
Returns true if the value of this equals other
.
other | The parameter to compere with |
Implemented in sparta::Parameter< ValueType >.
|
pure virtual |
Gets the default value of this Parameter as a string.
Implemented in sparta::Parameter< ValueType >.
|
pure virtual |
Determines the number of dimensions of this Parameter. A scalar has 0 dimensions. A parameter of type vector<uint32_t> would have a dimensionality of 1. vector<vector<uint32_t>> would have a dimensionality of 2.
Implemented in sparta::Parameter< ValueType >.
|
pure virtual |
Gets the value of this parameter as a double. \thwo Exception if underlying parameter type is not numeric.
Implemented in sparta::Parameter< ValueType >.
|
pure virtual |
Gets the current value of a single element within this parameter of the parameter as if this parameter were a N-dimensional vector.
indices | Index for each dimension of the vector. If this is a 1-dimensional parameter, indices should have size 1. If this is a scalar parameter, indices should be empty. |
peek. | If true, does not increment read count |
Implemented in sparta::Parameter< ValueType >.
|
pure virtual |
Gets the number of elements contained in this Parameter as a Vector.
peek | Should peek |
Implemented in sparta::Parameter< ValueType >.
|
inline |
Number of times this Parameter has been read after initialization or after the last write (or explicit resetReadCount_() call)
The intent of this method is to ensure that Parameters are actually read by the Components that defined them and that they are used AFTER writing.
Definition at line 712 of file Parameter.hpp.
|
pure virtual |
Gets the compiler-independent readable type string of the value currently held.
Implemented in sparta::Parameter< ValueType >.
|
inline |
Gets the value of this ParameterBase as a templated type T if this parameter actually contains a value of type T.
T | Type of parameter to get. |
ParameterException | if this parameter does not actually hold a value of (exactly) type T. |
Definition at line 2539 of file Parameter.hpp.
|
pure virtual |
Gets the current value of this Parameter as a string.
Implemented in sparta::Parameter< ValueType >.
|
pure virtual |
Gets the current value of this Parameter as a string at a particular index as if this Parameter were a vector.
idx | Index into parameter of the value to get. If this Parameter is a vector (See isVector()), this value can be in the range [ 0, getNumValues() ). If this Parameter is a scalar, then idx must be 0. |
peek | If true, does not increment read count |
ParameterException | if idx does not refer to a valid element for a Vector parameter or 0 for a scalar parameter |
Implemented in sparta::Parameter< ValueType >.
|
pure virtual |
Determines the size of a vector contained by this parameter at the location specified by indices.
indices | Indices into this parameter. The size of indices must be less than the dimensionality of this parameter in order to refer to a vector with a size. If the internal parameter value 'v' is of type vector<vector<vector<int>>>, then indices = {0,1} effectively refers to v[0][1].size(). indices = {0,1,1} would be illegal because v[0][1][1] would refer to an integer, which is not a vector and thus has no vector size. If any index in indices |
peek | If true, do not increment the read count |
Implemented in sparta::Parameter< ValueType >.
|
inline |
Number of times this Parameter has been written after initialization.
The intent of this method is to help detect when Parameters are being overwritten unexpectedly.
Definition at line 697 of file Parameter.hpp.
|
inlineprotected |
Flag as ignored. See Parameter<T>::ignore.
Definition at line 833 of file Parameter.hpp.
|
inlineprotected |
Increment the number of reads that will be reported by getReadCount.
Definition at line 807 of file Parameter.hpp.
|
inlineprotected |
Increments the number of writes that will be reported by getWriteCount.
SpartaException | if TreeNode base has already passed the TREE_CONFIGURING phase (sparta::TreeNode::isConfigured). |
Definition at line 854 of file Parameter.hpp.
|
inlinevirtual |
Is this parameter's current value the default value.
Definition at line 303 of file Parameter.hpp.
|
pure virtual |
Has the default value (NOT the current value) for parameter been overridden in any way (including partially changed).
In SPARTA, parameter defaults are supplied at construction-time through constants or constructors, but these defaults can also be changed during initialization in order to support custom architectural configuration baselines. An overridden default value does not necessarily imply a change in the current value held by this parameter. To see if the current value (getValueAsString or Parameter<t>::getValue) has changed, use isDefault (i.e. is this parameter's value equal to the default?)
Implemented in sparta::Parameter< ValueType >.
|
inline |
Has this parameter been ignored (without having read count reset after)
Definition at line 728 of file Parameter.hpp.
|
inline |
Is this parameter ignored or read at least once (barring any reset of the read count or ignore flag)
Definition at line 720 of file Parameter.hpp.
|
pure virtual |
Determines whether this Parameter is a vector or a scalar Parameter.
Implemented in sparta::Parameter< ValueType >.
|
pure virtual |
Query if this parameter is safe to be displayed via prints, dumps. A parameter should not be displayed if it is HIDDEN and the subtree containing this parameter is already locked.
Implemented in sparta::Parameter< ValueType >.
|
inline |
Is this a volatile parmaeter?
Definition at line 280 of file Parameter.hpp.
|
pure virtual |
If the parameter is a vector type, clears the default value so that it becomes an empty vector (regardless of dimensionality)
Implemented in sparta::Parameter< ValueType >.
|
pure virtual |
Sets the default value of this non-vector parameter for architecture baseline configuration purposes.
[in] | val | Value to write to default |
Implemented in sparta::Parameter< ValueType >.
|
pure virtual |
Sets the default value of this vector parameter for architecture baseline configuration purposes.
[in] | val | Value to write to default |
Implemented in sparta::Parameter< ValueType >.
|
pure virtual |
Partially override the default default value in some element at an n-dimensional array specified.
Implemented in sparta::Parameter< ValueType >.
|
pure virtual |
Override the default value by clearing the possibly-nested vector (if this parameter is a vector). The nested vector contens can then be set by overrideDefaultItemValueFromString.
Implemented in sparta::Parameter< ValueType >.
|
inline |
Wrapper for getItemValueFromString with peek=true.
Definition at line 355 of file Parameter.hpp.
|
inline |
Wrapper for getNumValues with peek=true.
Definition at line 435 of file Parameter.hpp.
|
inline |
Wrapper of getVectorSizeAt with peek=true.
Definition at line 414 of file Parameter.hpp.
|
inlineprotected |
Resets the number of reads that wil be reported by getReadCount.
Definition at line 816 of file Parameter.hpp.
|
inlineprotected |
Resets the number of writes that wil be reported by getWriteCount.
Definition at line 826 of file Parameter.hpp.
|
pure virtual |
Attempt to resize a vector nested within this parameter to contain the vector indicated by indices.
indices | Set of indices referring to nested vectors that must be accessible (at a minimum) by future reads. Nested vetors containing non-vector types will not be resized by this method. See resizeVectorsFromString_ for implementation details |
Implemented in sparta::Parameter< ValueType >.
void sparta::ParameterBase::restoreValueFromDefault | ( | ) |
Attempts to restore the devalue value of this parameter.
|
protectedpure virtual |
Implements restoreValueFromDefault.
Implemented in sparta::Parameter< ValueType >.
|
inline |
Set volatile flag (allows write after read)
Definition at line 271 of file Parameter.hpp.
void sparta::ParameterBase::setItemValueFromString | ( | const std::vector< uint32_t > & | indices, |
const std::string & | str ) |
Attempts to assign a value to this nested vector Parameter from a string at a position within the vector indicated by indices.
indices | Set of indices indicating positions in a nested vector parameter type. For example, a parameter of type vector<vector<vector<string>>> with an internal representation referred to as 'p' may have indices [1,2,3] to effectively set str at p[1][2][3]. Internal vector will be resized to contain a location as described by indices if needed. Values in items created by a resize are undefined. If indices.size() is 0, treats this type as if it is a non-stl::vector parameter and directly assigns the lexically cast value of str string to the parameter's internal value |
str | String value to assign to the element identified by indices. This string will be lexically cast to the approprate internal type as in setValueFromString |
|
protectedpure virtual |
Implements setItemValueFromStringImpl_.
Implemented in sparta::Parameter< ValueType >.
|
inline |
Set the quote sequence for printing strings.
s | String quote sequence (defaults to empty string) |
Definition at line 755 of file Parameter.hpp.
void sparta::ParameterBase::setValueFromString | ( | const std::string & | str, |
bool | poke = false ) |
Attempts to assign a value to this non-vector Parameter from a string.
str | String with which to populate this parameter. |
poke | If true, does not increment write count. |
ParameterException | if the given string cannot be lexically converted or if parameter is a vector type (isVector() == true). cast to the internal parameter type. |
|
protectedpure virtual |
Implements setValueFromString.
Implemented in sparta::Parameter< ValueType >.
void sparta::ParameterBase::setValueFromStringVector | ( | const std::vector< std::string > & | str, |
bool | poke = false ) |
Attempts to assign a value to this vector Parameter from a string.
str | Vector of strings with which to populate this Parameter. |
poke | If true, does not increment write count. |
ParameterException | if the given string cannot be lexically converted or if parameter is a non-vector type (isVector() == false). cast to the internal parameter type. |
|
protectedpure virtual |
Implements setValueFromStringVectorImpl_.
Implemented in sparta::Parameter< ValueType >.
|
inlineoverridevirtual |
Render description of this parameter as a string.
* (<type> "<name>" : <value>, def=<default> read: <read_count>) *
Reimplemented from sparta::TreeNode.
Definition at line 623 of file Parameter.hpp.
|
inlinevirtual |
Scalar parameters may compress well, but we cannot really make a strong enough determination without knowing more about the parameter. Let's disable compression for these by default.
Definition at line 737 of file Parameter.hpp.
|
inlineprotected |
Mark this parameter as unread and unignored This is used or preloading defaults to parameters and then clearing the write count. It is intended to be used by ParameterSet.
Definition at line 790 of file Parameter.hpp.
|
pure virtual |
Performs validation based on other Parameters in the Device Tree.
node | TreeNode representing this Device Tree node which is consuming these parameters. |
err_names | String which will be appended with names of any failed validators. |
Implemented in sparta::Parameter< ValueType >.
|
pure virtual |
Performs validation independently of all other Parameters.
err_names | String which will be appended with names of any failed validators. |
Implemented in sparta::Parameter< ValueType >.
|
friend |
Allow access to protected access count methods by ParameterSet
Definition at line 915 of file Parameter.hpp.
|
mutableprotected |
Has this parameter been ignored. Resettable. Mutable so that it can be accessed from a const Parmeter.
Definition at line 926 of file Parameter.hpp.
|
protected |
Modifier callback called when the parameter is written.
Definition at line 920 of file Parameter.hpp.
|
staticconstexpr |
Definition at line 121 of file Parameter.hpp.
|
protected |
The quote sequence for printing strings. Defaults to empty string.
Definition at line 931 of file Parameter.hpp.