Loading system/gd/packet/parser/fields/array_field.cc +1 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,7 @@ void ArrayField::GenExtractor(std::ostream& s, Size start_offset, Size end_offse void ArrayField::GenGetter(std::ostream& s, Size start_offset, Size end_offset) const { s << GetDataType(); s << " Get" << util::UnderscoreToCamelCase(GetName()) << "() {"; s << "ASSERT(was_validated_);"; GenExtractor(s, start_offset, end_offset); Loading system/gd/packet/parser/fields/custom_field.cc +2 −2 Original line number Diff line number Diff line Loading @@ -48,8 +48,8 @@ void CustomField::GenExtractor(std::ostream& s, Size start_offset, Size end_offs } void CustomField::GenGetter(std::ostream& s, Size start_offset, Size end_offset) const { s << "std::vector<" << GetDataType() << ">"; s << " Get" << util::UnderscoreToCamelCase(GetName()) << "() const {"; s << "std::vector<" << GetDataType() << "> Get" << util::UnderscoreToCamelCase(GetName()) << "() const {"; s << "ASSERT(was_validated_);"; GenExtractor(s, start_offset, end_offset); s << "return vec;"; Loading system/gd/packet/parser/fields/packet_field.cc +14 −8 Original line number Diff line number Diff line Loading @@ -45,16 +45,22 @@ void PacketField::GenBounds(std::ostream& s, Size start_offset, Size end_offset, ERROR(this) << "Can not find the bounds of a field at a non byte-aligned offset." << start_offset << end_offset; } s << "ASSERT(was_validated_);"; if (!start_offset.empty()) { s << "size_t field_begin = (" << start_offset << ") / 8;"; } else { s << "size_t field_begin = size() - (" << end_offset << " + " << field_size << ") / 8;"; } // If the field has a known size, use the size + field_begin for field_end, otherwise use the end_offset. if (!end_offset.empty()) { s << "size_t field_end = size() - (" << end_offset << ") / 8;"; // If the field has a known size, use the minimum for the end if (!field_size.empty()) { s << "size_t field_sized_end = field_begin + (" << field_size << ") / 8;"; s << "if (field_sized_end < field_end) { field_end = field_sized_end; }"; } } else { s << "size_t field_end = field_begin + (" << field_size << ") / 8;"; } } bool PacketField::GenBuilderMember(std::ostream& s) const { Loading system/gd/packet/parser/fields/packet_field.h +1 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ class PacketField : public Loggable { // Generate the parameter for Create(), return true if a parameter was added. virtual bool GenBuilderParameter(std::ostream& s) const = 0; // Generate the actual storage for the parameter, return true if it was added. virtual bool GenBuilderMember(std::ostream& s) const; // Returns whether or not the field must be validated. Loading system/gd/packet/parser/fields/payload_field.cc +2 −0 Original line number Diff line number Diff line Loading @@ -60,11 +60,13 @@ void PayloadField::GenExtractor(std::ostream&, Size, Size) const { void PayloadField::GenGetter(std::ostream& s, Size start_offset, Size end_offset) const { s << "PacketView<kLittleEndian> GetPayload() const {"; s << "ASSERT(was_validated_);"; GenBounds(s, start_offset, end_offset, GetSize()); s << "return GetLittleEndianSubview(field_begin, field_end);"; s << "}\n\n"; s << "PacketView<!kLittleEndian> GetPayloadBigEndian() const {"; s << "ASSERT(was_validated_);"; GenBounds(s, start_offset, end_offset, GetSize()); s << "return GetBigEndianSubview(field_begin, field_end);"; s << "}\n"; Loading Loading
system/gd/packet/parser/fields/array_field.cc +1 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,7 @@ void ArrayField::GenExtractor(std::ostream& s, Size start_offset, Size end_offse void ArrayField::GenGetter(std::ostream& s, Size start_offset, Size end_offset) const { s << GetDataType(); s << " Get" << util::UnderscoreToCamelCase(GetName()) << "() {"; s << "ASSERT(was_validated_);"; GenExtractor(s, start_offset, end_offset); Loading
system/gd/packet/parser/fields/custom_field.cc +2 −2 Original line number Diff line number Diff line Loading @@ -48,8 +48,8 @@ void CustomField::GenExtractor(std::ostream& s, Size start_offset, Size end_offs } void CustomField::GenGetter(std::ostream& s, Size start_offset, Size end_offset) const { s << "std::vector<" << GetDataType() << ">"; s << " Get" << util::UnderscoreToCamelCase(GetName()) << "() const {"; s << "std::vector<" << GetDataType() << "> Get" << util::UnderscoreToCamelCase(GetName()) << "() const {"; s << "ASSERT(was_validated_);"; GenExtractor(s, start_offset, end_offset); s << "return vec;"; Loading
system/gd/packet/parser/fields/packet_field.cc +14 −8 Original line number Diff line number Diff line Loading @@ -45,16 +45,22 @@ void PacketField::GenBounds(std::ostream& s, Size start_offset, Size end_offset, ERROR(this) << "Can not find the bounds of a field at a non byte-aligned offset." << start_offset << end_offset; } s << "ASSERT(was_validated_);"; if (!start_offset.empty()) { s << "size_t field_begin = (" << start_offset << ") / 8;"; } else { s << "size_t field_begin = size() - (" << end_offset << " + " << field_size << ") / 8;"; } // If the field has a known size, use the size + field_begin for field_end, otherwise use the end_offset. if (!end_offset.empty()) { s << "size_t field_end = size() - (" << end_offset << ") / 8;"; // If the field has a known size, use the minimum for the end if (!field_size.empty()) { s << "size_t field_sized_end = field_begin + (" << field_size << ") / 8;"; s << "if (field_sized_end < field_end) { field_end = field_sized_end; }"; } } else { s << "size_t field_end = field_begin + (" << field_size << ") / 8;"; } } bool PacketField::GenBuilderMember(std::ostream& s) const { Loading
system/gd/packet/parser/fields/packet_field.h +1 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ class PacketField : public Loggable { // Generate the parameter for Create(), return true if a parameter was added. virtual bool GenBuilderParameter(std::ostream& s) const = 0; // Generate the actual storage for the parameter, return true if it was added. virtual bool GenBuilderMember(std::ostream& s) const; // Returns whether or not the field must be validated. Loading
system/gd/packet/parser/fields/payload_field.cc +2 −0 Original line number Diff line number Diff line Loading @@ -60,11 +60,13 @@ void PayloadField::GenExtractor(std::ostream&, Size, Size) const { void PayloadField::GenGetter(std::ostream& s, Size start_offset, Size end_offset) const { s << "PacketView<kLittleEndian> GetPayload() const {"; s << "ASSERT(was_validated_);"; GenBounds(s, start_offset, end_offset, GetSize()); s << "return GetLittleEndianSubview(field_begin, field_end);"; s << "}\n\n"; s << "PacketView<!kLittleEndian> GetPayloadBigEndian() const {"; s << "ASSERT(was_validated_);"; GenBounds(s, start_offset, end_offset, GetSize()); s << "return GetBigEndianSubview(field_begin, field_end);"; s << "}\n"; Loading