1 #ifndef _GNM_POSITION_H_
2 # define _GNM_POSITION_H_
8 GType
gnm_cell_pos_get_type (void); /* boxed type */
13 GnmDependent
*dep
; /* optionally NULL */
14 GnmExprTop
const *array_texpr
; /* non-NULL if top level is array */
24 * Used for getting a valid Sheet *from a GnmCellRef
25 * Syntax is GnmCellRef, valid Sheet *
27 #define eval_sheet(a,b) (((a) != NULL) ? (a) : (b))
29 /* Initialization routines for Evaluation Positions */
30 GType
gnm_eval_pos_get_type (void); /* Boxed type */
31 GnmEvalPos
*eval_pos_init (GnmEvalPos
*ep
, Sheet
*s
, int col
, int row
);
32 GnmEvalPos
*eval_pos_init_pos (GnmEvalPos
*ep
, Sheet
*s
, GnmCellPos
const *pos
);
33 GnmEvalPos
*eval_pos_init_dep (GnmEvalPos
*ep
, GnmDependent
const *dep
);
34 GnmEvalPos
*eval_pos_init_cell (GnmEvalPos
*ep
, GnmCell
const *cell
);
35 GnmEvalPos
*eval_pos_init_editpos (GnmEvalPos
*ep
, SheetView
const *sv
);
36 GnmEvalPos
*eval_pos_init_sheet (GnmEvalPos
*ep
, Sheet
const *sheet
);
37 gboolean
eval_pos_is_array_context (GnmEvalPos
const *ep
);
39 /* Initialization routines for Parse Positions */
40 GType
gnm_parse_pos_get_type (void); /* Boxed type */
41 GnmParsePos
*parse_pos_init (GnmParsePos
*pp
, Workbook
*wb
,
42 Sheet
const *sheet
, int col
, int row
);
43 GnmParsePos
*parse_pos_init_dep (GnmParsePos
*pp
, GnmDependent
const *dep
);
44 GnmParsePos
*parse_pos_init_cell (GnmParsePos
*pp
, GnmCell
const *cell
);
45 GnmParsePos
*parse_pos_init_evalpos (GnmParsePos
*pp
, GnmEvalPos
const *pos
);
46 GnmParsePos
*parse_pos_init_editpos (GnmParsePos
*pp
, SheetView
const *sv
);
47 GnmParsePos
*parse_pos_init_sheet (GnmParsePos
*pp
, Sheet
const *sheet
);
49 /*****************************************************************************/
55 unsigned char col_relative
;
56 unsigned char row_relative
;
62 GType
gnm_cellref_get_type (void); /* Boxed type */
63 GnmCellRef
*gnm_cellref_init (GnmCellRef
*ref
, Sheet
*sheet
,
64 int col
, int row
, gboolean rel
);
65 gboolean
gnm_cellref_equal (GnmCellRef
const *a
, GnmCellRef
const *b
);
66 guint
gnm_cellref_hash (GnmCellRef
const *cr
);
67 void gnm_cellref_make_abs (GnmCellRef
*dest
, GnmCellRef
const *src
,
68 GnmEvalPos
const *ep
);
69 void gnm_cellref_set_col_ar (GnmCellRef
*cr
, GnmParsePos
const *pp
,
71 void gnm_cellref_set_row_ar (GnmCellRef
*cr
, GnmParsePos
const *pp
,
73 int gnm_cellref_get_col (GnmCellRef
const *cr
, GnmEvalPos
const *ep
);
74 int gnm_cellref_get_row (GnmCellRef
const *cr
, GnmEvalPos
const *ep
);
76 GType
gnm_rangeref_get_type (void); /* Boxed type */
77 gboolean
gnm_rangeref_equal (GnmRangeRef
const *a
, GnmRangeRef
const *b
);
78 guint
gnm_rangeref_hash (GnmRangeRef
const *cr
);
79 GnmRangeRef
*gnm_rangeref_dup (GnmRangeRef
const *cr
);
80 void gnm_rangeref_normalize_pp (GnmRangeRef
const *rr
,
81 GnmParsePos
const *pp
,
82 Sheet
**start_sheet
, Sheet
**end_sheet
,
84 void gnm_rangeref_normalize (GnmRangeRef
const *rr
,
86 Sheet
**start_sheet
, Sheet
**end_sheet
,
89 guint
gnm_cellpos_hash (GnmCellPos
const *key
);
90 gint
gnm_cellpos_equal (GnmCellPos
const *a
, GnmCellPos
const *b
);
91 void gnm_cellpos_init_cellref_ss (GnmCellPos
*res
, GnmCellRef
const *cell_ref
,
92 GnmCellPos
const *pos
,
93 GnmSheetSize
const *ss
);
94 void gnm_cellpos_init_cellref (GnmCellPos
*cp
, GnmCellRef
const *cr
,
95 GnmCellPos
const *pos
, Sheet
const *base_sheet
);
99 #endif /* _GNM_POSITION_H_ */