MADARA
3.4.1
|
Manages a 2D array of integers as a virtual overlay in the KnowledgeBase. More...
#include <IntegerVector2D.h>
Classes | |
struct | Indices |
two dimensional indexing More... | |
Public Types | |
typedef Indices | Dimensions |
convenience typedef for size More... | |
typedef KnowledgeRecord::Integer | type |
convenience typedef for element type More... | |
Public Member Functions | |
IntegerVector2D (const IntegerVector2D &rhs) | |
Copy constructor. More... | |
IntegerVector2D (const KnowledgeUpdateSettings &settings=KnowledgeUpdateSettings(), const std::string &delimiter=".") | |
Default constructor. More... | |
IntegerVector2D (const std::string &name, KnowledgeBase &knowledge, const Dimensions &dimensions={0, 0}, bool delete_vars=true, const KnowledgeUpdateSettings &settings=KnowledgeUpdateSettings(), const std::string &delimiter=".") | |
Constructor. More... | |
IntegerVector2D (const std::string &name, Variables &knowledge, const Dimensions &dimensions={0, 0}, bool delete_vars=true, const KnowledgeUpdateSettings &settings=KnowledgeUpdateSettings(), const std::string &delimiter=".") | |
Constructor. More... | |
virtual | ~IntegerVector2D () |
Destructor. More... | |
virtual BaseContainer * | clone (void) const |
Clones this container. More... | |
void | copy_to (std::vector< std::vector< type > > &target) const |
Copies the vector elements to an STL vector. More... | |
bool | exists (const Indices &index) const |
Checks to see if the index has ever been assigned a value. More... | |
std::string | get_debug_info (void) |
Returns the type of the container along with name and any other useful information. More... | |
std::string | get_delimiter (void) |
Gets the delimiter for adding and detecting subvariables. More... | |
std::string | get_name (void) const |
Returns the name of the container. More... | |
KnowledgeUpdateSettings | get_settings (void) |
Gets the update settings for the container. More... | |
VariableReference | get_size_ref (void) |
Returns a reference to the size of vector. More... | |
bool | is_false (void) const |
Determines if the value of the vector is false. More... | |
bool | is_true (void) const |
Determines if all values in the vector are true. More... | |
void | modify (const Indices &index) |
Mark the value as modified. More... | |
void | modify (void) |
Mark the vector as modified. More... | |
virtual bool | modify_if_false (BaseContainer &conditional) |
Modifies the container if the argument is false. More... | |
virtual bool | modify_if_true (BaseContainer &conditional) |
Modifies the container if the argument is true. More... | |
void | operator= (const IntegerVector2D &rhs) |
Assignment operator. More... | |
type | operator[] (const Indices &index) const |
Retrieves an index from the multi-dimensional array. More... | |
void | resize (const Dimensions &dimensions, bool delete_vars=true) |
Resizes the vector. More... | |
int | set (const Indices &index, type value) |
Sets a knowledge variable to a specified value. More... | |
int | set (const Indices &index, type value, const KnowledgeUpdateSettings &settings) |
Sets a knowledge variable to a specified value. More... | |
int | set (const std::vector< std::vector< type > > &value) |
Reads values from a STL vector of KnowledgeRecord::Integers. More... | |
int | set (const std::vector< std::vector< type > > &value, const KnowledgeUpdateSettings &settings) |
Reads values from a STL vector. More... | |
void | set_delimiter (const std::string &delimiter) |
Sets the delimiter for adding and detecting subvariables. More... | |
void | set_name (const std::string &var_name, KnowledgeBase &knowledge, const Dimensions &dimensions={0, 0}) |
Sets the variable name that this refers to. More... | |
void | set_name (const std::string &var_name, ThreadSafeContext &knowledge, const Dimensions &dimensions={0, 0}) |
Sets the variable name that this refers to. More... | |
void | set_name (const std::string &var_name, Variables &knowledge, const Dimensions &dimensions={0, 0}) |
Sets the variable name that this refers to. More... | |
void | set_quality (const Indices &index, uint32_t quality, const KnowledgeReferenceSettings &settings=KnowledgeReferenceSettings(false)) |
Sets the quality of writing to a certain variable from this entity. More... | |
void | set_settings (const KnowledgeUpdateSettings &settings) |
Sets the update settings for the container. More... | |
Dimensions | size (void) const |
Returns the size of the local vector. More... | |
Protected Attributes | |
MADARA_LOCK_TYPE | mutex_ |
guard for access and changes More... | |
std::string | name_ |
Prefix of variable. More... | |
KnowledgeUpdateSettings | settings_ |
Settings for modifications. More... | |
Private Member Functions | |
virtual std::string | get_debug_info_ (void) |
Returns the type of the container along with name and any other useful information. More... | |
virtual bool | is_false_ (void) const |
Polymorphic is false method which can be used to determine if at least one value in the container is false. More... | |
virtual bool | is_true_ (void) const |
Polymorphic is true method which can be used to determine if all values in the container are true. More... | |
virtual void | modify_ (void) |
Polymorphic modify method used by collection containers. More... | |
Private Attributes | |
ThreadSafeContext * | context_ |
Variable context that we are modifying. More... | |
std::string | delimiter_ |
Delimiter for the prefix to subvars. More... | |
VariableReference | size_ |
Reference to the size of 2D array. More... | |
std::vector< std::vector< VariableReference > > | vector_ |
Values of the array. More... | |
Manages a 2D array of integers as a virtual overlay in the KnowledgeBase.
Definition at line 32 of file IntegerVector2D.h.
convenience typedef for size
Definition at line 42 of file IntegerVector2D.h.
convenience typedef for element type
Definition at line 45 of file IntegerVector2D.h.
madara::knowledge::containers::IntegerVector2D::IntegerVector2D | ( | const KnowledgeUpdateSettings & | settings = KnowledgeUpdateSettings() , |
const std::string & | delimiter = "." |
||
) |
Default constructor.
settings | settings for evaluating the vector |
delimiter | the delimiter for variables in the vector |
Definition at line 4 of file IntegerVector2D.cpp.
madara::knowledge::containers::IntegerVector2D::IntegerVector2D | ( | const std::string & | name, |
KnowledgeBase & | knowledge, | ||
const Dimensions & | dimensions = {0, 0} , |
||
bool | delete_vars = true , |
||
const KnowledgeUpdateSettings & | settings = KnowledgeUpdateSettings() , |
||
const std::string & | delimiter = "." |
||
) |
Constructor.
name | name of the vector in the knowledge base |
dimensions | size of the vector. {0,0} to check for size. |
knowledge | the knowledge base that will contain the vector |
delete_vars | delete indices outside of the specified range |
settings | settings for evaluating the vector |
delimiter | the delimiter for variables in the vector |
Definition at line 10 of file IntegerVector2D.cpp.
madara::knowledge::containers::IntegerVector2D::IntegerVector2D | ( | const std::string & | name, |
Variables & | knowledge, | ||
const Dimensions & | dimensions = {0, 0} , |
||
bool | delete_vars = true , |
||
const KnowledgeUpdateSettings & | settings = KnowledgeUpdateSettings() , |
||
const std::string & | delimiter = "." |
||
) |
Constructor.
name | name of the vector in the knowledge base |
dimensions | size of the vector. {0,0} to check for size. |
knowledge | the knowledge base that will contain the vector |
delete_vars | delete indices outside of the specified range |
settings | settings for evaluating the vector |
delimiter | the delimiter for variables in the vector |
Definition at line 22 of file IntegerVector2D.cpp.
madara::knowledge::containers::IntegerVector2D::IntegerVector2D | ( | const IntegerVector2D & | rhs | ) |
Copy constructor.
Definition at line 34 of file IntegerVector2D.cpp.
|
virtual |
Destructor.
Definition at line 44 of file IntegerVector2D.cpp.
|
virtual |
Clones this container.
Implements madara::knowledge::containers::BaseContainer.
Definition at line 117 of file IntegerVector2D.cpp.
void madara::knowledge::containers::IntegerVector2D::copy_to | ( | std::vector< std::vector< type > > & | target | ) | const |
Copies the vector elements to an STL vector.
target | the target of the copy operation |
Definition at line 396 of file IntegerVector2D.cpp.
bool madara::knowledge::containers::IntegerVector2D::exists | ( | const Indices & | index | ) | const |
Checks to see if the index has ever been assigned a value.
index | the index of the variable entry |
Definition at line 442 of file IntegerVector2D.cpp.
std::string madara::knowledge::containers::IntegerVector2D::get_debug_info | ( | void | ) |
Returns the type of the container along with name and any other useful information.
The provided information should be useful for developers wishing to debug container operations, especially as it pertains to pending network operations (i.e., when used in conjunction with modify)
Definition at line 69 of file IntegerVector2D.cpp.
|
privatevirtual |
Returns the type of the container along with name and any other useful information.
The provided information should be useful for developers wishing to debug container operations, especially as it pertains to pending network operations (i.e., when used in conjunction with modify)
Implements madara::knowledge::containers::BaseContainer.
Definition at line 110 of file IntegerVector2D.cpp.
std::string madara::knowledge::containers::IntegerVector2D::get_delimiter | ( | void | ) |
Gets the delimiter for adding and detecting subvariables.
By default, MADARA uses a '.' delimiter for names like "ai.madara.Var1". Other conventions can include '/' for ROS-like topic directory structures, e.g., ai/madara/Var1.
Definition at line 391 of file IntegerVector2D.cpp.
|
inlineinherited |
Returns the name of the container.
Definition at line 4 of file BaseContainer.inl.
|
inherited |
Gets the update settings for the container.
Definition at line 29 of file BaseContainer.cpp.
madara::knowledge::VariableReference madara::knowledge::containers::IntegerVector2D::get_size_ref | ( | void | ) |
Returns a reference to the size of vector.
Definition at line 150 of file IntegerVector2D.cpp.
bool madara::knowledge::containers::IntegerVector2D::is_false | ( | void | ) | const |
Determines if the value of the vector is false.
Definition at line 600 of file IntegerVector2D.cpp.
|
privatevirtual |
Polymorphic is false method which can be used to determine if at least one value in the container is false.
Implements madara::knowledge::containers::BaseContainer.
Definition at line 610 of file IntegerVector2D.cpp.
bool madara::knowledge::containers::IntegerVector2D::is_true | ( | void | ) | const |
Determines if all values in the vector are true.
Definition at line 553 of file IntegerVector2D.cpp.
|
privatevirtual |
Polymorphic is true method which can be used to determine if all values in the container are true.
Implements madara::knowledge::containers::BaseContainer.
Definition at line 605 of file IntegerVector2D.cpp.
void madara::knowledge::containers::IntegerVector2D::modify | ( | const Indices & | index | ) |
Mark the value as modified.
The vector element retains its value but will resend its value as if it had been modified.
index | the index to modify |
Definition at line 122 of file IntegerVector2D.cpp.
void madara::knowledge::containers::IntegerVector2D::modify | ( | void | ) |
Mark the vector as modified.
The vector retains the same values but will resend values as if they had been modified.
Definition at line 46 of file IntegerVector2D.cpp.
|
privatevirtual |
Polymorphic modify method used by collection containers.
This method calls the modify method for this class. We separate the faster version (modify) from this version (modify_) to allow users the opportunity to have a fastery version that does not use polymorphic functions (generally virtual functions are half as efficient as normal function calls)
Implements madara::knowledge::containers::BaseContainer.
Definition at line 105 of file IntegerVector2D.cpp.
|
virtualinherited |
Modifies the container if the argument is false.
conditional | the container that must be false to modify |
Definition at line 56 of file BaseContainer.cpp.
|
virtualinherited |
Modifies the container if the argument is true.
conditional | the container that must be true to modify |
Definition at line 36 of file BaseContainer.cpp.
void madara::knowledge::containers::IntegerVector2D::operator= | ( | const IntegerVector2D & | rhs | ) |
Assignment operator.
rhs | value to copy |
Definition at line 133 of file IntegerVector2D.cpp.
madara::knowledge::containers::IntegerVector2D::type madara::knowledge::containers::IntegerVector2D::operator[] | ( | const Indices & | index | ) | const |
Retrieves an index from the multi-dimensional array.
index | the index of the variable entry |
Definition at line 421 of file IntegerVector2D.cpp.
void madara::knowledge::containers::IntegerVector2D::resize | ( | const Dimensions & | dimensions, |
bool | delete_vars = true |
||
) |
Resizes the vector.
dimensions | maximum size of the vector. Can be -1 to check the knowledge base for size information) |
delete_vars | delete indices outside of the specified range |
Definition at line 171 of file IntegerVector2D.cpp.
Sets a knowledge variable to a specified value.
index | location index to set |
value | value to set at location |
Definition at line 460 of file IntegerVector2D.cpp.
int madara::knowledge::containers::IntegerVector2D::set | ( | const Indices & | index, |
type | value, | ||
const KnowledgeUpdateSettings & | settings | ||
) |
Sets a knowledge variable to a specified value.
index | location index to set |
value | value to set at location |
settings | settings for applying the update |
Definition at line 499 of file IntegerVector2D.cpp.
int madara::knowledge::containers::IntegerVector2D::set | ( | const std::vector< std::vector< type > > & | value | ) |
Reads values from a STL vector of KnowledgeRecord::Integers.
value | array to set at the location |
Definition at line 478 of file IntegerVector2D.cpp.
int madara::knowledge::containers::IntegerVector2D::set | ( | const std::vector< std::vector< type > > & | value, |
const KnowledgeUpdateSettings & | settings | ||
) |
Reads values from a STL vector.
value | array of values to set at the location |
settings | settings for applying the update |
Definition at line 517 of file IntegerVector2D.cpp.
void madara::knowledge::containers::IntegerVector2D::set_delimiter | ( | const std::string & | delimiter | ) |
Sets the delimiter for adding and detecting subvariables.
By default, MADARA uses a '.' delimiter for names like "ai.madara.Var1". Other conventions can include '/' for ROS-like topic directory structures, e.g., ai/madara/Var1.
delimiter | the delimiter to use for variable demarcation |
Definition at line 378 of file IntegerVector2D.cpp.
void madara::knowledge::containers::IntegerVector2D::set_name | ( | const std::string & | var_name, |
KnowledgeBase & | knowledge, | ||
const Dimensions & | dimensions = {0, 0} |
||
) |
Sets the variable name that this refers to.
var_name | the name of the variable in the knowledge base |
knowledge | the knowledge base the variable is housed in |
dimensions | size of the new vector ({0,0} to not change size) |
Definition at line 324 of file IntegerVector2D.cpp.
void madara::knowledge::containers::IntegerVector2D::set_name | ( | const std::string & | var_name, |
ThreadSafeContext & | knowledge, | ||
const Dimensions & | dimensions = {0, 0} |
||
) |
Sets the variable name that this refers to.
var_name | the name of the variable in the knowledge base |
knowledge | the knowledge base the variable is housed in |
dimensions | size of the new vector ({0,0} to not change size) |
Definition at line 361 of file IntegerVector2D.cpp.
void madara::knowledge::containers::IntegerVector2D::set_name | ( | const std::string & | var_name, |
Variables & | knowledge, | ||
const Dimensions & | dimensions = {0, 0} |
||
) |
Sets the variable name that this refers to.
var_name | the name of the variable in the knowledge base |
knowledge | the knowledge base the variable is housed in |
dimensions | size of the new vector ({0,0} to not change size) |
Definition at line 344 of file IntegerVector2D.cpp.
void madara::knowledge::containers::IntegerVector2D::set_quality | ( | const Indices & | index, |
uint32_t | quality, | ||
const KnowledgeReferenceSettings & | settings = KnowledgeReferenceSettings( false) |
||
) |
Sets the quality of writing to a certain variable from this entity.
index | index to set |
quality | quality of writing to this location |
settings | settings for referring to knowledge variables |
Definition at line 539 of file IntegerVector2D.cpp.
|
inherited |
Sets the update settings for the container.
settings | the new settings to use |
Definition at line 20 of file BaseContainer.cpp.
madara::knowledge::containers::IntegerVector2D::Indices madara::knowledge::containers::IntegerVector2D::size | ( | void | ) | const |
Returns the size of the local vector.
Call resize() first without arguments to ensure local vector matches data in KnowledgeBase.
Definition at line 302 of file IntegerVector2D.cpp.
|
private |
Variable context that we are modifying.
Definition at line 319 of file IntegerVector2D.h.
|
private |
Delimiter for the prefix to subvars.
Definition at line 334 of file IntegerVector2D.h.
|
mutableprotectedinherited |
guard for access and changes
Mutex for local changes
Definition at line 136 of file BaseContainer.h.
|
protectedinherited |
Prefix of variable.
Definition at line 146 of file BaseContainer.h.
|
protectedinherited |
Settings for modifications.
Definition at line 151 of file BaseContainer.h.
|
private |
Reference to the size of 2D array.
Definition at line 329 of file IntegerVector2D.h.
|
private |
Values of the array.
Definition at line 324 of file IntegerVector2D.h.