aboutsummaryrefslogtreecommitdiff
path: root/src/include/storage/bufpage.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/storage/bufpage.h')
-rw-r--r--src/include/storage/bufpage.h43
1 files changed, 38 insertions, 5 deletions
diff --git a/src/include/storage/bufpage.h b/src/include/storage/bufpage.h
index 7304b6115aa..b0408106ef7 100644
--- a/src/include/storage/bufpage.h
+++ b/src/include/storage/bufpage.h
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: bufpage.h,v 1.8 1997/08/19 21:39:47 momjian Exp $
+ * $Id: bufpage.h,v 1.9 1997/08/24 23:08:01 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -233,17 +233,50 @@ typedef enum {
#define PageGetSpecialPointer(page) \
(AssertMacro(PageIsValid(page)) ? \
(char *) ((char *) (page) + ((PageHeader) (page))->pd_special) \
- : (char *) 0)
+ : (char *)0 )
+/*
+ * PageGetItem --
+ * Retrieves an item on the given page.
+ *
+ * Note:
+ * This does change the status of any of the resources passed.
+ * The semantics may change in the future.
+ */
+#define PageGetItem(page, itemId) \
+ (AssertMacro(PageIsValid(page)) ? \
+ AssertMacro(itemId->lp_flags & LP_USED) ? \
+ (Item)(((char *)page) + itemId->lp_off) : false : false)
+
+/*
+ * BufferGetPageSize --
+ * Returns the page size within a buffer.
+ *
+ * Notes:
+ * Assumes buffer is valid.
+ *
+ * The buffer can be a raw disk block and need not contain a valid
+ * (formatted) disk page.
+ */
+/* XXX dig out of buffer descriptor */
+#define BufferGetPageSize(buffer) \
+ (AssertMacro(BufferIsValid(buffer)) ? \
+ AssertMacro(PageSizeIsValid(pageSize)) ? \
+ ((Size)BLCKSZ) : false : false)
+
+/*
+ * BufferGetPage --
+ * Returns the page associated with a buffer.
+ */
+#define BufferGetPage(buffer) ((Page)BufferGetBlock(buffer))
+
+
/* ----------------------------------------------------------------
* extern declarations
* ----------------------------------------------------------------
*/
-extern Size BufferGetPageSize(Buffer buffer);
-extern Page BufferGetPage(Buffer buffer);
extern void PageInit(Page page, Size pageSize, Size specialSize);
-extern Item PageGetItem(Page page, ItemId itemId);
extern OffsetNumber PageAddItem(Page page, Item item, Size size,
OffsetNumber offsetNumber, ItemIdFlags flags);
extern Page PageGetTempPage(Page page, Size specialSize);