/* Coords.h */
#include "../cfiles.h"
/*--------------------------------------------------------------------*/
/*
---------------------------------------------------------------
object to hold coordinates of a graph
type -- coordinates type
1 -- use tuple, x(icoor, idim) = coors[idim + ndim*icoor]
2 -- use bycoord, x(icoor, idim) = coors[icoor + ncoor*idim]
ndim -- number of dimensions
ncoor -- number of coordinates
coors -- coordinate array
---------------------------------------------------------------
*/
typedef struct _Coords Coords ;
struct _Coords {
int type ;
int ndim ;
int ncoor ;
float *coors ;
} ;
#define COORDS_BY_TUPLE 1
#define COORDS_BY_COORD 2
/*--------------------------------------------------------------------*/
/*
------------------------------------------------------------------------
----- methods found in basics.c ----------------------------------------
------------------------------------------------------------------------
*/
/*
-----------------------
simplest constructor
created -- 95dec17, cca
-----------------------
*/
Coords *
Coords_new (
void
) ;
/*
-----------------------
set the default fields
created -- 95dec17, cca
-----------------------
*/
void
Coords_setDefaultFields (
Coords *coords
) ;
/*
--------------------------------------------------
clear the data fields, releasing allocated storage
created -- 95dec17, cca
--------------------------------------------------
*/
void
Coords_clearData (
Coords *coords
) ;
/*
------------------------------------------
destructor, free's the object and its data
created -- 95dec17, cca
------------------------------------------
*/
Coords *
Coords_free (
Coords *coords
) ;
/*--------------------------------------------------------------------*/
/*
------------------------------------------------------------------------
----- methods found in init.c ------------------------------------------
------------------------------------------------------------------------
*/
/*
---------------------------------------------------
initialize the object, storage freed if repeat call
created -- 95dec17, cca
---------------------------------------------------
*/
void
Coords_init (
Coords *coords,
int type,
int ndim,
int ncoor
) ;
/*
----------------------------------------------------------
purpose -- initialize a 9-point operator on a n1 x n2 grid
input --
bbox -- bounding box
bbox[0] -- x southwest
bbox[1] -- y southwest
bbox[2] -- x northeast
bbox[3] -- y northeast
Type -- type of object
n1 -- # of grid points in first direction
n2 -- # of grid points in second direction
ncomp -- # of components per grid point
created -- 95dec17, cca
----------------------------------------------------------
*/
void
Coords_init9P (
Coords *coords,
float bbox[],
int type,
int n1,
int n2,
int ncomp
) ;
/*
----------------------------------------------------------------
purpose -- initialize a 27-point operator on a n1 x n2 x n3 grid
input --
bbox -- bounding box
bbox[0] -- x southwest bottom
bbox[1] -- y southwest bottom
bbox[2] -- z southwest bottom
bbox[3] -- x northeast top
bbox[4] -- y northeast top
bbox[5] -- z northeast top
Type -- type of object
n1 -- # of grid points in first direction
n2 -- # of grid points in second direction
n3 -- # of grid points in third direction
ncomp -- # of components per grid point
created -- 95dec17, cca
----------------------------------------------------------------
*/
void
Coords_init27P (
Coords *coords,
float bbox[],
int Type,
int n1,
int n2,
int n3,
int ncomp
) ;
/*--------------------------------------------------------------------*/
/*
------------------------------------------------------------------------
----- methods found in util.c ------------------------------------------
------------------------------------------------------------------------
*/
/*
----------------------------------------------
return the number of bytes taken by the object
created -- 95dec17, cca
----------------------------------------------
*/
int
Coords_sizeOf (
Coords *coords
) ;
/*
--------------------------------------------------
return the minimum coordinate in the dim-direction
created -- 95dec17, cca
--------------------------------------------------
*/
float
Coords_min (
Coords *coords,
int dim
) ;
/*
--------------------------------------------------
return the maximum coordinate in the dim-direction
created -- 95dec17, cca
--------------------------------------------------
*/
float
Coords_max (
Coords *coords,
int dim
) ;
/*
-----------------------
1 <= idim <= ndim
0 <= icoor < ncoor
created -- 95dec17, cca
-----------------------
*/
float
Coords_value (
Coords *coords,
int idim,
int icoor
) ;
/*
-----------------------
1 <= idim <= ndim
0 <= icoor < ncoor
created -- 95dec17, cca
-----------------------
*/
void
Coords_setValue (
Coords *coords,
int idim,
int icoor,
float val
) ;
/*--------------------------------------------------------------------*/
/*
------------------------------------------------------------------------
----- methods found in IO.c --------------------------------------------
------------------------------------------------------------------------
*/
/*
--------------------------------------------------
purpose -- to read in an Coords object from a file
input --
fn -- filename, must be *.coordsb or *.coordsf
return value -- 1 if success, 0 if failure
created -- 95dec19, cca
---------------------------------------------------
*/
int
Coords_readFromFile (
Coords *coords,
char *fn
) ;
/*
---------------------------------------------------------
purpose -- to read an Coords object from a formatted file
return value -- 1 if success, 0 if failure
created -- 95dec19, cca
---------------------------------------------------------
*/
int
Coords_readFromFormattedFile (
Coords *coords,
FILE *fp
) ;
/*
------------------------------------------------------
purpose -- to read an Coords object from a binary file
return value -- 1 if success, 0 if failure
created -- 95dec19, cca
------------------------------------------------------
*/
int
Coords_readFromBinaryFile (
Coords *coords,
FILE *fp
) ;
/*
----------------------------------------------
purpose -- to write an Coords object to a file
input --
fn -- filename
*.coordsb -- binary
*.coordsf -- formatted
anything else -- for human eye
return value -- 1 if success, 0 otherwise
created -- 95dec19, cca
----------------------------------------------
*/
int
Coords_writeToFile (
Coords *coords,
char *fn
) ;
/*
--------------------------------------------------------
purpose -- to write an Coords object to a formatted file
return value -- 1 if success, 0 otherwise
created -- 95dec19, cca
--------------------------------------------------------
*/
int
Coords_writeToFormattedFile (
Coords *coords,
FILE *fp
) ;
/*
-----------------------------------------------------
purpose -- to write an Coords object to a binary file
return value -- 1 if success, 0 otherwise
created -- 95dec19, cca
-----------------------------------------------------
*/
int
Coords_writeToBinaryFile (
Coords *coords,
FILE *fp
) ;
/*
----------------------------------------------------
purpose -- to write an Coords object for a human eye
return value -- 1 if success, 0 otherwise
created -- 95dec19, cca
----------------------------------------------------
*/
int
Coords_writeForHumanEye (
Coords *coords,
FILE *fp
) ;
/*
------------------------------------------------------------
purpose -- to write out the statistics for the Coords object
return value -- 1 if success, 0 otherwise
created -- 95dec19, cca
------------------------------------------------------------
*/
int
Coords_writeStats (
Coords *coords,
FILE *fp
) ;
/*--------------------------------------------------------------------*/
syntax highlighted by Code2HTML, v. 0.9.1