Loading system/gd/packet/packet_view.h +4 −6 Original line number Diff line number Diff line Loading @@ -34,23 +34,20 @@ template <bool little_endian> class PacketView { public: explicit PacketView(std::forward_list<View> fragments); PacketView(const PacketView& PacketView) = default; explicit PacketView(std::shared_ptr<const std::vector<uint8_t>> packet); PacketView(const PacketView& PacketView) = default; PacketView<little_endian>() = delete; virtual ~PacketView() = default; virtual Iterator<little_endian> begin() const; virtual Iterator<little_endian> end() const; Iterator<little_endian> begin() const; Iterator<little_endian> end() const; uint8_t operator[](size_t i) const; uint8_t at(size_t index) const; size_t size() const; PacketView<true> GetLittleEndianSubview(size_t begin, size_t end) const; PacketView<false> GetBigEndianSubview(size_t begin, size_t end) const; protected: Loading @@ -59,6 +56,7 @@ class PacketView { private: std::forward_list<View> fragments_; size_t length_; std::forward_list<View> GetSubviewList(size_t begin, size_t end) const; }; Loading system/gd/packet/parser/fields/payload_field.cc +0 −8 Original line number Diff line number Diff line Loading @@ -70,14 +70,6 @@ void PayloadField::GenGetter(std::ostream& s, Size start_offset, Size end_offset GenBounds(s, start_offset, end_offset, GetSize()); s << "return GetLittleEndianSubview(field_begin, field_end);"; s << "}\n\n"; s << "PacketView<!kLittleEndian> " << GetGetterFunctionName() << "BigEndian() const {"; s << "ASSERT(was_validated_);"; s << "size_t end_index = size();"; s << "auto to_bound = begin();"; GenBounds(s, start_offset, end_offset, GetSize()); s << "return GetBigEndianSubview(field_begin, field_end);"; s << "}\n"; } std::string PayloadField::GetBuilderParameterType() const { Loading system/gd/packet/parser/packet_def.cc +23 −11 Original line number Diff line number Diff line Loading @@ -179,17 +179,29 @@ void PacketDef::GenValidator(std::ostream& s) const { } } // Write the function declaration. s << "virtual bool IsValid() " << (parent_ != nullptr ? " override" : "") << " {"; s << "if (was_validated_) { return true; } "; s << "else { was_validated_ = true; was_validated_ = IsValid_(); return was_validated_; }"; s << "}"; s << "protected:"; s << "virtual bool IsValid_() const {"; if (parent_ != nullptr) { s << "if (!" << parent_->name_ << "View::IsValid_()) { return false; } "; // Generate the public validator IsValid(). // The method only needs to be generated for the top most class. if (parent_ == nullptr) { s << "bool IsValid() {" << std::endl; s << " if (was_validated_) {" << std::endl; s << " return true;" << std::endl; s << " } else {" << std::endl; s << " was_validated_ = true;" << std::endl; s << " return (was_validated_ = Validate());" << std::endl; s << " }" << std::endl; s << "}" << std::endl; } // Generate the private validator Validate(). // The method is overridden by all child classes. s << "protected:" << std::endl; if (parent_ == nullptr) { s << "virtual bool Validate() const {" << std::endl; } else { s << "bool Validate() const override {" << std::endl; s << " if (!" << parent_->name_ << "View::Validate()) {" << std::endl; s << " return false;" << std::endl; s << " }" << std::endl; } // Offset by the parents known size. We know that any dynamic fields can Loading Loading
system/gd/packet/packet_view.h +4 −6 Original line number Diff line number Diff line Loading @@ -34,23 +34,20 @@ template <bool little_endian> class PacketView { public: explicit PacketView(std::forward_list<View> fragments); PacketView(const PacketView& PacketView) = default; explicit PacketView(std::shared_ptr<const std::vector<uint8_t>> packet); PacketView(const PacketView& PacketView) = default; PacketView<little_endian>() = delete; virtual ~PacketView() = default; virtual Iterator<little_endian> begin() const; virtual Iterator<little_endian> end() const; Iterator<little_endian> begin() const; Iterator<little_endian> end() const; uint8_t operator[](size_t i) const; uint8_t at(size_t index) const; size_t size() const; PacketView<true> GetLittleEndianSubview(size_t begin, size_t end) const; PacketView<false> GetBigEndianSubview(size_t begin, size_t end) const; protected: Loading @@ -59,6 +56,7 @@ class PacketView { private: std::forward_list<View> fragments_; size_t length_; std::forward_list<View> GetSubviewList(size_t begin, size_t end) const; }; Loading
system/gd/packet/parser/fields/payload_field.cc +0 −8 Original line number Diff line number Diff line Loading @@ -70,14 +70,6 @@ void PayloadField::GenGetter(std::ostream& s, Size start_offset, Size end_offset GenBounds(s, start_offset, end_offset, GetSize()); s << "return GetLittleEndianSubview(field_begin, field_end);"; s << "}\n\n"; s << "PacketView<!kLittleEndian> " << GetGetterFunctionName() << "BigEndian() const {"; s << "ASSERT(was_validated_);"; s << "size_t end_index = size();"; s << "auto to_bound = begin();"; GenBounds(s, start_offset, end_offset, GetSize()); s << "return GetBigEndianSubview(field_begin, field_end);"; s << "}\n"; } std::string PayloadField::GetBuilderParameterType() const { Loading
system/gd/packet/parser/packet_def.cc +23 −11 Original line number Diff line number Diff line Loading @@ -179,17 +179,29 @@ void PacketDef::GenValidator(std::ostream& s) const { } } // Write the function declaration. s << "virtual bool IsValid() " << (parent_ != nullptr ? " override" : "") << " {"; s << "if (was_validated_) { return true; } "; s << "else { was_validated_ = true; was_validated_ = IsValid_(); return was_validated_; }"; s << "}"; s << "protected:"; s << "virtual bool IsValid_() const {"; if (parent_ != nullptr) { s << "if (!" << parent_->name_ << "View::IsValid_()) { return false; } "; // Generate the public validator IsValid(). // The method only needs to be generated for the top most class. if (parent_ == nullptr) { s << "bool IsValid() {" << std::endl; s << " if (was_validated_) {" << std::endl; s << " return true;" << std::endl; s << " } else {" << std::endl; s << " was_validated_ = true;" << std::endl; s << " return (was_validated_ = Validate());" << std::endl; s << " }" << std::endl; s << "}" << std::endl; } // Generate the private validator Validate(). // The method is overridden by all child classes. s << "protected:" << std::endl; if (parent_ == nullptr) { s << "virtual bool Validate() const {" << std::endl; } else { s << "bool Validate() const override {" << std::endl; s << " if (!" << parent_->name_ << "View::Validate()) {" << std::endl; s << " return false;" << std::endl; s << " }" << std::endl; } // Offset by the parents known size. We know that any dynamic fields can Loading