MADARA  3.2.3
Vector.h
Go to the documentation of this file.
1 
2 #ifndef _MADARA_CONTAINERS_VECTOR_H_
3 #define _MADARA_CONTAINERS_VECTOR_H_
4 
5 #include <vector>
6 #include <string>
7 #include <iostream>
8 #include "madara/LockType.h"
12 #include "BaseContainer.h"
13 
22 namespace madara
23 {
24  namespace knowledge
25  {
26  namespace containers
27  {
28  // forward declare a friend class
29  class Queue;
30 
35  class MADARA_EXPORT Vector : public BaseContainer
36  {
37  public:
39  friend class Queue;
40 
46  Vector (const KnowledgeUpdateSettings & settings =
48  const std::string & delimiter = ".");
49 
60  Vector (const std::string & name,
62  int size = -1,
63  bool delete_vars = true,
64  const KnowledgeUpdateSettings & settings =
66  const std::string & delimiter = ".");
67 
78  Vector (const std::string & name,
79  Variables & knowledge,
80  int size = -1,
81  bool delete_vars = true,
82  const KnowledgeUpdateSettings & settings =
84  const std::string & delimiter = ".");
85 
89  Vector (const Vector & rhs);
90 
94  virtual ~Vector ();
95 
100  void modify (void);
101 
107  void modify (size_t index);
108 
113  void operator= (const Vector & rhs);
114 
120  void push_back (KnowledgeRecord value);
121 
128  void resize (int size = -1, bool delete_vars = true);
129 
138  void exchange (Vector & other, bool refresh_keys = true,
139  bool delete_keys = true);
140 
145  void transfer_to (Vector & other);
146 
152  size_t size (void) const;
153 
160  void set_name (const std::string & var_name,
161  KnowledgeBase & knowledge, int size = -1);
162 
169  void set_name (const std::string & var_name,
170  Variables & knowledge, int size = -1);
171 
178  void set_name (const std::string & var_name,
179  ThreadSafeContext & knowledge, int size = -1);
180 
188  void set_delimiter (const std::string & delimiter);
189 
197  std::string get_delimiter (void);
198 
205  knowledge::KnowledgeRecord operator[] (size_t index) const;
206 
215  knowledge::KnowledgeRecord to_record (size_t index) const;
216 
221  void copy_to (KnowledgeVector & target) const;
222 
229  bool exists (size_t index) const;
230 
236  int read_file (size_t index,
237  const std::string & filename);
238 
245  int read_file (size_t index,
246  const std::string & filename,
247  const KnowledgeUpdateSettings & settings);
248 
256  int set_file (size_t index,
257  const unsigned char * value, size_t size);
258 
267  int set_file (size_t index,
268  const unsigned char * value, size_t size,
269  const KnowledgeUpdateSettings & settings);
270 
278  int set_jpeg (size_t index,
279  const unsigned char * value, size_t size);
280 
289  int set_jpeg (size_t index,
290  const unsigned char * value, size_t size,
291  const KnowledgeUpdateSettings & settings);
292 
301  int set (size_t index,
304 
314  int set (size_t index,
316  const KnowledgeUpdateSettings & settings);
317 
327  int set_index (size_t index,
328  size_t sub_index,
330 
341  int set_index (size_t index,
342  size_t sub_index,
344  const KnowledgeUpdateSettings & settings);
345 
355  int set (size_t index,
357  uint32_t size);
358 
369  int set (size_t index,
371  uint32_t size,
372  const KnowledgeUpdateSettings & settings);
373 
382  int set (size_t index,
383  const std::vector <KnowledgeRecord::Integer> & value);
384 
394  int set (size_t index,
395  const std::vector <KnowledgeRecord::Integer> & value,
396  const KnowledgeUpdateSettings & settings);
397 
406  int set (size_t index, double value);
407 
417  int set (size_t index, double value,
418  const KnowledgeUpdateSettings & settings);
419 
429  int set_index (size_t index,
430  size_t sub_index,
431  double value);
432 
443  int set_index (size_t index,
444  size_t sub_index,
445  double value,
446  const KnowledgeUpdateSettings & settings);
447 
457  int set (size_t index,
458  const double * value,
459  uint32_t size);
460 
471  int set (size_t index,
472  const double * value,
473  uint32_t size,
474  const KnowledgeUpdateSettings & settings);
475 
484  int set (size_t index,
485  const std::vector <double> & value);
486 
496  int set (size_t index,
497  const std::vector <double> & value,
498  const KnowledgeUpdateSettings & settings);
499 
508  int set (size_t index, const std::string & value);
509 
519  int set (size_t index, const std::string & value,
520  const KnowledgeUpdateSettings & settings);
521 
529  void set_quality (size_t index, uint32_t quality,
530  const KnowledgeReferenceSettings & settings =
532 
537  VariableReference get_size_ref (void);
538 
548  std::string get_debug_info (void);
549 
555  virtual BaseContainer * clone (void) const;
556 
561  bool is_true (void) const;
562 
567  bool is_false (void) const;
568 
569  private:
570 
575  virtual bool is_true_ (void) const;
576 
581  virtual bool is_false_ (void) const;
582 
591  virtual void modify_ (void);
592 
602  virtual std::string get_debug_info_ (void);
603 
608 
612  std::vector <VariableReference> vector_;
613 
618 
623  };
624 
626  typedef Vector Array;
627  }
628  }
629 }
630 
631 
632 
633 
634 #endif // _MADARA_CONTAINERS_VECTOR_H_
This class encapsulates an entry in a KnowledgeBase.
Vector Array
provide the Array alias for the Vector class
Definition: Vector.h:626
VariableReference size_
Reference to the size field of the vector space.
Definition: Vector.h:617
int read_file(const std::string &filename, void *&buffer, size_t &size, bool add_zero_char)
Reads a file into a provided void pointer.
Definition: Utility.cpp:480
ThreadSafeContext * context_
Variable context that we are modifying.
Definition: Vector.h:607
This class stores variables and their values for use by any entity needing state information in a thr...
std::string delimiter_
Delimiter for the prefix to subvars.
Definition: Vector.h:622
std::vector< VariableReference > vector_
Values of the array.
Definition: Vector.h:612
Optimized reference to a variable within the knowledge base.
Provides container classes for fast knowledge base access and mutation.
Definition: Barrier.h:27
::std::vector< KnowledgeRecord > KnowledgeVector
This class stores a vector of KaRL variables.
Definition: Vector.h:35
static struct madara::knowledge::tags::string_t string
This class provides a distributed knowledge base to users.
Definition: KnowledgeBase.h:45
This class stores thread-safe queue within the knowledge base.
Definition: Queue.h:34
MADARA_EXPORT bool exists(const char *originator, uint64_t clock, uint32_t update_number, OriginatorFragmentMap &map)
Checks if a fragment already exists within a fragment map.
Provides functions and classes for the distributed knowledge base.
Settings for applying knowledge updates.
Copyright (c) 2015 Carnegie Mellon University.
Settings for applying knowledge updates.
Provides an interface for external functions into the MADARA KaRL variable settings.
This class is an abstract base class for all containers.
Definition: BaseContainer.h:33