Now you can download a copy of these docs so you can use them offline! Download now
DefaultEntryTypes.cpp
1 /*
2  * DefaultEntryTypes.cpp
3  *
4  * Created on: Sep 24, 2012
5  * Author: Mitchell Wills
6  */
7 
8 #include "networktables2/type/DefaultEntryTypes.h"
9 #include "networktables2/type/NetworkTableEntryType.h"
10 #include "networktables2/connection/DataIOStream.h"
11 #include "networktables2/type/BooleanArray.h"
12 #include "networktables2/type/NumberArray.h"
13 #include "networktables2/type/StringArray.h"
14 
15 
16 DefaultEntryTypes::BOOLEAN_t DefaultEntryTypes::BOOLEAN;
17 DefaultEntryTypes::DOUBLE_t DefaultEntryTypes::DOUBLE;
18 DefaultEntryTypes::STRING_t DefaultEntryTypes::STRING;
19 
20 DefaultEntryTypes::BOOLEAN_t::BOOLEAN_t() : NetworkTableEntryType(BOOLEAN_RAW_ID, "Boolean"){}
21 void DefaultEntryTypes::BOOLEAN_t::sendValue(EntryValue value, DataIOStream& os) {
22  os.writeByte(value.b);
23 }
24 EntryValue DefaultEntryTypes::BOOLEAN_t::readValue(DataIOStream& is) {
25  EntryValue value;
26  value.b = (is.readByte()!=0);
27  return value;
28 }
29 bool DefaultEntryTypes::BOOLEAN_t::areEqual(EntryValue v1, EntryValue v2) {
30  return v1.b == v2.b;
31 }
32 
33 DefaultEntryTypes::DOUBLE_t::DOUBLE_t() : NetworkTableEntryType(DOUBLE_RAW_ID, "Double"){}
34 void DefaultEntryTypes::DOUBLE_t::sendValue(EntryValue eValue, DataIOStream& os) {
35  uint64_t value = *reinterpret_cast<uint64_t*>(&eValue.f);
36  for(int i = 0; i<8; ++i){
37  os.writeByte((value>>56)&0xFF);
38  value<<=8;
39  }
40 }
41 EntryValue DefaultEntryTypes::DOUBLE_t::readValue(DataIOStream& is) {
42  uint64_t value = 0;
43 
44  for(int i = 0; i<8; ++i){
45  value<<=8;
46  value |= (is.readByte()&0xFF);
47  }
48 
49  EntryValue eValue;
50  eValue.f = *reinterpret_cast<double*>(&value);
51  return eValue;
52 }
53 bool DefaultEntryTypes::DOUBLE_t::areEqual(EntryValue v1, EntryValue v2) {
54  return v1.f == v2.f;
55 }
56 
57 DefaultEntryTypes::STRING_t::STRING_t() : NetworkTableEntryType(STRING_RAW_ID, "String"){}
58 void DefaultEntryTypes::STRING_t::sendValue(EntryValue value, DataIOStream& os) {
59  os.writeString(*(std::string*)value.ptr);
60 }
61 EntryValue DefaultEntryTypes::STRING_t::readValue(DataIOStream& is) {
62  EntryValue value;
63  value.ptr = is.readString();
64  return value;
65 }
66 EntryValue DefaultEntryTypes::STRING_t::copyValue(EntryValue value){
67  if(value.ptr==NULL)
68  return value;
69  EntryValue newValue;
70  newValue.ptr = new std::string(*((std::string*)value.ptr));
71  return newValue;
72 }
73 void DefaultEntryTypes::STRING_t::deleteValue(EntryValue value){
74  if(value.ptr!=NULL)
75  delete (std::string*)value.ptr;
76 }
77 bool DefaultEntryTypes::STRING_t::areEqual(EntryValue v1, EntryValue v2) {
78  std::string* str1 = (std::string*)v1.ptr;
79  std::string* str2 = (std::string*)v2.ptr;
80  return str1->compare(*str2)==0;
81 }
82 
83 
84 
86  manager->RegisterType(BOOLEAN);
87  manager->RegisterType(DOUBLE);
88  manager->RegisterType(STRING);
89  manager->RegisterType(BooleanArray::TYPE);
90  manager->RegisterType(NumberArray::TYPE);
91  manager->RegisterType(StringArray::TYPE);
92 }
93 
94 
95 
96 
void RegisterType(NetworkTableEntryType &type)
Definition: ITable.h:13
static void registerTypes(NetworkTableEntryTypeManager *typeManager)

Generated on Sat Apr 26 2014 12:26:45 for WPILibC++ by doxygen 1.8.6