mirror of https://github.com/Gnucash/gnucash
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.6 KiB
78 lines
2.6 KiB
#ifndef GNUMERIC_POSITION_H
|
|
#define GNUMERIC_POSITION_H
|
|
|
|
#include "gnumeric.h"
|
|
|
|
struct _GnmEvalPos {
|
|
GnmCellPos eval;
|
|
Sheet *sheet;
|
|
GnmDependent *dep; /* optionally NULL */
|
|
};
|
|
|
|
struct _GnmParsePos {
|
|
GnmCellPos eval;
|
|
Sheet *sheet;
|
|
Workbook *wb;
|
|
};
|
|
|
|
/**
|
|
* Used for getting a valid Sheet *from a GnmCellRef
|
|
* Syntax is GnmCellRef, valid Sheet *
|
|
*/
|
|
#define eval_sheet(a,b) (((a) != NULL) ? (a) : (b))
|
|
|
|
/* Initialization routines for Evaluation Positions */
|
|
GnmEvalPos *eval_pos_init (GnmEvalPos *ep, Sheet *s, GnmCellPos const *pos);
|
|
GnmEvalPos *eval_pos_init_dep (GnmEvalPos *ep, GnmDependent const *dep);
|
|
GnmEvalPos *eval_pos_init_cell (GnmEvalPos *ep, GnmCell const *cell);
|
|
GnmEvalPos *eval_pos_init_sheet (GnmEvalPos *ep, Sheet *sheet);
|
|
|
|
/* Initialization routines for Parse Positions */
|
|
GnmParsePos *parse_pos_init (GnmParsePos *pp, Workbook *wb,
|
|
Sheet *sheet, int col, int row);
|
|
GnmParsePos *parse_pos_init_dep (GnmParsePos *pp, GnmDependent const *dep);
|
|
GnmParsePos *parse_pos_init_cell (GnmParsePos *pp, GnmCell const *cell);
|
|
GnmParsePos *parse_pos_init_evalpos (GnmParsePos *pp, GnmEvalPos const *pos);
|
|
GnmParsePos *parse_pos_init_editpos (GnmParsePos *pp, SheetView const *sv);
|
|
GnmParsePos *parse_pos_init_sheet (GnmParsePos *pp, Sheet *sheet);
|
|
|
|
/*****************************************************************************/
|
|
|
|
struct _GnmCellRef {
|
|
Sheet *sheet;
|
|
int col, row;
|
|
|
|
unsigned char col_relative;
|
|
unsigned char row_relative;
|
|
};
|
|
struct _GnmRangeRef {
|
|
GnmCellRef a, b;
|
|
};
|
|
|
|
GnmCellRef *cellref_init (GnmCellRef *ref, Sheet *sheet, int col, int row,
|
|
gboolean rel);
|
|
gboolean cellref_equal (GnmCellRef const *a, GnmCellRef const *b);
|
|
guint cellref_hash (GnmCellRef const *cr);
|
|
void cellref_make_abs (GnmCellRef *dest,
|
|
GnmCellRef const *src,
|
|
GnmEvalPos const *ep);
|
|
int cellref_get_abs_col (GnmCellRef const *ref,
|
|
GnmEvalPos const *pos);
|
|
int cellref_get_abs_row (GnmCellRef const *cell_ref,
|
|
GnmEvalPos const *src_fp);
|
|
void cellref_get_abs_pos (GnmCellRef const *cell_ref,
|
|
GnmCellPos const *pos,
|
|
GnmCellPos *res);
|
|
|
|
gboolean rangeref_equal (GnmRangeRef const *a, GnmRangeRef const *b);
|
|
guint rangeref_hash (GnmRangeRef const *cr);
|
|
GnmRangeRef *rangeref_dup (GnmRangeRef const *cr);
|
|
void rangeref_normalize (GnmRangeRef const *ref, GnmEvalPos const *ep,
|
|
Sheet **start_sheet, Sheet **end_sheet,
|
|
GnmRange *dest);
|
|
|
|
guint cellpos_hash (GnmCellPos const *key);
|
|
gint cellpos_equal (GnmCellPos const *a, GnmCellPos const *b);
|
|
|
|
#endif /* GNUMERIC_POSITION_H */
|