WPILibC++  2020.3.2
NetworkTableEntry.h
1 /*----------------------------------------------------------------------------*/
2 /* Copyright (c) 2017-2019 FIRST. All Rights Reserved. */
3 /* Open Source Software - may be modified and shared by FRC teams. The code */
4 /* must be accompanied by the FIRST BSD license file in the root directory of */
5 /* the project. */
6 /*----------------------------------------------------------------------------*/
7 
8 #ifndef NTCORE_NETWORKTABLES_NETWORKTABLEENTRY_H_
9 #define NTCORE_NETWORKTABLES_NETWORKTABLEENTRY_H_
10 
11 #include <stdint.h>
12 
13 #include <initializer_list>
14 #include <memory>
15 #include <string>
16 #include <vector>
17 
18 #include <wpi/StringRef.h>
19 #include <wpi/Twine.h>
20 
21 #include "networktables/NetworkTableType.h"
22 #include "networktables/NetworkTableValue.h"
23 #include "networktables/RpcCall.h"
24 #include "ntcore_c.h"
25 #include "ntcore_cpp.h"
26 
27 namespace nt {
28 
29 using wpi::ArrayRef;
30 using wpi::StringRef;
31 using wpi::Twine;
32 
33 class NetworkTableInstance;
34 
39 class NetworkTableEntry final {
40  public:
44  enum Flags { kPersistent = NT_PERSISTENT };
45 
50 
56  explicit NetworkTableEntry(NT_Entry handle);
57 
63  explicit operator bool() const { return m_handle != 0; }
64 
70  NT_Entry GetHandle() const;
71 
78 
84  bool Exists() const;
85 
91  std::string GetName() const;
92 
98  NetworkTableType GetType() const;
99 
105  unsigned int GetFlags() const;
106 
112  uint64_t GetLastChange() const;
113 
119  EntryInfo GetInfo() const;
120 
126  std::shared_ptr<Value> GetValue() const;
127 
135  bool GetBoolean(bool defaultValue) const;
136 
144  double GetDouble(double defaultValue) const;
145 
153  std::string GetString(StringRef defaultValue) const;
154 
162  std::string GetRaw(StringRef defaultValue) const;
163 
178  std::vector<int> GetBooleanArray(ArrayRef<int> defaultValue) const;
179 
194  std::vector<int> GetBooleanArray(
195  std::initializer_list<int> defaultValue) const;
196 
207  std::vector<double> GetDoubleArray(ArrayRef<double> defaultValue) const;
208 
219  std::vector<double> GetDoubleArray(
220  std::initializer_list<double> defaultValue) const;
221 
232  std::vector<std::string> GetStringArray(
233  ArrayRef<std::string> defaultValue) const;
234 
245  std::vector<std::string> GetStringArray(
246  std::initializer_list<std::string> defaultValue) const;
247 
254  bool SetDefaultValue(std::shared_ptr<Value> value);
255 
262  bool SetDefaultBoolean(bool defaultValue);
263 
270  bool SetDefaultDouble(double defaultValue);
271 
278  bool SetDefaultString(const Twine& defaultValue);
279 
286  bool SetDefaultRaw(StringRef defaultValue);
287 
294  bool SetDefaultBooleanArray(ArrayRef<int> defaultValue);
295 
302  bool SetDefaultBooleanArray(std::initializer_list<int> defaultValue);
303 
310  bool SetDefaultDoubleArray(ArrayRef<double> defaultValue);
311 
318  bool SetDefaultDoubleArray(std::initializer_list<double> defaultValue);
319 
326  bool SetDefaultStringArray(ArrayRef<std::string> defaultValue);
327 
334  bool SetDefaultStringArray(std::initializer_list<std::string> defaultValue);
335 
342  bool SetValue(std::shared_ptr<Value> value);
343 
350  bool SetBoolean(bool value);
351 
358  bool SetDouble(double value);
359 
366  bool SetString(const Twine& value);
367 
374  bool SetRaw(StringRef value);
375 
382  bool SetBooleanArray(ArrayRef<bool> value);
383 
390  bool SetBooleanArray(std::initializer_list<bool> value);
391 
398  bool SetBooleanArray(ArrayRef<int> value);
399 
406  bool SetBooleanArray(std::initializer_list<int> value);
407 
414  bool SetDoubleArray(ArrayRef<double> value);
415 
422  bool SetDoubleArray(std::initializer_list<double> value);
423 
431 
438  bool SetStringArray(std::initializer_list<std::string> value);
439 
446  void ForceSetValue(std::shared_ptr<Value> value);
447 
454  void ForceSetBoolean(bool value);
455 
462  void ForceSetDouble(double value);
463 
470  void ForceSetString(const Twine& value);
471 
478  void ForceSetRaw(StringRef value);
479 
487 
494  void ForceSetBooleanArray(std::initializer_list<bool> value);
495 
503 
510  void ForceSetBooleanArray(std::initializer_list<int> value);
511 
519 
526  void ForceSetDoubleArray(std::initializer_list<double> value);
527 
535 
542  void ForceSetStringArray(std::initializer_list<std::string> value);
543 
549  void SetFlags(unsigned int flags);
550 
556  void ClearFlags(unsigned int flags);
557 
561  void SetPersistent();
562 
566  void ClearPersistent();
567 
573  bool IsPersistent() const;
574 
578  void Delete();
579 
587  void CreateRpc(std::function<void(const RpcAnswer& answer)> callback);
588 
595  void CreatePolledRpc();
596 
606  RpcCall CallRpc(StringRef params);
607 
615  NT_EntryListener AddListener(
616  std::function<void(const EntryNotification& event)> callback,
617  unsigned int flags) const;
618 
624  void RemoveListener(NT_EntryListener entry_listener);
625 
630  bool operator==(const NetworkTableEntry& oth) const {
631  return m_handle == oth.m_handle;
632  }
633 
635  bool operator!=(const NetworkTableEntry& oth) const {
636  return !(*this == oth);
637  }
638 
639  protected:
640  /* Native handle */
641  NT_Entry m_handle;
642 };
643 
644 } // namespace nt
645 
646 #include "networktables/NetworkTableEntry.inl"
647 
648 #endif // NTCORE_NETWORKTABLES_NETWORKTABLEENTRY_H_
nt::NetworkTableInstance
NetworkTables Instance.
Definition: NetworkTableInstance.h:53
nt::NetworkTableEntry::SetDoubleArray
bool SetDoubleArray(ArrayRef< double > value)
Sets the entry's value.
Definition: NetworkTableEntry.inl:184
nt::NetworkTableEntry::RemoveListener
void RemoveListener(NT_EntryListener entry_listener)
Remove an entry listener.
Definition: NetworkTableEntry.inl:292
nt::NetworkTableEntry::ForceSetValue
void ForceSetValue(std::shared_ptr< Value > value)
Sets the entry's value.
Definition: NetworkTableEntry.inl:202
nt::NetworkTableEntry::NetworkTableEntry
NetworkTableEntry()
Construct invalid instance.
Definition: NetworkTableEntry.inl:13
nt::NetworkTableEntry::ForceSetDoubleArray
void ForceSetDoubleArray(ArrayRef< double > value)
Sets the entry's value.
Definition: NetworkTableEntry.inl:240
nt::NetworkTableEntry::AddListener
NT_EntryListener AddListener(std::function< void(const EntryNotification &event)> callback, unsigned int flags) const
Add a listener for changes to this entry.
Definition: NetworkTableEntry.inl:286
nt::NetworkTableEntry::CreateRpc
void CreateRpc(std::function< void(const RpcAnswer &answer)> callback)
Create a callback-based RPC entry point.
Definition: NetworkTableEntry.inl:277
nt::NetworkTableEntry::Exists
bool Exists() const
Determines if the entry currently exists.
Definition: NetworkTableEntry.inl:20
nt::NetworkTableEntry::IsPersistent
bool IsPersistent() const
Returns whether the value is persistent through program restarts.
Definition: NetworkTableEntry.inl:271
nt::NetworkTableEntry::GetStringArray
std::vector< std::string > GetStringArray(ArrayRef< std::string > defaultValue) const
Gets the entry's value as a string array.
Definition: NetworkTableEntry.inl:98
nt::NetworkTableEntry::CallRpc
RpcCall CallRpc(StringRef params)
Call a RPC function.
Definition: NetworkTableEntry.inl:282
nt::NetworkTableEntry::SetDefaultStringArray
bool SetDefaultStringArray(ArrayRef< std::string > defaultValue)
Sets the entry's value if it does not exist.
Definition: NetworkTableEntry.inl:141
nt::NetworkTableEntry::SetDefaultDouble
bool SetDefaultDouble(double defaultValue)
Sets the entry's value if it does not exist.
Definition: NetworkTableEntry.inl:119
nt::NetworkTableEntry::ClearPersistent
void ClearPersistent()
Stop making value persistent through program restarts.
Definition: NetworkTableEntry.inl:269
nt::NetworkTableEntry::ForceSetString
void ForceSetString(const Twine &value)
Sets the entry's value.
Definition: NetworkTableEntry.inl:214
wpi::ArrayRef
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Definition: ArrayRef.h:42
nt::NetworkTableEntry::GetBooleanArray
std::vector< int > GetBooleanArray(ArrayRef< int > defaultValue) const
Gets the entry's value as a boolean array.
Definition: NetworkTableEntry.inl:72
nt::NetworkTableEntry::ClearFlags
void ClearFlags(unsigned int flags)
Clears flags.
Definition: NetworkTableEntry.inl:263
nt::NetworkTableEntry::Delete
void Delete()
Deletes the entry.
Definition: NetworkTableEntry.inl:275
nt::NetworkTableEntry::SetBoolean
bool SetBoolean(bool value)
Sets the entry's value.
Definition: NetworkTableEntry.inl:150
nt::NetworkTableEntry
NetworkTables Entry.
Definition: NetworkTableEntry.h:39
nt::NetworkTableEntry::GetLastChange
uint64_t GetLastChange() const
Gets the last time the entry's value was changed.
Definition: NetworkTableEntry.inl:36
nt::NetworkTableEntry::GetInstance
NetworkTableInstance GetInstance() const
Gets the instance for the entry.
nt::NetworkTableEntry::ForceSetStringArray
void ForceSetStringArray(ArrayRef< std::string > value)
Sets the entry's value.
Definition: NetworkTableEntry.inl:249
nt::NetworkTableEntry::SetPersistent
void SetPersistent()
Make value persistent through program restarts.
Definition: NetworkTableEntry.inl:267
nt::EntryNotification
NetworkTables Entry Notification.
Definition: ntcore_cpp.h:180
nt::NetworkTableEntry::SetRaw
bool SetRaw(StringRef value)
Sets the entry's value.
Definition: NetworkTableEntry.inl:162
nt::NetworkTableEntry::ForceSetRaw
void ForceSetRaw(StringRef value)
Sets the entry's value.
Definition: NetworkTableEntry.inl:218
nt::NetworkTableEntry::operator==
bool operator==(const NetworkTableEntry &oth) const
Equality operator.
Definition: NetworkTableEntry.h:630
nt::NetworkTableEntry::SetBooleanArray
bool SetBooleanArray(ArrayRef< bool > value)
Sets the entry's value.
Definition: NetworkTableEntry.inl:166
nt::RpcAnswer
NetworkTables Remote Procedure Call (Server Side)
Definition: ntcore_cpp.h:134
nt::NetworkTableEntry::GetBoolean
bool GetBoolean(bool defaultValue) const
Gets the entry's value as a boolean.
Definition: NetworkTableEntry.inl:48
nt::NetworkTableEntry::ForceSetBoolean
void ForceSetBoolean(bool value)
Sets the entry's value.
Definition: NetworkTableEntry.inl:206
nt::NetworkTableEntry::ForceSetDouble
void ForceSetDouble(double value)
Sets the entry's value.
Definition: NetworkTableEntry.inl:210
nt::NetworkTableEntry::SetDefaultBooleanArray
bool SetDefaultBooleanArray(ArrayRef< int > defaultValue)
Sets the entry's value if it does not exist.
Definition: NetworkTableEntry.inl:131
nt::NetworkTableEntry::GetType
NetworkTableType GetType() const
Gets the type of the entry.
Definition: NetworkTableEntry.inl:28
nt::NetworkTableEntry::Flags
Flags
Flag values (as returned by GetFlags()).
Definition: NetworkTableEntry.h:44
nt::NetworkTableEntry::SetString
bool SetString(const Twine &value)
Sets the entry's value.
Definition: NetworkTableEntry.inl:158
nt::NetworkTableEntry::SetValue
bool SetValue(std::shared_ptr< Value > value)
Sets the entry's value.
Definition: NetworkTableEntry.inl:146
wpi::StringRef
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:49
nt::NetworkTableEntry::GetFlags
unsigned int GetFlags() const
Returns the flags.
Definition: NetworkTableEntry.inl:32
nt::NetworkTableEntry::GetRaw
std::string GetRaw(StringRef defaultValue) const
Gets the entry's value as a raw.
Definition: NetworkTableEntry.inl:66
nt::NetworkTableEntry::GetName
std::string GetName() const
Gets the name of the entry (the key).
Definition: NetworkTableEntry.inl:24
nt::NetworkTableEntry::SetStringArray
bool SetStringArray(ArrayRef< std::string > value)
Sets the entry's value.
Definition: NetworkTableEntry.inl:193
nt::NetworkTableEntry::GetString
std::string GetString(StringRef defaultValue) const
Gets the entry's value as a string.
Definition: NetworkTableEntry.inl:60
nt::NetworkTableEntry::SetDefaultString
bool SetDefaultString(const Twine &defaultValue)
Sets the entry's value if it does not exist.
Definition: NetworkTableEntry.inl:123
nt::NetworkTableEntry::CreatePolledRpc
void CreatePolledRpc()
Create a polled RPC entry point.
nt::NetworkTableEntry::SetDefaultBoolean
bool SetDefaultBoolean(bool defaultValue)
Sets the entry's value if it does not exist.
Definition: NetworkTableEntry.inl:115
nt::NetworkTableEntry::GetDouble
double GetDouble(double defaultValue) const
Gets the entry's value as a double.
Definition: NetworkTableEntry.inl:54
nt::NetworkTableEntry::SetDouble
bool SetDouble(double value)
Sets the entry's value.
Definition: NetworkTableEntry.inl:154
nt::NetworkTableEntry::SetDefaultValue
bool SetDefaultValue(std::shared_ptr< Value > value)
Sets the entry's value if it does not exist.
Definition: NetworkTableEntry.inl:111
nt::NetworkTableEntry::SetDefaultDoubleArray
bool SetDefaultDoubleArray(ArrayRef< double > defaultValue)
Sets the entry's value if it does not exist.
Definition: NetworkTableEntry.inl:136
nt::NetworkTableEntry::GetValue
std::shared_ptr< Value > GetValue() const
Gets the entry's value.
Definition: NetworkTableEntry.inl:44
nt::NetworkTableEntry::ForceSetBooleanArray
void ForceSetBooleanArray(ArrayRef< bool > value)
Sets the entry's value.
Definition: NetworkTableEntry.inl:222
nt::NetworkTableEntry::GetDoubleArray
std::vector< double > GetDoubleArray(ArrayRef< double > defaultValue) const
Gets the entry's value as a double array.
Definition: NetworkTableEntry.inl:85
nt::RpcCall
NetworkTables Remote Procedure Call.
Definition: RpcCall.h:24
nt::NetworkTableType
NetworkTableType
NetworkTable entry type.
Definition: NetworkTableType.h:19
nt::NetworkTableEntry::SetDefaultRaw
bool SetDefaultRaw(StringRef defaultValue)
Sets the entry's value if it does not exist.
Definition: NetworkTableEntry.inl:127
nt::NetworkTableEntry::GetHandle
NT_Entry GetHandle() const
Gets the native handle for the entry.
Definition: NetworkTableEntry.inl:18
nt::NetworkTableEntry::GetInfo
EntryInfo GetInfo() const
Gets combined information about the entry.
Definition: NetworkTableEntry.inl:40
wpi::Twine
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
Definition: Twine.h:85
nt
NetworkTables (ntcore) namespace.
Definition: NetworkTableValue.h:27
nt::NetworkTableEntry::operator!=
bool operator!=(const NetworkTableEntry &oth) const
Inequality operator.
Definition: NetworkTableEntry.h:635
nt::NetworkTableEntry::SetFlags
void SetFlags(unsigned int flags)
Sets flags.
Definition: NetworkTableEntry.inl:259
nt::EntryInfo
NetworkTables Entry Information.
Definition: ntcore_cpp.h:44