MADARA
3.1.8
|
This class stores a vector of character buffers. More...
#include <BufferVector.h>
Public Member Functions | |
BufferVector (const KnowledgeUpdateSettings &settings=KnowledgeUpdateSettings(), const std::string &delimiter=".") | |
Default constructor. More... | |
BufferVector (const std::string &name, KnowledgeBase &knowledge, int size=-1, bool delete_vars=true, const KnowledgeUpdateSettings &settings=KnowledgeUpdateSettings(), const std::string &delimiter=".") | |
Constructor. More... | |
BufferVector (const std::string &name, Variables &knowledge, int size=-1, bool delete_vars=true, const KnowledgeUpdateSettings &settings=KnowledgeUpdateSettings(), const std::string &delimiter=".") | |
Constructor. More... | |
BufferVector (const BufferVector &rhs) | |
Copy constructor. More... | |
virtual | ~BufferVector () |
Destructor. More... | |
virtual BaseContainer * | clone (void) const |
Clones this container. More... | |
void | copy_to (KnowledgeVector &target) const |
Copies the vector elements to an STL vector of Knowledge Records. More... | |
void | exchange (BufferVector &other, bool refresh_keys=true, bool delete_keys=true) |
Exchanges the vector at this location with the vector at another location. More... | |
bool | exists (size_t 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) const |
Returns a reference to the size field of the current name. 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 (void) |
Mark the vector as modified. More... | |
void | modify (size_t index) |
Mark the value 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 BufferVector &rhs) |
Assignment operator. More... | |
knowledge::KnowledgeRecord | operator[] (size_t index) const |
Retrieves a copy of the record from the map. More... | |
void | push_back (const unsigned char *value, size_t size) |
Pushes the value to the end of the array after incrementing the array size. More... | |
int | read_file (size_t index, const std::string &filename) |
Read a file into the index using stored settings. More... | |
int | read_file (size_t index, const std::string &filename, const KnowledgeUpdateSettings &settings) |
Read a file into the index using temporary settings. More... | |
void | resize (int size=-1, bool delete_vars=true) |
Resizes the vector. More... | |
int | set (size_t index, const knowledge::KnowledgeRecord &value) |
Atomically sets the value of an index to a provided record. More... | |
void | set_delimiter (const std::string &delimiter) |
Sets the delimiter for adding and detecting subvariables. More... | |
int | set_file (size_t index, const unsigned char *value, size_t size) |
Atomically sets the value of an index to an arbitrary string using stored settings. More... | |
int | set_file (size_t index, const unsigned char *value, size_t size, const KnowledgeUpdateSettings &settings) |
Atomically sets the value of an index to an arbitrary string using temporary settings. More... | |
int | set_jpeg (size_t index, const unsigned char *value, size_t size) |
Atomically sets the value of an index to a JPEG image. More... | |
int | set_jpeg (size_t index, const unsigned char *value, size_t size, const KnowledgeUpdateSettings &settings) |
Atomically sets the value of an index to a JPEG image. More... | |
void | set_name (const std::string &var_name, KnowledgeBase &knowledge, int size=-1) |
Sets the variable name that this refers to. More... | |
void | set_name (const std::string &var_name, Variables &knowledge, int size=-1) |
Sets the variable name that this refers to. More... | |
void | set_name (const std::string &var_name, ThreadSafeContext &knowledge, int size=-1) |
Sets the variable name that this refers to. More... | |
void | set_quality (size_t 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... | |
size_t | size (void) const |
Returns the size of the local vector. More... | |
knowledge::KnowledgeRecord | to_record (size_t index) const |
Retrieves a copy of the record from the map. More... | |
void | transfer_to (BufferVector &other) |
Transfers elements from this vector to another. 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 field of the vector space. More... | |
std::vector< VariableReference > | vector_ |
Values of the array. More... | |
This class stores a vector of character buffers.
Definition at line 31 of file BufferVector.h.
madara::knowledge::containers::BufferVector::BufferVector | ( | 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 6 of file BufferVector.cpp.
madara::knowledge::containers::BufferVector::BufferVector | ( | const std::string & | name, |
KnowledgeBase & | knowledge, | ||
int | size = -1 , |
||
bool | delete_vars = true , |
||
const KnowledgeUpdateSettings & | settings = KnowledgeUpdateSettings () , |
||
const std::string & | delimiter = "." |
||
) |
Constructor.
name | name of the vector in the knowledge base |
size | size of the vector |
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 13 of file BufferVector.cpp.
madara::knowledge::containers::BufferVector::BufferVector | ( | const std::string & | name, |
Variables & | knowledge, | ||
int | size = -1 , |
||
bool | delete_vars = true , |
||
const KnowledgeUpdateSettings & | settings = KnowledgeUpdateSettings () , |
||
const std::string & | delimiter = "." |
||
) |
Constructor.
name | name of the vector in the knowledge base |
size | size of the vector (-1 to check knowledge base 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 27 of file BufferVector.cpp.
madara::knowledge::containers::BufferVector::BufferVector | ( | const BufferVector & | rhs | ) |
Copy constructor.
Definition at line 41 of file BufferVector.cpp.
|
virtual |
Destructor.
Definition at line 51 of file BufferVector.cpp.
|
virtual |
Clones this container.
Implements madara::knowledge::containers::BaseContainer.
Definition at line 116 of file BufferVector.cpp.
void madara::knowledge::containers::BufferVector::copy_to | ( | KnowledgeVector & | target | ) | const |
Copies the vector elements to an STL vector of Knowledge Records.
target | record values at this instance |
Definition at line 484 of file BufferVector.cpp.
void madara::knowledge::containers::BufferVector::exchange | ( | BufferVector & | other, |
bool | refresh_keys = true , |
||
bool | delete_keys = true |
||
) |
Exchanges the vector at this location with the vector at another location.
other | the other vector to exchange with |
refresh_keys | force a refresh of the keys in both maps to ensure all keys are swapped |
delete_keys | delete any unused keys |
Definition at line 371 of file BufferVector.cpp.
bool madara::knowledge::containers::BufferVector::exists | ( | size_t | index | ) | const |
Checks to see if the index has ever been assigned a value.
index | the index of the variable entry |
Definition at line 530 of file BufferVector.cpp.
std::string madara::knowledge::containers::BufferVector::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 70 of file BufferVector.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 BufferVector.cpp.
std::string madara::knowledge::containers::BufferVector::get_delimiter | ( | void | ) |
Gets the delimiter for adding and detecting subvariables.
By default, MADARA uses a '.' delimiter for names like "com.madara.Var1". Other conventions can include '/' for ROS-like topic directory structures, e.g., com/madara/Var1.
Definition at line 365 of file BufferVector.cpp.
|
inlineinherited |
Returns the name of the container.
Definition at line 5 of file BaseContainer.inl.
|
inherited |
Gets the update settings for the container.
Definition at line 37 of file BaseContainer.cpp.
madara::knowledge::VariableReference madara::knowledge::containers::BufferVector::get_size_ref | ( | void | ) | const |
Returns a reference to the size field of the current name.
Definition at line 170 of file BufferVector.cpp.
bool madara::knowledge::containers::BufferVector::is_false | ( | void | ) | const |
Determines if the value of the vector is false.
Definition at line 734 of file BufferVector.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 747 of file BufferVector.cpp.
bool madara::knowledge::containers::BufferVector::is_true | ( | void | ) | const |
Determines if all values in the vector are true.
Definition at line 688 of file BufferVector.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 741 of file BufferVector.cpp.
void madara::knowledge::containers::BufferVector::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 57 of file BufferVector.cpp.
void madara::knowledge::containers::BufferVector::modify | ( | size_t | 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 BufferVector.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 104 of file BufferVector.cpp.
|
virtualinherited |
Modifies the container if the argument is false.
conditional | the container that must be false to modify |
Definition at line 64 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 44 of file BaseContainer.cpp.
void madara::knowledge::containers::BufferVector::operator= | ( | const BufferVector & | rhs | ) |
madara::knowledge::KnowledgeRecord madara::knowledge::containers::BufferVector::operator[] | ( | size_t | index | ) | const |
Retrieves a copy of the record from the map.
index | the index of the variable entry |
Definition at line 507 of file BufferVector.cpp.
void madara::knowledge::containers::BufferVector::push_back | ( | const unsigned char * | value, |
size_t | size | ||
) |
Pushes the value to the end of the array after incrementing the array size.
value | the value to place at the end of the array |
size | the size of the buffer at value |
Definition at line 149 of file BufferVector.cpp.
int madara::knowledge::containers::BufferVector::read_file | ( | size_t | index, |
const std::string & | filename | ||
) |
Read a file into the index using stored settings.
filename | file to read |
index | index within vector |
Definition at line 547 of file BufferVector.cpp.
int madara::knowledge::containers::BufferVector::read_file | ( | size_t | index, |
const std::string & | filename, | ||
const KnowledgeUpdateSettings & | settings | ||
) |
Read a file into the index using temporary settings.
filename | file to read |
index | index within vector |
settings | settings to use when evaluating/updating |
Definition at line 565 of file BufferVector.cpp.
void madara::knowledge::containers::BufferVector::resize | ( | int | size = -1 , |
bool | delete_vars = true |
||
) |
Resizes the vector.
size | 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 193 of file BufferVector.cpp.
int madara::knowledge::containers::BufferVector::set | ( | size_t | index, |
const knowledge::KnowledgeRecord & | value | ||
) |
Atomically sets the value of an index to a provided record.
index | index within vector |
value | new value of the variable |
Definition at line 601 of file BufferVector.cpp.
void madara::knowledge::containers::BufferVector::set_delimiter | ( | const std::string & | delimiter | ) |
Sets the delimiter for adding and detecting subvariables.
By default, MADARA uses a '.' delimiter for names like "com.madara.Var1". Other conventions can include '/' for ROS-like topic directory structures, e.g., com/madara/Var1.
delimiter | the delimiter to use for variable demarcation |
Definition at line 349 of file BufferVector.cpp.
int madara::knowledge::containers::BufferVector::set_file | ( | size_t | index, |
const unsigned char * | value, | ||
size_t | size | ||
) |
Atomically sets the value of an index to an arbitrary string using stored settings.
index | index within vector |
value | new value of the variable |
size | indicates the size of the value buffer |
Definition at line 584 of file BufferVector.cpp.
int madara::knowledge::containers::BufferVector::set_file | ( | size_t | index, |
const unsigned char * | value, | ||
size_t | size, | ||
const KnowledgeUpdateSettings & | settings | ||
) |
Atomically sets the value of an index to an arbitrary string using temporary settings.
index | index within vector |
value | new value of the variable |
size | indicates the size of the value buffer |
settings | settings for applying the update |
Definition at line 618 of file BufferVector.cpp.
int madara::knowledge::containers::BufferVector::set_jpeg | ( | size_t | index, |
const unsigned char * | value, | ||
size_t | size | ||
) |
Atomically sets the value of an index to a JPEG image.
index | index of the variable to set |
value | new value of the variable |
size | indicates the size of the value buffer |
Definition at line 637 of file BufferVector.cpp.
int madara::knowledge::containers::BufferVector::set_jpeg | ( | size_t | index, |
const unsigned char * | value, | ||
size_t | size, | ||
const KnowledgeUpdateSettings & | settings | ||
) |
Atomically sets the value of an index to a JPEG image.
index | index of the variable to set |
value | new value of the variable |
size | indicates the size of the value buffer |
settings | settings for applying the update |
Definition at line 654 of file BufferVector.cpp.
void madara::knowledge::containers::BufferVector::set_name | ( | const std::string & | var_name, |
KnowledgeBase & | knowledge, | ||
int | size = -1 |
||
) |
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 |
size | size of the vector. -1 to check for size. |
Definition at line 289 of file BufferVector.cpp.
void madara::knowledge::containers::BufferVector::set_name | ( | const std::string & | var_name, |
Variables & | knowledge, | ||
int | size = -1 |
||
) |
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 |
size | size of the vector. -1 to check for size. |
Definition at line 311 of file BufferVector.cpp.
void madara::knowledge::containers::BufferVector::set_name | ( | const std::string & | var_name, |
ThreadSafeContext & | knowledge, | ||
int | size = -1 |
||
) |
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 |
size | size of the vector. -1 to check for size. |
Definition at line 330 of file BufferVector.cpp.
void madara::knowledge::containers::BufferVector::set_quality | ( | size_t | 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 672 of file BufferVector.cpp.
|
inherited |
Sets the update settings for the container.
settings | the new settings to use |
Definition at line 28 of file BaseContainer.cpp.
size_t madara::knowledge::containers::BufferVector::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 282 of file BufferVector.cpp.
madara::knowledge::KnowledgeRecord madara::knowledge::containers::BufferVector::to_record | ( | size_t | index | ) | const |
Retrieves a copy of the record from the map.
Same functionality as operator[]. This is provided for convenience to match other containers way of converting to a record.
index | the index of the variable entry |
Definition at line 514 of file BufferVector.cpp.
void madara::knowledge::containers::BufferVector::transfer_to | ( | BufferVector & | other | ) |
Transfers elements from this vector to another.
other | the other vector to transfer to |
Definition at line 459 of file BufferVector.cpp.
|
private |
Variable context that we are modifying.
Definition at line 380 of file BufferVector.h.
|
private |
Delimiter for the prefix to subvars.
Definition at line 395 of file BufferVector.h.
|
mutableprotectedinherited |
guard for access and changes
Mutex for local changes
Definition at line 141 of file BaseContainer.h.
|
protectedinherited |
Prefix of variable.
Definition at line 151 of file BaseContainer.h.
|
protectedinherited |
Settings for modifications.
Definition at line 156 of file BaseContainer.h.
|
mutableprivate |
Reference to the size field of the vector space.
Definition at line 390 of file BufferVector.h.
|
private |
Values of the array.
Definition at line 385 of file BufferVector.h.