15 #include "datagram_ui.h" 16 #include "datagramIterator.h" 23 enum DatagramElement {
40 while (p < line.length()) {
42 while (p < line.length() && isspace(line[p])) {
47 if (p < line.length()) {
48 if (isdigit(line[p]) || line[p] ==
'-') {
52 while (p < line.length() && isdigit(line[p])) {
55 if (p < line.length() && line[p] ==
'.') {
58 while (p < line.length() && isdigit(line[p])) {
61 double num = patof(line.substr(start, p - start).c_str());
66 int num = atoi(line.substr(start, p - start).c_str());
71 }
else if (line[p] ==
'"') {
75 while (p < line.length() && line[p] !=
'"') {
78 string str = line.substr(start, p - start);
86 while (p < line.length() && !isspace(line[p])) {
89 string str = line.substr(start, p - start);
100 operator << (ostream &out,
const NetDatagram &datagram) {
103 DatagramElement de = (DatagramElement)di.get_int8();
104 while (de != DE_end) {
107 out << di.get_int32() <<
" ";
111 out << di.get_float64() <<
" ";
115 out <<
"\"" << di.get_string() <<
"\" ";
119 out <<
"(invalid datagram)";
122 de = (DatagramElement)di.get_int8();
A specific kind of Datagram, especially for sending across or receiving from a network.
void add_string(const string &str)
Adds a variable-length string to the datagram.
void add_float64(PN_float64 value)
Adds a 64-bit floating-point number to the datagram.
void add_int8(PN_int8 value)
Adds a signed 8-bit integer to the datagram.
virtual void clear()
Resets the datagram to empty, in preparation for building up a new datagram.
void add_int32(PN_int32 value)
Adds a signed 32-bit integer to the datagram.
A class to retrieve the individual data elements previously stored in a Datagram. ...