Main Page   Data Structures   File List   Data Fields   Globals  

umtzlib.h

Go to the documentation of this file.
00001 
00006 #ifndef CCP4_UMTZLIB_INC
00007 #define CCP4_UMTZLIB_INC
00008 
00009 #include <math.h>
00010 #include "library.h"
00011 
00012 /* define mtz properties */
00013 
00014 #define MTZRECLEN 80
00015 #define MTZBATCHR (3*MTZRECLEN)
00016 #define MTZBATINT 29
00017 #define MTZBATFLT 156
00018 #define MTZBATLEN ( MTZBATCHR + 4*(MTZBATINT+MTZBATFLT) )
00019 #define MTZDATAOFF 20
00020 
00021 typedef struct umtz_hdr_ {
00022   char data[MTZRECLEN];
00023 } umtz_hdr;
00024 
00025 typedef struct umtz_bat_ {
00026   char  cdata[3*MTZRECLEN];
00027   int   idata[MTZBATINT];
00028   float fdata[MTZBATFLT];
00029 } umtz_bat;
00030 
00031 /* define a list of header lines */
00032 
00033 typedef struct umtz_list_ {
00034   int size, capacity;
00035   void* data;
00036 } umtz_list;
00037 
00038 /* now define a umtz file i/o object */
00039 
00040 typedef struct umtzfile_ {
00041   char filename[200], mode[4];
00042   int iunit, ncol, nrow;
00043   float mnf;
00044   umtz_list headers;
00045   umtz_list history;
00046   umtz_list batches;
00047 } umtzfile;
00048 
00049 
00050 /* define unix-like i/o functions */
00051 
00052 umtzfile* umtz_open( const char* filename, const char* mode );
00053 void umtz_close( umtzfile* file );
00054 
00055 /* accessor methods */
00056 
00057 int umtz_num_cols( const umtzfile* file );
00058 int umtz_num_rows( const umtzfile* file );
00059 int umtz_num_head( const umtzfile* file );
00060 int umtz_num_hist( const umtzfile* file );
00061 float umtz_mnf( const umtzfile* file );
00062 int umtz_ismnf( const umtzfile* file, float f );
00063 
00064 umtz_hdr* umtz_first_head( const umtzfile* file );
00065 umtz_hdr* umtz_first_hist( const umtzfile* file );
00066 umtz_bat* umtz_first_bats( const umtzfile* file );
00067 umtz_hdr* umtz_last_head( const umtzfile* file );
00068 umtz_hdr* umtz_last_hist( const umtzfile* file );
00069 umtz_bat* umtz_last_bats( const umtzfile* file );
00070 int umtz_keymatch( const char* hdr, const char* key );
00071 void umtz_add_head( umtzfile* file, const char* hdr );
00072 void umtz_add_hist( umtzfile* file, const char* hdr );
00073 void umtz_add_bats( umtzfile* file, const char* cdata, const int* idata, const float* fdata );
00074 
00075 void umtz_seek_row( const umtzfile* file, const int n );
00076 void umtz_get_row( const umtzfile* file, float* fdata );
00077 void umtz_add_row( umtzfile* file, const float* fdata );
00078 
00079 void umtz_get_cell( const umtzfile* file, const int ixtl, float* cell );
00080 void umtz_cell_metric( const float* cell, float* metric );
00081 
00082 int umtz_num_head_type( const umtzfile* file, char* head );
00083 
00084 /* internal functions */
00085 
00086 void umtz_make_rec( umtz_list* l, const int rec_len );
00087 void umtz_copy_pad( char* d, const char* s, const int rec_len  );
00088 void umtz_rewrite_headers_ranges( umtzfile* file );
00089 void umtz_rewrite_headers_legacy( umtzfile* file );
00090 
00091 #endif

Generated at Fri Dec 14 11:37:56 2001 by doxygen1.2.8.1 written by Dimitri van Heesch, © 1997-2001