You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2013/07/17 16:12:35 UTC
[lucy-commits] [15/34] git commit: refs/heads/master - Access FileWindow member vars
via getters.
Access FileWindow member vars via getters.
Project: http://git-wip-us.apache.org/repos/asf/lucy/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/4f7440f8
Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/4f7440f8
Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/4f7440f8
Branch: refs/heads/master
Commit: 4f7440f81617a182a53d1e7bc363023f4d6c9375
Parents: d04580a
Author: Marvin Humphrey <ma...@rectangular.com>
Authored: Sat Jun 29 15:07:37 2013 -0700
Committer: Marvin Humphrey <ma...@rectangular.com>
Committed: Tue Jul 16 16:08:42 2013 -0700
----------------------------------------------------------------------
core/Lucy/Store/FSFileHandle.c | 5 +++--
core/Lucy/Store/FileWindow.c | 14 ++++++++++++++
core/Lucy/Store/FileWindow.cfh | 9 +++++++++
core/Lucy/Store/InStream.c | 25 +++++++++++++++----------
4 files changed, 41 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucy/blob/4f7440f8/core/Lucy/Store/FSFileHandle.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Store/FSFileHandle.c b/core/Lucy/Store/FSFileHandle.c
index 4074a75..ac523fa 100644
--- a/core/Lucy/Store/FSFileHandle.c
+++ b/core/Lucy/Store/FSFileHandle.c
@@ -15,7 +15,6 @@
*/
#define C_LUCY_FSFILEHANDLE
-#define C_LUCY_FILEWINDOW
#include "Lucy/Util/ToolSet.h"
#include <errno.h>
@@ -313,7 +312,9 @@ SI_window(FSFileHandle *self, FSFileHandleIVARS *ivars, FileWindow *window,
bool
FSFH_release_window(FSFileHandle *self, FileWindow *window) {
- if (!SI_unmap(self, window->buf, window->len)) { return false; }
+ char *buf = FileWindow_Get_Buf(window);
+ int64_t len = FileWindow_Get_Len(window);
+ if (!SI_unmap(self, buf, len)) { return false; }
FileWindow_Set_Window(window, NULL, 0, 0);
return true;
}
http://git-wip-us.apache.org/repos/asf/lucy/blob/4f7440f8/core/Lucy/Store/FileWindow.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Store/FileWindow.c b/core/Lucy/Store/FileWindow.c
index 067c6a8..a410931 100644
--- a/core/Lucy/Store/FileWindow.c
+++ b/core/Lucy/Store/FileWindow.c
@@ -51,4 +51,18 @@ FileWindow_set_window(FileWindow *self, char *buf, int64_t offset,
ivars->len = len;
}
+char*
+FileWindow_get_buf(FileWindow *self) {
+ return FileWindow_IVARS(self)->buf;
+}
+
+int64_t
+FileWindow_get_offset(FileWindow *self) {
+ return FileWindow_IVARS(self)->offset;
+}
+
+int64_t
+FileWindow_get_len(FileWindow *self) {
+ return FileWindow_IVARS(self)->len;
+}
http://git-wip-us.apache.org/repos/asf/lucy/blob/4f7440f8/core/Lucy/Store/FileWindow.cfh
----------------------------------------------------------------------
diff --git a/core/Lucy/Store/FileWindow.cfh b/core/Lucy/Store/FileWindow.cfh
index dc1d17c..9b8a359 100644
--- a/core/Lucy/Store/FileWindow.cfh
+++ b/core/Lucy/Store/FileWindow.cfh
@@ -35,6 +35,15 @@ class Lucy::Store::FileWindow inherits Clownfish::Obj {
void
Set_Window(FileWindow *self, char *buf, int64_t offset, int64_t len);
+
+ char*
+ Get_Buf(FileWindow *self);
+
+ int64_t
+ Get_Offset(FileWindow *self);
+
+ int64_t
+ Get_Len(FileWindow *self);
}
http://git-wip-us.apache.org/repos/asf/lucy/blob/4f7440f8/core/Lucy/Store/InStream.c
----------------------------------------------------------------------
diff --git a/core/Lucy/Store/InStream.c b/core/Lucy/Store/InStream.c
index 7727a11..caf286e 100644
--- a/core/Lucy/Store/InStream.c
+++ b/core/Lucy/Store/InStream.c
@@ -15,7 +15,6 @@
*/
#define C_LUCY_INSTREAM
-#define C_LUCY_FILEWINDOW
#include "Lucy/Util/ToolSet.h"
#include "Lucy/Store/InStream.h"
@@ -203,9 +202,12 @@ S_fill(InStream *self, int64_t amount) {
// Make the request.
if (FH_Window(ivars->file_handle, window, real_file_pos, amount)) {
- char *const window_limit = window->buf + window->len;
- ivars->buf = window->buf
- - window->offset // theoretical start of real file
+ char *fw_buf = FileWindow_Get_Buf(window);
+ int64_t fw_offset = FileWindow_Get_Offset(window);
+ int64_t fw_len = FileWindow_Get_Len(window);
+ char *const window_limit = fw_buf + fw_len;
+ ivars->buf = fw_buf
+ - fw_offset // theoretical start of real file
+ ivars->offset // top of virtual file
+ virtual_file_pos; // position within virtual file
ivars->limit = window_limit - ivars->buf > remaining
@@ -228,8 +230,11 @@ void
InStream_seek(InStream *self, int64_t target) {
InStreamIVARS *const ivars = InStream_IVARS(self);
FileWindow *const window = ivars->window;
- int64_t virtual_window_top = window->offset - ivars->offset;
- int64_t virtual_window_end = virtual_window_top + window->len;
+ char *fw_buf = FileWindow_Get_Buf(window);
+ int64_t fw_offset = FileWindow_Get_Offset(window);
+ int64_t fw_len = FileWindow_Get_Len(window);
+ int64_t virtual_window_top = fw_offset - ivars->offset;
+ int64_t virtual_window_end = virtual_window_top + fw_len;
if (target < 0) {
THROW(ERR, "Can't Seek '%o' to negative target %i64", ivars->filename,
@@ -239,7 +244,7 @@ InStream_seek(InStream *self, int64_t target) {
else if (target >= virtual_window_top
&& target <= virtual_window_end
) {
- ivars->buf = window->buf - window->offset + ivars->offset + target;
+ ivars->buf = fw_buf - fw_offset + ivars->offset + target;
}
else if (target > ivars->len) {
THROW(ERR, "Can't Seek '%o' past EOF (%i64 > %i64)", ivars->filename,
@@ -259,9 +264,9 @@ InStream_seek(InStream *self, int64_t target) {
static INLINE int64_t
SI_tell(InStream *self) {
InStreamIVARS *const ivars = InStream_IVARS(self);
- FileWindow *const window = ivars->window;
- int64_t pos_in_buf = PTR_TO_I64(ivars->buf) - PTR_TO_I64(window->buf);
- return pos_in_buf + window->offset - ivars->offset;
+ char *fw_buf = FileWindow_Get_Buf(ivars->window);
+ int64_t pos_in_buf = PTR_TO_I64(ivars->buf) - PTR_TO_I64(fw_buf);
+ return pos_in_buf + FileWindow_Get_Offset(ivars->window) - ivars->offset;
}
int64_t