#ifndef __DW_ALIGNED_PAGE_H__
#define __DW_ALIGNED_PAGE_H__
#include "dw_page.h"
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#define DW_TYPE_ALIGNED_PAGE (a_Dw_aligned_page_get_type ())
#define DW_ALIGNED_PAGE(obj) GTK_CHECK_CAST (obj, \
DW_TYPE_ALIGNED_PAGE, DwAlignedPage)
#define DW_ALIGNED_PAGE_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, \
DW_TYPE_ALIGNED_PAGE, \
DwAlignedPageClass)
#define DW_IS_ALIGNED_PAGE(obj) GTK_CHECK_TYPE (obj, \
DW_TYPE_ALIGNED_PAGE)
typedef struct _DwAlignedPage DwAlignedPage;
typedef struct _DwAlignedPageClass DwAlignedPageClass;
typedef struct _DwAlignedPageList DwAlignedPageList;
struct _DwAlignedPage
{
DwPage page;
DwAlignedPageList *list;
gint list_pos;
};
struct _DwAlignedPageClass
{
DwPageClass parent_class;
gint32 (*get_value) (DwAlignedPage *aligned_page);
void (*set_max_value) (DwAlignedPage *aligned_page,
gint32 max_value,
gint32 value);
};
struct _DwAlignedPageList
{
gint num; /* The index of the last page added (minus one). */
gint refcount; /* The numbers of non-NULL pages, may be smaller than num.
* The distinction is necessary, because removing is
* simply done by assigning NULL. */
DwAlignedPage **pages;
gint32 *values;
gint num_pages_max;
gint num_values_max;
gint32 max_value;
};
GtkType a_Dw_aligned_page_get_type (void);
void p_Dw_aligned_page_set_ref_page (DwAlignedPage *aligned_page,
DwAlignedPage *ref_page);
void p_Dw_aligned_page_update_value (DwAlignedPage *aligned_page);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __DW_ALIGNED_PAGE_H__ */