[openjk] 42/130: Add method to advance the buffer offset

Simon McVittie smcv at debian.org
Fri Oct 28 11:09:16 UTC 2016


This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to branch debian/master
in repository openjk.

commit 0b8140cc1b0a40fea9edd012cbc5523a366431cc
Author: bibendovsky <bibendovsky at hotmail.com>
Date:   Sat Jul 16 20:10:34 2016 +0300

    Add method to advance the buffer offset
---
 shared/qcommon/ojk_i_saved_game_fwd.h |  5 ++++
 shared/qcommon/ojk_saved_game.cpp     | 43 +++++++++++++++++++++++++++++++++++
 shared/qcommon/ojk_saved_game.h       |  3 +++
 3 files changed, 51 insertions(+)

diff --git a/shared/qcommon/ojk_i_saved_game_fwd.h b/shared/qcommon/ojk_i_saved_game_fwd.h
index 141d8bb..1a989c1 100644
--- a/shared/qcommon/ojk_i_saved_game_fwd.h
+++ b/shared/qcommon/ojk_i_saved_game_fwd.h
@@ -116,6 +116,11 @@ public:
         int src_count);
 
 
+    // Increments buffer's offset by the specified non-negative count.
+    virtual void advance_buffer(
+        int count) = 0;
+
+
     // Returns an I/O buffer.
     virtual const Buffer& get_buffer() const = 0;
 
diff --git a/shared/qcommon/ojk_saved_game.cpp b/shared/qcommon/ojk_saved_game.cpp
index 3ab447d..5ceeab7 100644
--- a/shared/qcommon/ojk_saved_game.cpp
+++ b/shared/qcommon/ojk_saved_game.cpp
@@ -510,6 +510,49 @@ void SavedGame::set_preview_mode(
     is_preview_mode_ = value;
 }
 
+void SavedGame::advance_buffer(
+    int count)
+{
+    if (!is_readable_ && !is_writable_)
+    {
+        throw_error(
+            "Not open or created.");
+    }
+
+    if (count < 0)
+    {
+        throw_error(
+            "Negative count.");
+    }
+
+    if (count == 0)
+    {
+        return;
+    }
+
+    auto new_offset = io_buffer_offset_ + count;
+    auto buffer_size = io_buffer_.size();
+
+    if (new_offset > buffer_size)
+    {
+        if (is_readable_)
+        {
+            throw_error(
+                "Not enough data.");
+        }
+        else if (is_writable_)
+        {
+            io_buffer_offset_ = new_offset;
+
+            if (new_offset > buffer_size)
+            {
+                io_buffer_.resize(
+                    new_offset);
+            }
+        }
+    }
+}
+
 const SavedGame::Buffer& SavedGame::get_buffer() const
 {
     return io_buffer_;
diff --git a/shared/qcommon/ojk_saved_game.h b/shared/qcommon/ojk_saved_game.h
index 7511a2b..d0ece43 100644
--- a/shared/qcommon/ojk_saved_game.h
+++ b/shared/qcommon/ojk_saved_game.h
@@ -91,6 +91,9 @@ public:
     void set_preview_mode(
         bool value);
 
+    // Increments buffer's offset by the specified non-negative count.
+    void advance_buffer(
+        int count) override;
 
     // Returns an I/O buffer.
     const Buffer& get_buffer() const override;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/openjk.git



More information about the Pkg-games-commits mailing list