DfsIO
dfsio.h
Go to the documentation of this file.
1 
18 #ifndef DFSIO_H
19 #define DFSIO_H
20 
21 #include <windows.h>
22 #include "mztypes.h"
23 #include "ufs.h"
24 #include "ufscommon.h"
25 #include "m0dll.h"
26 
27 /****************************************************************************
28  Promote UFS types to DFS types ********************************************
29  ***************************************************************************/
65 typedef ufsErrors FioErrors;
66 
80 typedef ufsSimpleType SimpleType;
81 
82 /* \cond DOCCPP */
83 typedef ufsFile File, *LPFILE;
84 typedef ufsLblock LogicalBlock;
85 typedef ufsDate Fdate;
86 /* \endcond */
87 
88 
89 /****************************************************************************
90  DFS callback function definition ******************************************
91  ***************************************************************************/
96 typedef LONG(m0CABA *FErrorHandlerT)(
97  void *headptr,
98  void *fileptr,
99  void *vectorptr,
100  FioErrors ioError,
101  LPCTSTR src_file,
102  int line
103  );
104 
105 
106 /****************************************************************************
107  Enumerations **************************************************************
108  ***************************************************************************/
109  /* FileType values are created so that they may be reversibly ORed */
114 typedef enum FileType /* obs: must be changed !!! */
115 {
116  F_UNDEFINED_FILE_TYPE = 0,
123 
128 typedef enum StatType
129 {
130  F_UNDEFINED_STAT_TYPE = 0, F_NO_STAT, F_REGULAR_STAT, F_LARGEVAL_STAT
131 } StatType;
132 
137 typedef enum DataValueType
138 {
145 
146 
153 typedef enum TimeAxisType
154 {
155  F_UNDEFINED_TAXIS = 0,
161 
168 typedef enum SpaceAxisType
169 {
170  F_UNDEFINED_SAXIS = 0,
184 } SpaceAxisType;
185 
191 typedef enum GeoInfoType
192 {
196 /*--------------------------------------------------------------------*/
197 
198 /* \cond DOCCPP */
199 extern BOOL debug;
200 
201 /*--------------------------------------------------------------------*/
202 typedef struct UTMProjOrigin
203 {
204  TCHAR *projection_id;
205  double lon0, lat0, orientation;
206 } UTMProjOrigin;
207 /*--------------------------------------------------------------------*/
208 
209 /*--------------------------------------------------------------------*/
210 typedef struct Coords
211 {
212  float x, y, z;
213 } Coords;
214 /*--------------------------------------------------------------------*/
215 
216 /*--------------------------------------------------------------------*/
217 typedef struct EqAxisD0
218 {
219  LONG ceumUnit;
220 } EqAxisD0;
221 
222 typedef struct EqAxisD1
223 {
224  LONG ceumUnit;
225  LONG j;
226  float dx;
227  float x0;
228 } EqAxisD1;
229 
230 typedef struct NeqAxisD1
231 {
232  LONG ceumUnit;
233  LONG j;
234  LONG MustFree;
235  LONG IsConverted;
236  Coords *coords;
237 } NeqAxisD1;
238 
239 typedef struct TvarAxisD1
240 {
241  LONG ceumUnit;
242  LONG j;
243 } TvarAxisD1;
244 
245 typedef struct EqAxisD2
246 {
247  LONG ceumUnit;
248  LONG j, k;
249  float x0, y0;
250  float dx, dy;
251 } EqAxisD2;
252 
253 typedef struct NeqAxisD2
254 {
255  LONG ceumUnit;
256  LONG j, k;
257  LONG MustFree;
258  LONG IsConverted;
259  double *xcoords;
260  double *ycoords;
261 } NeqAxisD2;
262 
263 typedef struct CurveLinearAxisD2
264 {
265  LONG ceumUnit;
266  LONG j, k;
267  LONG MustFree;
268  LONG IsConverted;
269  double *xcoords;
270  double *ycoords;
271 } CurveLinearAxisD2;
272 
273 typedef struct TvarAxisD2
274 {
275  LONG ceumUnit;
276  LONG j, k;
277 } TvarAxisD2;
278 
279 typedef struct EqAxisD3
280 {
281  LONG ceumUnit;
282  LONG j, k, l;
283  float x0, y0, z0;
284  float dx, dy, dz;
285 } EqAxisD3;
286 
287 typedef struct NeqAxisD3
288 {
289  LONG ceumUnit;
290  LONG j, k, l;
291  LONG MustFree;
292  LONG IsConverted;
293  double *xcoords;
294  double *ycoords;
295  double *zcoords;
296 } NeqAxisD3;
297 
298 typedef struct CurveLinearAxisD3
299 {
300  LONG ceumUnit;
301  LONG j, k, l;
302  LONG MustFree;
303  LONG IsConverted;
304  double *xcoords;
305  double *ycoords;
306  double *zcoords;
307 } CurveLinearAxisD3;
308 
309 typedef struct TvarAxisD3
310 {
311  LONG ceumUnit;
312  LONG j, k, l;
313 } TvarAxisD3;
314 
315 typedef struct EqAxisD4
316 {
317  LONG ceumUnit;
318  LONG j, k, l, m;
319  float x0, y0, z0, f0;
320  float dx, dy, dz, df;
321 } EqAxisD4;
322 
323 /*--------------------------------------------------------------------*/
324 
325 /*--------------------------------------------------------------------*/
326 typedef struct EqTimeAxis
327 {
328  TCHAR *tunit;
329  LONG ceumUnit;
330  double tstart, tstep;
331  LONG tnum, tindex;
332 } EqTimeAxis;
333 
334 typedef struct NeqTimeAxis
335 {
336  TCHAR *tunit;
337  LONG ceumUnit;
338  double tstart, tspan;
339  LONG tnum, tindex;
340 } NeqTimeAxis;
341 
342 typedef struct EqCalendarAxis
343 {
344  TCHAR start_date[11];
345  TCHAR start_time[9];
346  TCHAR start_date_copy[11];
347  TCHAR start_time_copy[9];
348  TCHAR *tunit;
349  LONG ceumUnit;
350  double tstart, tstep;
351  LONG tnum, tindex;
352 } EqCalendarAxis;
353 
354 typedef struct NeqCalendarAxis
355 {
356  TCHAR start_date[11];
357  TCHAR start_time[9];
358  TCHAR start_date_copy[11];
359  TCHAR start_time_copy[9];
360  TCHAR *tunit;
361  LONG ceumUnit;
362  double tstart, tspan;
363  LONG tnum, tindex;
364 } NeqCalendarAxis;
365 /*--------------------------------------------------------------------*/
366 
367 /*--------------------------------------------------------------------*/
368 typedef struct ItemStat
369 {
370  double max, min;
371  double no_of_del_values;
372 } ItemStat;
373 /*--------------------------------------------------------------------*/
374 
375 /*--------------------------------------------------------------------*/
376 typedef struct GridPointStat
377 {
378  double max, min;
379  double sum, sum_sqr;
380  double sum_prod, prev_value;
381  double no_of_values, no_of_pairs;
382  double no_of_del_values;
383 } GridPointStat;
384 /*--------------------------------------------------------------------*/
385 
386 /*--------------------------------------------------------------------*/
387 typedef union ItemAxis
388 {
389  EqAxisD0 EqAxD0;
390  EqAxisD1 EqAxD1;
391  NeqAxisD1 NeqAxD1;
392  TvarAxisD1 TvarAxD1;
393  EqAxisD2 EqAxD2;
394  NeqAxisD2 NeqAxD2;
395  CurveLinearAxisD2 CurveLinearAxD2;
396  TvarAxisD2 TvarAxD2;
397  EqAxisD3 EqAxD3;
398  NeqAxisD3 NeqAxD3;
399  CurveLinearAxisD3 CurveLinearAxD3;
400  TvarAxisD3 TvarAxD3;
401  EqAxisD4 EqAxD4;
402 } ItemAxis;
403 /*--------------------------------------------------------------------*/
404 
444 typedef struct absItemS
445 {
446  TCHAR *name;
447  LONG item_type;
448  TCHAR *unit;
449  LONG ceumUnit;
450  LONG data_type;
451  ItemStat stat;
452  SpaceAxisType axis_type;
453  ItemAxis axis;
454  UnitConvType nAxisConvertType;
455  LONG nAxisEumToUnit;
456  DataValueType value_type;
457  void *pdfs;
458  BOOL IsStatic;
459  BOOL IsDerived;
460  UnitConvType nConvertType;
461  LONG nEumToUnit;
462 
463  struct ref_coords
464  {
465  float x, y, z;
466  } RefCo;
467  struct ref_orient
468  {
469  float alpha, phi, theta;
470  } RefOr;
471 } absItemS, *LPITEM;
472 /*--------------------------------------------------------------------*/
473 
474 
475 /*--------------------------------------------------------------------*/
476 /* List of static items connected to dynamic items */
477 typedef struct AssocStatic
478 {
479  ULONG sItemNo1;
480  struct AssocStatic *next;
481 } AssocStatic;
482 /*--------------------------------------------------------------------*/
483 
484 
494 typedef struct Item
495 {
496  absItemS It;
497  GridPointStat *gp_stat;
498  AssocStatic *as_stat;
499 } Item;
500 /*--------------------------------------------------------------------*/
501 
502 
503 /*--------------------------------------------------------------------*/
508 typedef struct StaticVector
509 {
510  absItemS It;
511  void *data;
512 } StaticVector, *LPVECTOR;
513 /*--------------------------------------------------------------------*/
514 
515 
516 /*--------------------------------------------------------------------*/
517 typedef union GeoInfo
518 {
519  UTMProjOrigin geo_origin;
520 } GeoInfo;
521 /*--------------------------------------------------------------------*/
522 
523 
524 /*--------------------------------------------------------------------*/
525 typedef union TimeAxis
526 {
527  EqTimeAxis EqTimeAx;
528  NeqTimeAxis NeqTimeAx;
529  EqCalendarAxis EqCalendarAx;
530  NeqCalendarAxis NeqCalendarAx;
531 } TimeAxis;
532 /*--------------------------------------------------------------------*/
533 
534 
535 /*--------------------------------------------------------------------*/
536 typedef struct CustomBlock
537 {
538  ufsSimpleType type;
539  TCHAR *name;
540  ULONG no;
541  union
542  {
543  float *flptr;
544  double *dbptr;
545  char *chptr;
546  LONG *inptr;
547  ULONG *uiptr;
548  SHORT *siptr;
549  USHORT *suptr;
550  } data;
551  struct CustomBlock *next;
552 } CustomBlock, *LPBLOCK;
553 /*--------------------------------------------------------------------*/
554 
555 /*--------------------------------------------------------------------*/
556 typedef LONG (*dfsExtInitialize_t)(
557  struct DfsHeader* pdfs,
558  LPFILE fp);
559 
560 typedef LONG (*dfsExtTerminate_t)(
561  struct DfsHeader* pdfs);
562 
563 typedef LONG (*dfsExtGetNoOfItems_t)(
564  struct DfsHeader* pdfs);
565 
566 typedef LONG (*dfsExtGetItemInfo_t)(
567  struct DfsHeader* pdfs,
568  LONG itemno,
569  LONG* EumItemType,
570  LPCTSTR* EumItemName,
571  LPCTSTR* ItemDescr,
572  LONG* EumInitType,
573  LPCTSTR* EumUnitName,
574  SimpleType* UfsType);
575 
576 typedef LONG (*dfsExtGetItemAxisType_t)(
577  struct DfsHeader* pdfs,
578  LONG itemno);
579 
580 typedef LONG (*dfsExtGetItemAxisEq_t)(
581  struct DfsHeader* pdfs,
582  LONG itemno,
583  LONG EumUnitId[],
584  LPCTSTR EumUnitName[],
585  LONG nPoints[],
586  float dOffset[],
587  float dInterval[]);
588 
589 typedef BOOL (*dfsExtIsItemDerived_t)(
590  struct DfsHeader* pdfs,
591  LONG itemno);
592 
593 typedef LONG (*dfsExtGetItemStatsGlobal_t)(
594  struct DfsHeader* pdfs,
595  LONG itemno,
596  double* dMin,
597  double* dMax,
598  LONG* nMissing);
599 
600 typedef LONG (*dfsExtGetItemValueType_t)(
601  struct DfsHeader* pdfs,
602  LONG itemno,
603  LONG* ValueType);
604 
605 typedef LONG (*dfsExtGetItemRefCoords_t)(
606  struct DfsHeader* pdfs,
607  LONG itemno,
608  float* xref,
609  float* yref,
610  float* zref);
611 
612 typedef LONG (*dfsExtGetItemAxisOrientation_t)(
613  struct DfsHeader* pdfs,
614  LONG itemno,
615  float* alpha,
616  float* phi,
617  float* theta);
618 
619 typedef LONG (*dfsExtNewTimeStep_t)(
620  struct DfsHeader* pdfs,
621  LPFILE fp);
622 
623 typedef LONG (*dfsExtReadItemTimeStep_t)(
624  struct DfsHeader* pdfs,
625  LPFILE fp,
626  void* data);
627 
628 
635 typedef struct DfsPlugins
636 {
637  LONG InExt;
638  HINSTANCE hInstance;
639  dfsExtInitialize_t dfsExtInitialize;
640  dfsExtTerminate_t dfsExtTerminate;
641  dfsExtGetNoOfItems_t dfsExtGetNoOfItems;
642  dfsExtGetItemInfo_t dfsExtGetItemInfo;
643  dfsExtGetItemAxisType_t dfsExtGetItemAxisType;
644  dfsExtGetItemAxisEq_t dfsExtGetItemAxisEq;
645  dfsExtIsItemDerived_t dfsExtIsItemDerived;
646  dfsExtGetItemStatsGlobal_t dfsExtGetItemStatsGlobal;
647  dfsExtGetItemValueType_t dfsExtGetItemValueType;
648  dfsExtGetItemRefCoords_t dfsExtGetItemRefCoords;
649  dfsExtGetItemAxisOrientation_t dfsExtGetItemAxisOrientation;
650  dfsExtNewTimeStep_t dfsExtNewTimeStep;
651  dfsExtReadItemTimeStep_t dfsExtReadItemTimeStep;
652 } DfsPlugins;
653 /*--------------------------------------------------------------------*/
654 
655 /*--------------------------------------------------------------------*/
656 typedef struct DfsEncode
657 {
658  int *xkey;
659  int *ykey;
660  int *zkey;
661  int nRecordSize;
662 } DfsEncode;
663 /*--------------------------------------------------------------------*/
664 
681 typedef struct DfsHeader
682 {
683  FileType file_type;
684  TCHAR *title;
685  TCHAR *apptitle;
686  LONG appverno;
687  LONG data_type;
688  LONG compressed_file;
689  StatType stat_type;
690  float fdel;
691  double ddel;
692  char cdel;
693  LONG idel;
694  ULONG udel;
695  GeoInfoType geo_type;
696  GeoInfo geo_info;
697  TimeAxisType taxis_type;
698  TimeAxis taxis;
699  LONG current_tstep;
700  LONG current_item;
701 
702  double lastReadTime;
703  double max_time;
704 
705  LONG no_of_items;
706  LONG no_of_phys_items;
707  Item *item_list;
708  CustomBlock *block_list;
709 
710  LONG bEnableCompression;
711  DfsEncode dfsEncode;
712 
713  /*- For compatability with DTX format -----------------------*/
714  void *cat;
715  float dt0[17];
716 
717  /*- PLUG-INS ------------------------------------------------*/
718  DfsPlugins plugins;
719 
720  /*- PARAMS ------------------------------------------------*/
721  BOOL doModifyTimes;
722 
723 } DfsHeader, *LPHEAD;
724 /*--------------------------------------------------------------------*/
725 /* \endcond */
726 
727 
728 /*--------------------------------------------------------------------*/
729 /* Functions for reading and writing single grid data files - LEVEL 1 */
730 /*--------------------------------------------------------------------*/
731 
732 /*--------------------------------------------------------------------*/
733 /*--------------------------------------------------------------------*/
734 /* Misc system control ----------------------------------------------*/
735 /*--------------------------------------------------------------------*/
736 /*--------------------------------------------------------------------*/
737 
748 m0LINK void m0IMEX dfsDebugOn(BOOL On);
749 
754 m0LINK void m0IMEX dfsInitSystem();
755 
756 
797 m0LINK void m0IMEX dfsAddErrorHandler(FioErrors ioError,
798  FErrorHandlerT dfsErrorHandler);
799 
814 m0LINK void m0IMEX dfsAddCommonErrorHandler(
815  FErrorHandlerT dfsErrorHandler);
816 /*--------------------------------------------------------------------*/
817 
818 
819 /*--------------------------------------------------------------------*/
820 /*--------------------------------------------------------------------*/
821 /* Header management ------------------------------------------------*/
822 /*--------------------------------------------------------------------*/
823 /*--------------------------------------------------------------------*/
824 
825 /*--------------------------------------------------------------------*/
858  // -F_EQTIME_TVARSPACE_ALLITEMS
859  // specifying time varying non equidistant spatial item axis, equidistant time axis and all
860  // items(spatial axis description + item data) stored in each time step.
861  // -F_NEQTIME_FIXEDSPACE_VARITEMS
862  // specifying fixed(either equidistant or curvelinear) spatial item axis, non equidistant time
863  // axis and a set of individually selected items stored in each time step.
864  // -F_NEQTIME_TVARSPACE_VARITEMS
865  // specifying time varying non equidistant spatial item axis, non equidistant time axis and a set
866  // of individually selected items stored in each time step.
867 m0LINK LONG m0IMEX dfsHeaderCreate(FileType file_type, LPCTSTR title,
868  LPCTSTR apptitle, LONG appverno, LONG no_of_items,
869  StatType stat_type, LPHEAD *pdfs_rtn);
870 
882 m0LINK LONG m0IMEX dfsHeaderDestroy(LPHEAD *pdfs_rtn);
883 
884 
906 m0LINK LONG m0IMEX dfsSetEncodeKey(LPHEAD pdfs, int *xkey, int *ykey, int *zkey, int nRecordSize);
907 
950 m0LINK LONG m0IMEX dfsGetEncodeKey(LPHEAD pdfs, int *xkey, int *ykey, int *zkey);
951 
964 m0LINK LONG m0IMEX dfsGetEncodeKeySize(LPHEAD pdfs);
965 
972 m0LINK LONG m0IMEX dfsIsFileCompressed(LPHEAD pdfs);
973 /*--------------------------------------------------------------------*/
974 
975 
976 /*--------------------------------------------------------------------*/
977 /*--------------------------------------------------------------------*/
978 /* File control functions -------------------------------------------*/
979 /*--------------------------------------------------------------------*/
980 /*--------------------------------------------------------------------*/
981 
982 
1009 m0LINK LONG m0IMEX dfsFileRead(LPCTSTR pathname,
1010  LPHEAD *pdfs_rtn, LPFILE *fp_rtn);
1011 
1012 
1041 m0LINK LONG m0IMEX dfsStreamRead(unsigned char* buffer,
1042  size_t bufferSize,
1043  FillBufferCallback callback,
1044  LPHEAD *pdfs_rtn, LPFILE *fp_rtn);
1045 
1064 m0LINK LONG m0IMEX dfsFileCreate(LPCTSTR pathname,
1065  LPHEAD pdfs, LPFILE *fp_rtn);
1066 
1089 m0LINK LONG m0IMEX dfsFileCreateEx(LPCTSTR pathname,
1090  LPHEAD pdfs, LPFILE *fp_rtn, BOOL canRead);
1091 
1092 
1114 m0LINK LONG m0IMEX dfsStreamCreate(unsigned char* buffer,
1115  size_t bufferSize,
1116  WriteBufferCallback callback,
1117  LPHEAD pdfs, LPFILE *fp_rtn);
1118 
1139 m0LINK LONG m0IMEX dfsFileAppend(LPCTSTR pathname,
1140  LPHEAD *pdfs_rtn, LPFILE *fp_rtn);
1141 
1164 m0LINK LONG m0IMEX dfsFileEdit(LPCTSTR pathname,
1165  LPHEAD *pdfs_rtn, LPFILE *fp_rtn);
1166 
1179 m0LINK LONG m0IMEX dfsFileFlush(LPHEAD pdfs, LPFILE fp);
1180 
1195 m0LINK LONG m0IMEX dfsFileFlushTimeStep(LPHEAD pdfs, LPFILE fp);
1196 
1197 
1210 m0LINK LONG m0IMEX dfsFileClose(LPHEAD pdfs, LPFILE *fp_rtn);
1211 
1224 m0LINK LONG m0IMEX dfsFileDelete(LPCTSTR pathname);
1225 
1226 
1239 m0LINK LONG m0IMEX dfsEnablePlugin(const LPHEAD pdfs, const LPFILE fp);
1240 
1250 m0LINK LONG m0IMEX dfsUnloadPlugin(LPHEAD pdfs);
1251 
1252 
1266 m0LINK LONG m0IMEX dfsParamModifyTimes(LPHEAD pdfs, BOOL doModify);
1267 
1268 
1269 
1293 m0LINK LONG m0IMEX dfsWriteStartBlockDynamic(LPHEAD pdfs, LPFILE fp);
1294 
1295 /*--------------------------------------------------------------------*/
1296 
1297 
1298 /*--------------------------------------------------------------------*/
1299 /*--------------------------------------------------------------------*/
1300 /* Common header/file info ------------------------------------------*/
1301 /*--------------------------------------------------------------------*/
1302 /*--------------------------------------------------------------------*/
1303 
1304 
1316 m0LINK LPCTSTR m0IMEX dfsGetAppTitle(LPHEAD pdfs);
1317 
1330 m0LINK LONG m0IMEX dfsSetAppTitle(LPHEAD pdfs,
1331  LPCTSTR apptitle);
1332 
1339 m0LINK LONG m0IMEX dfsGetAppVersionNo(LPHEAD pdfs);
1340 
1341 
1353 m0LINK LONG m0IMEX dfsSetAppVersionNo(LPHEAD pdfs,
1354  LONG appverno);
1355 
1366 m0LINK LPCTSTR m0IMEX dfsGetFileTitle(LPHEAD pdfs);
1367 
1380 m0LINK LONG m0IMEX dfsSetFileTitle(LPHEAD pdfs,
1381  LPCTSTR title);
1382 
1383 /*--------------------------------------------------------------------*/
1390  // - F_EQTIME_FIXEDSPACE_ALLITEMS
1391  // indicating fixed (either equidistant or curvelinear) spatial axis for each item, equidistant
1392  // time axis and all items stored in each time step.
1393  //
1394  // - F_EQTIME_TVARSPACE_ALLITEMS
1395  // indicating time varying non equidistant spatial item axis, equidistant time axis and all items
1396  // (spatial axis description + item data) stored in each time step.
1397  //
1398  // - F_NEQTIME_FIXEDSPACE_ALLITEMS
1399  // indicating fixed (either equidistant or curvelinear) spatial item axis, non equidistant time
1400  // axis and all items stored in each time step.
1401  // - F_NEQTIME_FIXEDSPACE_VARITEMS
1402  //
1403  // indicating fixed (either equidistant or curvelinear) spatial item axis, non equidistant time axis
1404  // and a set of individually selected items stored in each time step
1405  //
1406  // - F_NEQTIME_TVARSPACE_VARITEMS
1407  // indicating time varying non equidistant spatial item axis, non equidistant time axis and a set
1408  // of individually selected items stored in each time step
1409  //
1410  // - F_UNDEFINED_FILE_TYPE
1411  // indicating a file stored in a non valid format.
1412 m0LINK FileType m0IMEX dfsGetFileType(LPHEAD pdfs);
1413 
1414 
1424 m0LINK LONG m0IMEX dfsGetVersionCurrent();
1425 
1426 
1437 m0LINK LONG m0IMEX dfsGetDataType(LPHEAD pdfs);
1438 
1439 
1454 m0LINK LONG m0IMEX dfsSetDataType(LPHEAD pdfs,
1455  LONG data_type);
1456 /*--------------------------------------------------------------------*/
1457 
1458 
1459 /*--------------------------------------------------------------------*/
1460 /*--------------------------------------------------------------------*/
1461 /* 'Delete' values --------------------------------------------------*/
1462 /*--------------------------------------------------------------------*/
1463 /*--------------------------------------------------------------------*/
1464 
1465 
1477 m0LINK char m0IMEX dfsGetDeleteValByte(LPHEAD pdfs);
1478 
1479 
1491 m0LINK double m0IMEX dfsGetDeleteValDouble(LPHEAD pdfs);
1492 
1504 m0LINK float m0IMEX dfsGetDeleteValFloat(LPHEAD pdfs);
1505 
1506 
1518 m0LINK LONG m0IMEX dfsGetDeleteValInt(LPHEAD pdfs);
1519 
1520 
1533 m0LINK ULONG m0IMEX dfsGetDeleteValUnsignedInt(LPHEAD pdfs);
1534 
1535 
1548 m0LINK LONG m0IMEX dfsSetDeleteValByte(LPHEAD pdfs,
1549  char cdel);
1550 
1563 m0LINK LONG m0IMEX dfsSetDeleteValDouble(LPHEAD pdfs,
1564  double ddel);
1565 
1566 
1579 m0LINK LONG m0IMEX dfsSetDeleteValFloat(LPHEAD pdfs,
1580  float fdel);
1581 
1582 
1595 m0LINK LONG m0IMEX dfsSetDeleteValInt(LPHEAD pdfs,
1596  LONG idel);
1597 
1610 m0LINK LONG m0IMEX dfsSetDeleteValUnsignedInt(LPHEAD pdfs,
1611  ULONG udel);
1612 /*--------------------------------------------------------------------*/
1613 
1614 
1615 /*--------------------------------------------------------------------*/
1616 /*--------------------------------------------------------------------*/
1617 /* GeoInfo ----------------------------------------------------------*/
1618 /*--------------------------------------------------------------------*/
1619 /*--------------------------------------------------------------------*/
1620 
1621 
1631 m0LINK GeoInfoType m0IMEX dfsGetGeoInfoType(LPHEAD pdfs);
1632 
1633 
1659 m0LINK LONG m0IMEX dfsGetGeoInfoUTMProj(LPHEAD pdfs,
1660  LPCTSTR *projection_id_rtn,
1661  double *lon0_rtn, double *lat0_rtn,
1662  double *orientation_rtn);
1663 
1664 
1686 m0LINK LONG m0IMEX dfsSetGeoInfoUTMProj(LPHEAD pdfs,
1687  LPCTSTR projection_id,
1688  double lon0, double lat0,
1689  double orientation);
1690 
1691 
1692 
1718 m0LINK LONG m0IMEX dfsUpdateGeoInfoUTMProj(LPHEAD pdfs, LPCTSTR projection_id,
1719  double lon0, double lat0,
1720  double orientation);
1721 
1722 
1733 m0LINK LONG m0IMEX dfsSetGeoInfoUndefined(LPHEAD pdfs);
1734 /*--------------------------------------------------------------------*/
1735 
1736 
1737 /*--------------------------------------------------------------------*/
1738 /*--------------------------------------------------------------------*/
1739 /* Time axis --------------------------------------------------------*/
1740 /*--------------------------------------------------------------------*/
1741 /*--------------------------------------------------------------------*/
1742 
1753  // Possible return values are
1754  // <b>F_TM_EQ_AXIS</b> - indicating an equidistant time axis, <b>F_TM_NEQ_AXIS</b> - indicating a non
1755  // equidistant time axis, <b>F_CAL_EQ_AXIS</b> - indicating an equidistant calendar axis,
1756  // <b>F_CAL_NEQ_AXIS</b> - indicating a non equidistant calendar axis and <b>F_UNDEFINED_TAXIS</b>
1757  // - indicating an undefined time axis.
1758 m0LINK TimeAxisType m0IMEX dfsGetTimeAxisType(LPHEAD pdfs);
1759 
1760 
1761 
1777 m0LINK LONG m0IMEX dfsSetNumberOfTimeSteps(LPHEAD pdfs, LONG n_number_of_time_steps);
1778 
1796 m0LINK LONG m0IMEX dfsSetTimeStartEnd(LPHEAD pdfs, double startTimeOffset, double timeSpan);
1797 
1824 m0LINK LONG m0IMEX dfsGetEqTimeAxis(LPHEAD pdfs, LONG *n_eum_unit_rtn,
1825  LPCTSTR *t_eum_unit_rtn, double *tstart_rtn,
1826  double *tstep_rtn, LONG *tnum_rtn, LONG *tindex_rtn);
1827 
1855 m0LINK LONG m0IMEX dfsGetNeqTimeAxis(LPHEAD pdfs, LONG *n_eum_unit_rtn,
1856  LPCTSTR *t_eum_unit_rtn, double *tstart_rtn,
1857  double *tspan_rtn, LONG *tnum_rtn, LONG *tindex_rtn);
1858 
1878 m0LINK LONG m0IMEX dfsSetEqTimeAxis(LPHEAD pdfs, LONG n_eum_unit,
1879  double tstart, double tstep, LONG tindex);
1880 
1900 m0LINK LONG m0IMEX dfsSetNeqTimeAxis(LPHEAD pdfs, LONG n_eum_unit,
1901  double tstart, LONG tindex);
1902 
1932 m0LINK LONG m0IMEX dfsGetEqCalendarAxis(LPHEAD pdfs,
1933  LPCTSTR *start_date_rtn, LPCTSTR *start_time_rtn,
1934  LONG *n_eum_unit_rtn, LPCTSTR *t_eum_unit_rtn,
1935  double *tstart_rtn, double *tstep_rtn,
1936  LONG *tnum_rtn, LONG *tindex_rtn);
1937 
1968 m0LINK LONG m0IMEX dfsGetNeqCalendarAxis(LPHEAD pdfs,
1969  LPCTSTR *start_date_rtn, LPCTSTR *start_time_rtn,
1970  LONG *n_eum_unit_rtn, LPCTSTR *t_eum_unit_rtn,
1971  double *tstart_rtn, double *tspan_rtn,
1972  LONG *tnum_rtn, LONG *tindex_rtn);
1973 
1996 m0LINK LONG m0IMEX dfsSetEqCalendarAxis(LPHEAD pdfs,
1997  LPCTSTR start_date, LPCTSTR start_time,
1998  LONG n_eum_unit, double tstart, double tstep, LONG tindex);
1999 
2022 m0LINK LONG m0IMEX dfsSetNeqCalendarAxis(LPHEAD pdfs,
2023  LPCTSTR start_date, LPCTSTR start_time,
2024  LONG n_eum_unit, double tstart, LONG tindex);
2025 /*--------------------------------------------------------------------*/
2026 
2027 
2028 /*--------------------------------------------------------------------*/
2029 /*--------------------------------------------------------------------*/
2030 /* Item mappings ----------------------------------------------------*/
2031 /*--------------------------------------------------------------------*/
2032 /*--------------------------------------------------------------------*/
2033 
2047 m0LINK LPITEM m0IMEX dfsItemD(LPHEAD pdfs, /* Dynamic item */
2048  LONG item_no);
2049 
2060 m0LINK LPITEM m0IMEX dfsItemS(LPVECTOR pvec); /* Static item */
2061 
2062 
2063 /*--------------------------------------------------------------------*/
2064 /*--------------------------------------------------------------------*/
2065 /* Item control functions -------------------------------------------*/
2066 /*--------------------------------------------------------------------*/
2067 /*--------------------------------------------------------------------*/
2068 
2077 m0LINK LONG m0IMEX dfsGetNoOfItems(LPHEAD pdfs);
2078 
2079 m0LINK LONG m0IMEX dfsGetItemInfo_(LPITEM item,
2080  LONG *item_type_rtn, LPCTSTR *name_rtn,
2081  LPCTSTR *unit_rtn, SimpleType *data_type_rtn);
2082 m0LINK LONG m0IMEX dfsSetItemInfo_(LPHEAD pdfs, LPITEM item,
2083  LONG item_type, LPCTSTR name,
2084  LPCTSTR unit, SimpleType data_type);
2085 
2086 
2101 m0LINK LONG m0IMEX dfsSetItemUnitConversion(LPITEM item, UnitConvType nConvType, LONG nUnit);
2102 
2118 m0LINK LONG m0IMEX dfsSetItemAxisUnitConversion(LPITEM item, UnitConvType nConvType, LONG nUnit);
2119 
2132 m0LINK LONG m0IMEX dfsGetItemUnitConversion(LPITEM item, UnitConvType *nConvType_rtn, LONG *nUnit_rtn);
2133 
2147 m0LINK LONG m0IMEX dfsGetItemAxisUnitConversion(LPITEM item, UnitConvType *nConvType_rtn, LONG *nUnit_rtn);
2148 
2159 m0LINK LONG m0IMEX dfsGetItemValueType(LPITEM item, DataValueType* value_type);
2160 
2171 m0LINK LONG m0IMEX dfsSetItemValueType(LPITEM item, DataValueType value_type);
2172 
2173 /* HANDS OFF until further notice !!!!! ceum - unit conscious - versions */
2174 
2201 m0LINK LONG m0IMEX dfsGetItemInfo(LPITEM item,
2202  LONG *n_eum_item_type_rtn, /* Numeric item id */
2203  LPCTSTR *t_eum_item_type_rtn, /* Text item id */
2204  LPCTSTR *name_rtn, /* Description */
2205  LONG *n_eum_unit_rtn, /* Numeric unit id */
2206  LPCTSTR *t_eum_unit_rtn, /* Text unit id */
2207  SimpleType *data_type_rtn); /* Simple type */
2208 
2232 m0LINK LONG m0IMEX dfsSetItemInfo(LPHEAD pdfs,
2233  LPITEM item,
2234  LONG n_eum_item_type,
2235  LPCTSTR name,
2236  LONG n_eum_unit,
2237  SimpleType data_type);
2238 
2256 m0LINK LONG m0IMEX dfsUpdateItemInfo(LPHEAD pdfs,
2257  LPITEM item,
2258  LONG n_eum_item_type,
2259  LPCTSTR name,
2260  LONG n_eum_unit);
2261 
2262 m0LINK LONG m0IMEX dfsRqItemUnit_(LPITEM item,
2263  LONG unit); /* Numeric unit id */
2264 /* END OF HANDS OFF !!!!! */
2265 
2266 /* Static items associated to dynamic items */
2267 
2285 m0LINK LONG m0IMEX dfsGetAssocStatic(LPHEAD pdfs,
2286  LONG item_no,
2287  LONG staSeqNo,
2288  LONG *staItNo_rtn);
2289 
2307 m0LINK LONG m0IMEX dfsSetAssocStatic(LPHEAD pdfs,
2308  LONG item_no,
2309  LONG staItNo);
2310 
2321 m0LINK ULONG m0IMEX dfsGetNoAssocStatic(LPHEAD pdfs, /* Only dynamic item */
2322  LONG item_no);
2323 
2324 /* Item data size requirements */
2325 
2335 m0LINK ULONG m0IMEX dfsGetItemElements(LPITEM item);
2336 
2349 m0LINK ULONG m0IMEX dfsGetUsedItemElements(LPITEM item);
2350 
2360 m0LINK ULONG m0IMEX dfsGetItemXYZSize(LPITEM item);
2361 
2371 m0LINK ULONG m0IMEX dfsGetItemXYSize(LPITEM item);
2372 
2382 m0LINK ULONG m0IMEX dfsGetItemXSize(LPITEM item);
2383 
2394 m0LINK ULONG m0IMEX dfsGetItemBytes(LPITEM item);
2395 
2406 m0LINK ULONG m0IMEX dfsGetUsedItemBytes(LPITEM item);
2407 
2408 /* --- Optional item origin/orientation --- */
2409 
2430 m0LINK LONG m0IMEX dfsGetItemRefCoords(LPITEM item,
2431  float *x_rtn,
2432  float *y_rtn,
2433  float *z_rtn);
2434 
2435 
2453 m0LINK LONG m0IMEX dfsSetItemRefCoords(LPITEM item,
2454  float x,
2455  float y,
2456  float z);
2457 
2458 
2480 m0LINK LONG m0IMEX dfsGetItemAxisOrientation(LPITEM item,
2481  float *alpha_rtn,
2482  float *phi_rtn,
2483  float *theta_rtn);
2484 
2485 
2505 m0LINK LONG m0IMEX dfsSetItemAxisOrientation(LPITEM item,
2506  float alpha,
2507  float phi,
2508  float theta);
2509 
2510 /* --- Simple statistics for both static and dynamic --- */
2511 
2528 m0LINK LONG m0IMEX dfsGetItemStatsGlobal(LPITEM item,
2529  double *min_rtn, double *max_rtn,
2530  LONG *no_of_del_values_rtn);
2531 
2532 
2533 /*--------------------------------------------------------------------*/
2534 /*--------------------------------------------------------------------*/
2535 /* Item topology ----------------------------------------------------*/
2536 /*--------------------------------------------------------------------*/
2537 /*--------------------------------------------------------------------*/
2538 
2539 /* --- Axis topology info --- */
2540 
2541 
2570 m0LINK SpaceAxisType m0IMEX dfsGetItemAxisType(LPITEM item);
2571 
2572 
2582 m0LINK LONG m0IMEX dfsGetItemDim(LPITEM item);
2583 
2593 m0LINK LONG m0IMEX dfsGetItemGeometryType(LPITEM item);
2594 
2604 m0LINK LONG m0IMEX dfsGetItemGeometryUnit(LPITEM item);
2605 
2606 /* --- dfs...ItemAxisEqD.: equidistant item axis --- */
2607 
2622 m0LINK LONG m0IMEX dfsSetItemAxisEqD0(LPITEM item, LONG n_eum_unit);
2623 
2624 
2640 m0LINK LONG m0IMEX dfsGetItemAxisEqD0(LPITEM item, LONG *n_eum_unit_rtn,
2641  LPCTSTR *t_eum_unit_rtn);
2642 
2643 
2662 m0LINK LONG m0IMEX dfsSetItemAxisEqD1(LPITEM item, LONG n_eum_unit,
2663  LONG j, float x0, float dx);
2664 
2665 
2687 m0LINK LONG m0IMEX dfsGetItemAxisEqD1(LPITEM item, LONG *n_eum_unit_rtn,
2688  LPCTSTR *t_eum_unit_rtn,
2689  LONG *j_rtn, float *x0_rtn, float *dx_rtn);
2690 
2691 
2713 m0LINK LONG m0IMEX dfsSetItemAxisEqD2(LPITEM item, LONG n_eum_unit,
2714  LONG j, LONG k,
2715  float x0, float y0,
2716  float dx, float dy);
2717 
2718 
2747 m0LINK LONG m0IMEX dfsGetItemAxisEqD2(LPITEM item, LONG *n_eum_unit_rtn,
2748  LPCTSTR *t_eum_unit_rtn,
2749  LONG *j_rtn, LONG *k_rtn,
2750  float *x0_rtn, float *y0_rtn,
2751  float *dx_rtn, float *dy_rtn);
2752 
2753 
2778 m0LINK LONG m0IMEX dfsSetItemAxisEqD3(LPITEM item, LONG n_eum_unit,
2779  LONG j, LONG k, LONG l,
2780  float x0, float y0, float z0,
2781  float dx, float dy, float dz);
2782 
2783 
2818 m0LINK LONG m0IMEX dfsGetItemAxisEqD3(LPITEM item, LONG *n_eum_unit_rtn,
2819  LPCTSTR *t_eum_unit_rtn,
2820  LONG *j_rtn, LONG *k_rtn, LONG *l_rtn,
2821  float *x0_rtn, float *y0_rtn, float *z0_rtn,
2822  float *dx_rtn, float *dy_rtn, float *dz_rtn);
2823 
2824 
2852 m0LINK LONG m0IMEX dfsSetItemAxisEqD4(LPITEM item, LONG n_eum_unit,
2853  LONG j, LONG k, LONG l, LONG m,
2854  float x0, float y0, float z0, float f0,
2855  float dx, float dy, float dz, float df);
2856 
2857 
2898 m0LINK LONG m0IMEX dfsGetItemAxisEqD4(LPITEM item, LONG *n_eum_unit_rtn,
2899  LPCTSTR *t_eum_unit_rtn,
2900  LONG *j_rtn, LONG *k_rtn, LONG *l_rtn, LONG *m_rtn,
2901  float *x0_rtn, float *y0_rtn, float *z0_rtn, float *f0_rtn,
2902  float *dx_rtn, float *dy_rtn, float *dz_rtn, float *df_rtn);
2903 
2904 
2905 /* --- dfs...ItemAxisNeqD.: non-equidistant item axis --- */
2926 m0LINK LONG m0IMEX dfsSetItemAxisNeqD1(LPITEM item, LONG n_eum_unit,
2927  LONG j,
2928  Coords *coords, BOOL coords_copy);
2929 
2950 m0LINK LONG m0IMEX dfsGetItemAxisNeqD1(LPITEM item, LONG *n_eum_unit_rtn,
2951  LPCTSTR *t_eum_unit_rtn,
2952  LONG *j_rtn,
2953  Coords **coords_rtn);
2954 
2955 
2979 m0LINK LONG m0IMEX dfsSetItemAxisNeqD2(LPITEM item, LONG n_eum_unit,
2980  LONG j, LONG k,
2981  double *xcoords, double *ycoords, BOOL coords_copy);
2982 
2983 
3008 m0LINK LONG m0IMEX dfsGetItemAxisNeqD2(LPITEM item, LONG *n_eum_unit_rtn,
3009  LPCTSTR *t_eum_unit_rtn,
3010  LONG *j_rtn, LONG *k_rtn,
3011  double **xcoords_rtn, double **ycoords_rtn);
3012 
3013 
3039 m0LINK LONG m0IMEX dfsSetItemAxisNeqD3(LPITEM item, LONG n_eum_unit,
3040  LONG j, LONG k, LONG l,
3041  double *xcoords, double *ycoords, double *zcoords,
3042  BOOL coords_copy);
3043 
3044 
3073 m0LINK LONG m0IMEX dfsGetItemAxisNeqD3(LPITEM item, LONG *n_eum_unit_rtn,
3074  LPCTSTR *t_eum_unit_rtn,
3075  LONG *j_rtn, LONG *k_rtn, LONG *l_rtn,
3076  double **xcoords_rtn, double **ycoords_rtn, double **zcoords_rtn);
3077 
3078 /* --- dfs...ItemAxisCurveLinearD.: curve-linear item axis --- */
3102 m0LINK LONG m0IMEX dfsSetItemAxisCurveLinearD2(LPITEM item, LONG n_eum_unit,
3103  LONG j, LONG k,
3104  double *xcoords, double *ycoords, BOOL coords_copy);
3105 
3106 
3131 m0LINK LONG m0IMEX dfsGetItemAxisCurveLinearD2(LPITEM item, LONG *n_eum_unit_rtn,
3132  LPCTSTR *t_eum_unit_rtn,
3133  LONG *j_rtn, LONG *k_rtn,
3134  double **xcoords_rtn, double **ycoords_rtn);
3135 
3136 
3162 m0LINK LONG m0IMEX dfsSetItemAxisCurveLinearD3(LPITEM item, LONG n_eum_unit,
3163  LONG j, LONG k, LONG l,
3164  double *xcoords, double *ycoords, double *zcoords,
3165  BOOL coords_copy);
3166 
3167 
3196 m0LINK LONG m0IMEX dfsGetItemAxisCurveLinearD3(LPITEM item, LONG *n_eum_unit_rtn,
3197  LPCTSTR *t_eum_unit_rtn,
3198  LONG *j_rtn, LONG *k_rtn, LONG *l_rtn,
3199  double **xcoords_rtn, double **ycoords_rtn, double **zcoords_rtn);
3200 
3201 /* \cond TVARCondGet */
3202 
3203 /* --- dfs...ItemAxisTvarD.: timevarying item axis --- */
3222 m0LINK LONG m0IMEX dfsSetItemAxisTvarD1(LPITEM item, LONG n_eum_unit, LONG j);
3223 
3224 
3246 m0LINK LONG m0IMEX dfsGetItemAxisTvarD1(LPITEM item, LONG *n_eum_unit_rtn,
3247  LPCTSTR *t_eum_unit_rtn, LONG *j_rtn);
3248 
3249 
3269 m0LINK LONG m0IMEX dfsSetItemAxisTvarD2(LPITEM item, LONG n_eum_unit,
3270  LONG j, LONG k);
3271 
3272 
3296 m0LINK LONG m0IMEX dfsGetItemAxisTvarD2(LPITEM item, LONG *n_eum_unit_rtn,
3297  LPCTSTR *t_eum_unit_rtn,
3298  LONG *j_rtn, LONG *k_rtn);
3299 
3300 
3321 m0LINK LONG m0IMEX dfsSetItemAxisTvarD3(LPITEM item, LONG n_eum_unit,
3322  LONG j, LONG k, LONG l);
3323 
3324 
3325 
3351 m0LINK LONG m0IMEX dfsGetItemAxisTvarD3(LPITEM item, LONG *n_eum_unit_rtn,
3352  LPCTSTR *t_eum_unit_rtn,
3353  LONG *j_rtn, LONG *k_rtn, LONG *l_rtn);
3354 
3355 /* \endcond */
3356 
3357 /* --- dfs compression info --- */
3363 m0LINK LONG m0IMEX dfsIsItemCompressed(LPITEM item, LONG *n_rec_size_rtn);
3364 
3369 m0LINK void m0IMEX dfsItemEnableCompression(LPHEAD pdfs);
3370 /*--------------------------------------------------------------------*/
3371 
3372 
3373 /*--------------------------------------------------------------------*/
3374 /*--------------------------------------------------------------------*/
3375 /* Statistics for dynamic items -------------------------------------*/
3376 /*--------------------------------------------------------------------*/
3377 /*--------------------------------------------------------------------*/
3378 
3392 m0LINK StatType m0IMEX dfsGetItemStatsType(LPHEAD pdfs);
3393 
3394 
3395 
3431 m0LINK LONG m0IMEX dfsGetItemStats(LPHEAD pdfs,
3432  LONG item_no,
3433  LONG cOff, /* obs: index functions are pending */
3434  double *min_rtn, double *max_rtn, double *mean_rtn,
3435  double *st_dev_rtn, double *auto_corr_rtn,
3436  LONG *no_of_values_rtn,
3437  LONG *no_of_del_values_rtn,
3438  LONG *no_of_pairs_rtn);
3439 /*--------------------------------------------------------------------*/
3440 
3441 
3442 /*--------------------------------------------------------------------*/
3443 /*--------------------------------------------------------------------*/
3444 /* Custom block functions --------------------------------------------*/
3445 /*--------------------------------------------------------------------*/
3446 /*--------------------------------------------------------------------*/
3447 
3448 
3473 m0LINK LONG m0IMEX dfsAddCustomBlock(LPHEAD pdfs, SimpleType data_type,
3474  LPCTSTR name, LONG n_elements, void *data_ptr);
3475 
3476 
3492 m0LINK LONG m0IMEX dfsGetCustomBlockRef(LPHEAD pdfs, LPBLOCK *pBlock_rtn);
3493 
3494 
3495 
3523 m0LINK LONG m0IMEX dfsGetCustomBlock(LPBLOCK pblock, SimpleType *data_type_rtn,
3524  LPCTSTR *name_rtn, LONG *n_elements_rtn, void **data_ptr_rtn,
3525  LPBLOCK *pNextBlock_rtn);
3526 
3527 
3528 /*--------------------------------------------------------------------*/
3529 /*--------------------------------------------------------------------*/
3530 /* Static data handling ---------------------------------------------*/
3531 /*--------------------------------------------------------------------*/
3532 /*--------------------------------------------------------------------*/
3533 
3552 m0LINK LPVECTOR m0IMEX dfsStaticRead(LPFILE fp, LONG *fioError);
3553 
3554 
3568 m0LINK LONG m0IMEX dfsStaticSetHeader(LPHEAD pdfs, LPITEM item);
3569 
3586 m0LINK LONG m0IMEX dfsStaticWrite(LPVECTOR pvec, LPFILE fp,
3587  void *data);
3588 
3606 m0LINK LONG m0IMEX dfsStaticCreate(LPVECTOR *pvec_rtn);
3607 
3608 
3620 m0LINK LONG m0IMEX dfsStaticDestroy(LPVECTOR *pvec_rtn);
3621 
3622 
3637 m0LINK LONG m0IMEX dfsStaticGetData(LPVECTOR pvec, void *data);
3638 
3639 
3651 m0LINK LONG m0IMEX dfsStaticSkip(LPFILE fp);
3652 /*--------------------------------------------------------------------*/
3653 
3654 
3655 /*--------------------------------------------------------------------*/
3656 /*--------------------------------------------------------------------*/
3657 /* Position at static/dynamic blocks --------------------------------*/
3658 /*--------------------------------------------------------------------*/
3659 /*--------------------------------------------------------------------*/
3660 
3661 
3674 m0LINK LONG m0IMEX dfsFindBlockStatic(LPHEAD pdfs, LPFILE fp);
3675 
3676 
3692 m0LINK LONG m0IMEX dfsFindBlockDynamic(LPHEAD pdfs, LPFILE fp);
3693 /*--------------------------------------------------------------------*/
3694 
3695 
3696 /*--------------------------------------------------------------------*/
3697 /*--------------------------------------------------------------------*/
3698 /* Query/read/write/skip timestep -----------------------------------*/
3699 /*--------------------------------------------------------------------*/
3700 /*--------------------------------------------------------------------*/
3701 /* Common 'skip' functions */
3702 
3721 m0LINK LONG m0IMEX dfsSkipItem(LPHEAD pdfs, LPFILE fp);
3722 
3723 
3746 m0LINK LONG m0IMEX dfsSkipTimeStep(LPHEAD pdfs, LPFILE fp);
3747 
3748 
3749 /* --- ...ItemTimeStep --- */
3750 
3771 m0LINK LONG m0IMEX dfsReadItemTimeStep(LPHEAD pdfs, LPFILE fp,
3772  double *time_rtn, void *dataptr_rtn);
3773 
3790 m0LINK LONG m0IMEX dfsWriteItemTimeStep(LPHEAD pdfs, LPFILE fp,
3791  double time, void *dataptr);
3792 
3799 m0LINK LONG m0IMEX dfsTruncateItemTimeStep(LPHEAD pdfs, LONG item_no, LONG ndigit, void *dataptr);
3800 
3801 
3802 /* \cond DOCTVAR */
3803 
3804 /* --- ...FreeItemTimeStep --- */
3817 m0LINK LONG m0IMEX dfsQueryFreeItemTimeStep(LPHEAD pdfs, LPFILE fp,
3818  LONG *item_no_rtn);
3819 
3820 
3836 m0LINK LONG m0IMEX dfsReadFreeItemTimeStep(LPHEAD pdfs, LPFILE fp,
3837  double *time_rtn, void *dataptr_rtn);
3838 
3839 
3855 m0LINK LONG m0IMEX dfsWriteFreeItemTimeStep(LPHEAD pdfs, LPFILE fp,
3856  LONG item_no, double time, void *dataptr);
3857 
3858 /* --- ...ItemTvarTimeStep --- */
3874 m0LINK LONG m0IMEX dfsReadItemTvarTimeStep(LPHEAD pdfs, LPFILE fp,
3875  Coords *coords_rtn, void *dataptr_rtn);
3876 
3877 
3893 m0LINK LONG m0IMEX dfsWriteItemTvarTimeStep(LPHEAD pdfs, LPFILE fp,
3894  Coords *coords, void *dataptr);
3895 
3896 /* --- ...FreeItemTvarTimeStep --- */
3910 m0LINK LONG m0IMEX dfsQueryFreeItemTvarTimeStep(LPHEAD pdfs,
3911  LPFILE fp, LONG *item_no_rtn);
3912 
3913 
3931 m0LINK LONG m0IMEX dfsReadFreeItemTvarTimeStep(LPHEAD pdfs,
3932  LPFILE fp, double *time_rtn, Coords *coords_rtn,
3933  void *dataptr_rtn);
3934 
3952 m0LINK LONG m0IMEX dfsWriteFreeItemTvarTimeStep(LPHEAD pdfs,
3953  LPFILE fp, LONG item_no, double time,
3954  Coords *coords, void *dataptr);
3955 
3956 /* \endcond */
3957 
3958 /* --- Common navigation functions --- */
3980 m0LINK LONG m0IMEX dfsFindItemDynamic(LPHEAD pdfs,
3981  LPFILE fp, LONG tstep_no, LONG item_no);
3982 
3983 
4003 m0LINK LONG m0IMEX dfsFindTimeStep(LPHEAD pdfs,
4004  LPFILE fp, LONG tstep_no);
4005 
4006 
4026 m0LINK LONG m0IMEX dfsFindItemStatic(LPHEAD pdfs,
4027  LPFILE fp, LONG item_no);
4028 /*--------------------------------------------------------------------*/
4029 
4030 /*--------------------------------------------------------------------*/
4031 /*
4032 NOTE:
4033 This call should only be used when the timespan needs to be accessed for
4034 the first type of dfs-files (files written prior to oct 1997). The
4035 call must only be used after very careful considerations and a
4036 verification that no side effects occur. The call MUST NOT be called
4037 after reading of the static items or the dynamic items has begun.
4038 
4039 The call should NOT be a part of the documented library, and no
4040 guarantee will be made that it will work for future modifications
4041 of the file system. The call has NO equivalent definition in neither
4042 PASCAL nor FORTRAN.
4043 
4044 Any use of this call without discussing it with the currently responsible
4045 person is considered to be misuse.
4046 
4047 30th January 1998, JFB
4048 */
4049 m0LINK LONG m0IMEX _dfsGetTimeAxisSpan(LPHEAD pdfs, LPFILE fp, double *tspan_rtn);
4050 /*--------------------------------------------------------------------*/
4051 
4052 /* \cond DOCMZ */
4053 
4066 m0LINK LONG m0IMEX MzProject_AddFile(LPCTSTR lpszPath);
4067 
4076 m0LINK BOOL m0IMEX MzCreateFolder(LPCTSTR lpszPath);
4077 
4078 m0LINK BOOL m0IMEX MzShortCut_IsShortcut(LPCTSTR lpszPath);
4079 m0LINK HRESULT m0IMEX MzShortCut_ResolveShortcut(LPCTSTR lpszShortcutPath, LPTSTR lpszFilePath);
4080 
4081 /* \endcond */
4082 
4083 
4084 #endif /* DFSIO_H */
m0LINK LONG m0IMEX dfsStaticSetHeader(LPHEAD pdfs, LPITEM item)
Connects the header to the static item. This is required if the static item needs to be updated.
m0LINK LONG m0IMEX dfsGetCustomBlockRef(LPHEAD pdfs, LPBLOCK *pBlock_rtn)
retrieves a reference to the first custom defined block in a file if any blocks are found.
m0LINK LONG m0IMEX dfsWriteStartBlockDynamic(LPHEAD pdfs, LPFILE fp)
Writes a "start-of-dynamic-block" tag to the file, effectively ending the header part and the static ...
m0LINK LONG m0IMEX dfsSetAppTitle(LPHEAD pdfs, LPCTSTR apptitle)
Copies the string from the apptitle-text string to a corresponding field in the header structure poin...
m0LINK LONG m0IMEX dfsFileAppend(LPCTSTR pathname, LPHEAD *pdfs_rtn, LPFILE *fp_rtn)
Opens the file specified by pathname for appending, automatically reads the static header information...
m0LINK LONG m0IMEX dfsFileFlushTimeStep(LPHEAD pdfs, LPFILE fp)
Flushes the file specified by fp and updates the time step information in the header information poin...
m0LINK LONG m0IMEX dfsFileCreate(LPCTSTR pathname, LPHEAD pdfs, LPFILE *fp_rtn)
Creates a file specified by pathname for writing, automatically writes the static header information ...
m0LINK LPITEM m0IMEX dfsItemS(LPVECTOR pvec)
Maps a static vector to a direct reference to the geometrical description of the item (static and dyn...
m0LINK LONG m0IMEX dfsFindBlockStatic(LPHEAD pdfs, LPFILE fp)
Sets the position of the file pointer fp to the beginning of the static vector (topography) block.
m0LINK LONG m0IMEX dfsGetNeqCalendarAxis(LPHEAD pdfs, LPCTSTR *start_date_rtn, LPCTSTR *start_time_rtn, LONG *n_eum_unit_rtn, LPCTSTR *t_eum_unit_rtn, double *tstart_rtn, double *tspan_rtn, LONG *tnum_rtn, LONG *tindex_rtn)
Retrieves the description of a non equidistant time axis from the header structure pointed to by pdfs...
m0LINK LONG m0IMEX dfsGetItemAxisEqD4(LPITEM item, LONG *n_eum_unit_rtn, LPCTSTR *t_eum_unit_rtn, LONG *j_rtn, LONG *k_rtn, LONG *l_rtn, LONG *m_rtn, float *x0_rtn, float *y0_rtn, float *z0_rtn, float *f0_rtn, float *dx_rtn, float *dy_rtn, float *dz_rtn, float *df_rtn)
Retrieves the relative axis description of an individually selected 4-dimensional equidistant item po...
m0LINK LONG m0IMEX dfsSetItemAxisEqD0(LPITEM item, LONG n_eum_unit)
Sets the relative axis description of an individually selected 0-dimensional equidistant item pointed...
m0LINK LONG m0IMEX dfsGetItemValueType(LPITEM item, DataValueType *value_type)
Gets the Data value type of the specified item.
m0LINK char m0IMEX dfsGetDeleteValByte(LPHEAD pdfs)
Retrieves the char-type delete value from the header structure pointed to by pdfs.
m0LINK LONG m0IMEX dfsUpdateGeoInfoUTMProj(LPHEAD pdfs, LPCTSTR projection_id, double lon0, double lat0, double orientation)
Updates the GeoInfo projection, sets the zone and sets the longitude, latitude and orientation of the...
m0LINK LONG m0IMEX dfsFileCreateEx(LPCTSTR pathname, LPHEAD pdfs, LPFILE *fp_rtn, BOOL canRead)
Creates a file specified by pathname for writing, automatically writes the static header information ...
m0LINK LONG m0IMEX dfsGetItemAxisCurveLinearD3(LPITEM item, LONG *n_eum_unit_rtn, LPCTSTR *t_eum_unit_rtn, LONG *j_rtn, LONG *k_rtn, LONG *l_rtn, double **xcoords_rtn, double **ycoords_rtn, double **zcoords_rtn)
Retrieves the relative axis description of an individually selected 3-dimensional curvelinear item po...
m0LINK LONG m0IMEX dfsGetItemAxisEqD3(LPITEM item, LONG *n_eum_unit_rtn, LPCTSTR *t_eum_unit_rtn, LONG *j_rtn, LONG *k_rtn, LONG *l_rtn, float *x0_rtn, float *y0_rtn, float *z0_rtn, float *dx_rtn, float *dy_rtn, float *dz_rtn)
Retrieves the relative axis description of an individually selected 3-dimensional equidistant item po...
m0LINK LONG m0IMEX dfsSetItemAxisOrientation(LPITEM item, float alpha, float phi, float theta)
Sets the orientation of the reference coordinate system of a n-dimensional item pointed to by Item,...
m0LINK LONG m0IMEX dfsGetItemAxisNeqD1(LPITEM item, LONG *n_eum_unit_rtn, LPCTSTR *t_eum_unit_rtn, LONG *j_rtn, Coords **coords_rtn)
Retrieves the relative axis description of an individually selected 1-dimensional curvelinear item po...
m0LINK LONG m0IMEX dfsGetNoOfItems(LPHEAD pdfs)
Returns the number of dynamic items defined in the header structure pointed to by pdfs.
m0LINK LONG m0IMEX dfsSetTimeStartEnd(LPHEAD pdfs, double startTimeOffset, double timeSpan)
Sets explicitly the time of the first data set and the time span of the data set in the header.
StatType
Statistical values types.
Definition: dfsio.h:129
m0LINK LONG m0IMEX dfsSetDeleteValFloat(LPHEAD pdfs, float fdel)
Copies the float-delete value from fdel to a corresponding field in the header structure pointed to b...
m0LINK LONG m0IMEX dfsFileDelete(LPCTSTR pathname)
Deletes the file, if it exists.
FileType
Definition: dfsio.h:115
@ F_NEQTIME_FIXEDSPACE_ALLITEMS
File with: Non-equidistant time (spatial axis fixed in time, all items in every time step).
Definition: dfsio.h:119
@ F_NEQTIME_TVARSPACE_VARITEMS
No longer in use.
Definition: dfsio.h:121
@ F_EQTIME_TVARSPACE_ALLITEMS
No longer in use.
Definition: dfsio.h:118
@ F_NEQTIME_FIXEDSPACE_VARITEMS
No longer in use.
Definition: dfsio.h:120
@ F_EQTIME_FIXEDSPACE_ALLITEMS
File with: Equidistant time (spatial axis fixed in time, all items in every time step).
Definition: dfsio.h:117
GeoInfoType
Defines whether the geographical projection is defined as a UTM projection type, or in other case,...
Definition: dfsio.h:192
@ F_UNDEFINED_GEOINFO
No projection defined in file. Only very old DFS files has this set.
Definition: dfsio.h:193
@ F_UTM_PROJECTION
A projection is defined in file. It need not be an UTM projection, even though the name indicates tha...
Definition: dfsio.h:194
m0LINK LONG m0IMEX dfsSetGeoInfoUndefined(LPHEAD pdfs)
Sets the type of projection to be undefined. If no geographical information is available or the proje...
m0LINK LONG m0IMEX dfsSetEqTimeAxis(LPHEAD pdfs, LONG n_eum_unit, double tstart, double tstep, LONG tindex)
Copies the description of an equidistant time axis to the corresponding fields in the header structur...
m0LINK ULONG m0IMEX dfsGetUsedItemElements(LPITEM item)
Retrieves the number of actually used elements for an item pointed to by Item.
m0LINK SpaceAxisType m0IMEX dfsGetItemAxisType(LPITEM item)
Retrieves the spatial axis type of an individually selected item pointed to by Item.
m0LINK LONG m0IMEX dfsGetItemAxisNeqD2(LPITEM item, LONG *n_eum_unit_rtn, LPCTSTR *t_eum_unit_rtn, LONG *j_rtn, LONG *k_rtn, double **xcoords_rtn, double **ycoords_rtn)
Retrieves the relative axis description of an individually selected 2-dimensional non equidistant but...
m0LINK LONG m0IMEX dfsGetItemAxisUnitConversion(LPITEM item, UnitConvType *nConvType_rtn, LONG *nUnit_rtn)
Gets the unit conversion for the axis of a specific item.
m0LINK LONG m0IMEX dfsGetItemStats(LPHEAD pdfs, LONG item_no, LONG cOff, double *min_rtn, double *max_rtn, double *mean_rtn, double *st_dev_rtn, double *auto_corr_rtn, LONG *no_of_values_rtn, LONG *no_of_del_values_rtn, LONG *no_of_pairs_rtn)
Retrieves the statistical description of an individually selected gridpoint of an individually select...
m0LINK LONG m0IMEX dfsSetEncodeKey(LPHEAD pdfs, int *xkey, int *ykey, int *zkey, int nRecordSize)
Sets the encoding key for compressing the dfs file.
m0LINK LONG m0IMEX dfsGetAssocStatic(LPHEAD pdfs, LONG item_no, LONG staSeqNo, LONG *staItNo_rtn)
Retrieves the index number of a static item associated with the dynamic item specified by item_no.
m0LINK ULONG m0IMEX dfsGetItemBytes(LPITEM item)
Retrieves the number of bytes for an item pointed to by It.
m0LINK LONG m0IMEX dfsWriteItemTimeStep(LPHEAD pdfs, LPFILE fp, double time, void *dataptr)
Writes the time step of the next item in the file.
m0LINK LONG m0IMEX dfsEnablePlugin(const LPHEAD pdfs, const LPFILE fp)
Enables the load of a plugin-dll and initializes it, if it's available.
m0LINK LONG m0IMEX dfsFindItemDynamic(LPHEAD pdfs, LPFILE fp, LONG tstep_no, LONG item_no)
Positions the file pointer at the location in the file where the specified item at the specified time...
m0LINK LONG m0IMEX dfsReadItemTimeStep(LPHEAD pdfs, LPFILE fp, double *time_rtn, void *dataptr_rtn)
Reads the time step of the next item in the file.
m0LINK ULONG m0IMEX dfsGetDeleteValUnsignedInt(LPHEAD pdfs)
Retrieves the ULONG (unsigned int)-type delete value from the header structure pointed to by pdfs.
m0LINK LONG m0IMEX dfsGetEncodeKey(LPHEAD pdfs, int *xkey, int *ykey, int *zkey)
Gets the compression encoding key.
m0LINK LONG m0IMEX dfsSetItemAxisEqD4(LPITEM item, LONG n_eum_unit, LONG j, LONG k, LONG l, LONG m, float x0, float y0, float z0, float f0, float dx, float dy, float dz, float df)
Sets the relative axis description of an individually selected 4-dimensional equidistant item pointed...
m0LINK LONG m0IMEX dfsGetItemUnitConversion(LPITEM item, UnitConvType *nConvType_rtn, LONG *nUnit_rtn)
Gets the unit conversion for a specific item.
ufsSimpleType SimpleType
Definition: dfsio.h:80
m0LINK ULONG m0IMEX dfsGetItemElements(LPITEM item)
Retrieves the number of elements for an item pointed to by It.
m0LINK LONG m0IMEX dfsTruncateItemTimeStep(LPHEAD pdfs, LONG item_no, LONG ndigit, void *dataptr)
Truncate the item data of a dfs file to a given number of digits.
LONG(m0CABA * FErrorHandlerT)(void *headptr, void *fileptr, void *vectorptr, FioErrors ioError, LPCTSTR src_file, int line)
Definition: dfsio.h:96
m0LINK void m0IMEX dfsAddCommonErrorHandler(FErrorHandlerT dfsErrorHandler)
Adds a common error handler for all types of errors.
m0LINK void m0IMEX dfsInitSystem()
Initializes the entire dfs system.
m0LINK LONG m0IMEX dfsSetItemAxisNeqD1(LPITEM item, LONG n_eum_unit, LONG j, Coords *coords, BOOL coords_copy)
Sets the relative axis description of an individually selected 1-dimensional curvelinear item pointed...
m0LINK LONG m0IMEX dfsAddCustomBlock(LPHEAD pdfs, SimpleType data_type, LPCTSTR name, LONG n_elements, void *data_ptr)
adds a custom defined block of data to the file in form of an array.
m0LINK LONG m0IMEX dfsSetNeqTimeAxis(LPHEAD pdfs, LONG n_eum_unit, double tstart, LONG tindex)
Copies the description of a non equidistant time axis to the corresponding fields in the header struc...
m0LINK LONG m0IMEX dfsFileRead(LPCTSTR pathname, LPHEAD *pdfs_rtn, LPFILE *fp_rtn)
Opens the file specified by pathname for reading, automatically reads the static header information a...
m0LINK LONG m0IMEX dfsGetItemAxisNeqD3(LPITEM item, LONG *n_eum_unit_rtn, LPCTSTR *t_eum_unit_rtn, LONG *j_rtn, LONG *k_rtn, LONG *l_rtn, double **xcoords_rtn, double **ycoords_rtn, double **zcoords_rtn)
Retrieves the relative axis description of an individually selected 3-dimensional non equidistant but...
m0LINK LONG m0IMEX dfsSetNumberOfTimeSteps(LPHEAD pdfs, LONG n_number_of_time_steps)
Sets explicitly the number of time steps in the header.
TimeAxisType
Defines the regularity of the time axis used for the time series data. When the data is uniformly dis...
Definition: dfsio.h:154
@ F_CAL_NEQ_AXIS
Non-equidistant calendar axis.
Definition: dfsio.h:159
@ F_TM_EQ_AXIS
Equidistant time axis.
Definition: dfsio.h:156
@ F_CAL_EQ_AXIS
Equidistant calendar axis.
Definition: dfsio.h:158
@ F_TM_NEQ_AXIS
Non-equidistant time axis.
Definition: dfsio.h:157
m0LINK LONG m0IMEX dfsStaticDestroy(LPVECTOR *pvec_rtn)
Frees the appropriate data structures for the static vector specified by pvec_rtn....
m0LINK LONG m0IMEX dfsFindTimeStep(LPHEAD pdfs, LPFILE fp, LONG tstep_no)
Positions the file pointer at the location in the file where the the specified time step starts.
ufsErrors FioErrors
Definition: dfsio.h:65
m0LINK LONG m0IMEX dfsSetItemAxisCurveLinearD2(LPITEM item, LONG n_eum_unit, LONG j, LONG k, double *xcoords, double *ycoords, BOOL coords_copy)
Sets the relative axis description of an individually selected 2-dimensional curvelinear item pointed...
m0LINK LONG m0IMEX dfsSetItemInfo(LPHEAD pdfs, LPITEM item, LONG n_eum_item_type, LPCTSTR name, LONG n_eum_unit, SimpleType data_type)
Copies the common item information to the item pointed to by Item.
m0LINK LONG m0IMEX dfsFindBlockDynamic(LPHEAD pdfs, LPFILE fp)
Sets the position of the file pointer fp to the beginning of the dynamic block, that is at the beginn...
m0LINK LONG m0IMEX dfsGetDataType(LPHEAD pdfs)
Retrieves the tag-variable defining the type of data.
m0LINK LONG m0IMEX dfsGetItemGeometryUnit(LPITEM item)
Retrieves the unit type of the spatial dimension of an individually selected item pointed to by Item.
m0LINK LONG m0IMEX dfsStaticSkip(LPFILE fp)
Skips a static item and jumps to the next one.
m0LINK LONG m0IMEX dfsSetNeqCalendarAxis(LPHEAD pdfs, LPCTSTR start_date, LPCTSTR start_time, LONG n_eum_unit, double tstart, LONG tindex)
Copies the description of a non equidistant calendar axis to the corresponding fields in the header s...
m0LINK LONG m0IMEX dfsFindItemStatic(LPHEAD pdfs, LPFILE fp, LONG item_no)
Positions the file pointer at the location in the file where the specified static item starts.
m0LINK TimeAxisType m0IMEX dfsGetTimeAxisType(LPHEAD pdfs)
Retrieves the time axis type of the data set from the header structure pointed to by pdfs.
m0LINK LONG m0IMEX dfsGetItemAxisEqD0(LPITEM item, LONG *n_eum_unit_rtn, LPCTSTR *t_eum_unit_rtn)
Retrieves the relative axis description of an individually selected 0-dimensional equidistant item po...
m0LINK ULONG m0IMEX dfsGetNoAssocStatic(LPHEAD pdfs, LONG item_no)
Retrieves the number of static items associated with the dynamic item specified by item_no.
m0LINK LONG m0IMEX dfsSetDeleteValInt(LPHEAD pdfs, LONG idel)
Copies the LONG-delete value from idel to a corresponding field in the header structure pointed to by...
m0LINK LONG m0IMEX dfsHeaderDestroy(LPHEAD *pdfs_rtn)
Frees the appropriate data structures for the header associated with a file.
m0LINK LONG m0IMEX dfsUpdateItemInfo(LPHEAD pdfs, LPITEM item, LONG n_eum_item_type, LPCTSTR name, LONG n_eum_unit)
Updates the common item information of an item of an existing file. Item is pointed to by Item.
m0LINK ULONG m0IMEX dfsGetUsedItemBytes(LPITEM item)
Retrieves the number of packed bytes for an item pointed to by It.
m0LINK LONG m0IMEX dfsGetItemAxisOrientation(LPITEM item, float *alpha_rtn, float *phi_rtn, float *theta_rtn)
Retrieves the orientation of the reference coordinate system of a n-dimensional item pointed to by It...
m0LINK LONG m0IMEX dfsIsFileCompressed(LPHEAD pdfs)
Returns flag indicating if file is compressed.
m0LINK LONG m0IMEX dfsGetCustomBlock(LPBLOCK pblock, SimpleType *data_type_rtn, LPCTSTR *name_rtn, LONG *n_elements_rtn, void **data_ptr_rtn, LPBLOCK *pNextBlock_rtn)
retrieves the data of a custom defined block when a reference pblock is given.
m0LINK LONG m0IMEX dfsGetItemAxisEqD1(LPITEM item, LONG *n_eum_unit_rtn, LPCTSTR *t_eum_unit_rtn, LONG *j_rtn, float *x0_rtn, float *dx_rtn)
Retrieves the relative axis description of an individually selected 1-dimensional equidistant item po...
m0LINK LONG m0IMEX dfsStaticCreate(LPVECTOR *pvec_rtn)
Creates the appropriate data structures for a new static vector.
SpaceAxisType
Defines the regularity of the space axis used for the time series data. When the data is uniformly di...
Definition: dfsio.h:169
@ F_TVAR_AXIS_D2
No longer used.
Definition: dfsio.h:177
@ F_TVAR_AXIS_D1
No longer used.
Definition: dfsio.h:174
@ F_NEQ_AXIS_D1
Non-Equidistant 1 dimensional axis - dfs1 files.
Definition: dfsio.h:173
@ F_EQ_AXIS_D4
Equidistant 4 dimensional axis.
Definition: dfsio.h:181
@ F_CURVE_LINEAR_AXIS_D3
Curve-linear 3 dimensional axis - dfs3 files.
Definition: dfsio.h:183
@ F_NEQ_AXIS_D2
Non-equidistant 2 dimensional orthogonal axis.
Definition: dfsio.h:176
@ F_EQ_AXIS_D3
Equidistant 3 dimensional axis - dfs3 files.
Definition: dfsio.h:178
@ F_CURVE_LINEAR_AXIS_D2
Curve-linear 2 dimensional axis - dfs2 files.
Definition: dfsio.h:182
@ F_EQ_AXIS_D2
Equidistant 2 dimensional axis - the standard dfs2 files.
Definition: dfsio.h:175
@ F_EQ_AXIS_D0
Zero dimensional axis - dfs0 files.
Definition: dfsio.h:171
@ F_EQ_AXIS_D1
Equidistant 1 dimensional axis - dfs1 files.
Definition: dfsio.h:172
@ F_TVAR_AXIS_D3
No longer used.
Definition: dfsio.h:180
@ F_NEQ_AXIS_D3
Non-equidistant 3 dimensional orthogonal axis. Not used currently.
Definition: dfsio.h:179
m0LINK LONG m0IMEX dfsSetEqCalendarAxis(LPHEAD pdfs, LPCTSTR start_date, LPCTSTR start_time, LONG n_eum_unit, double tstart, double tstep, LONG tindex)
Copies the description of an equidistant calendar axis to the corresponding fields in the header stru...
m0LINK ULONG m0IMEX dfsGetItemXYSize(LPITEM item)
Retrieves the number of horisontal elements, ie. in the plane X-Y for an item pointed to by Item,...
m0LINK LONG m0IMEX dfsGetEncodeKeySize(LPHEAD pdfs)
Gets the compression encoding key size.
m0LINK LONG m0IMEX dfsIsItemCompressed(LPITEM item, LONG *n_rec_size_rtn)
Determines whether the selected item is compressed in a MIKE 3 or a MIKE 21 compressed file....
m0LINK LONG m0IMEX dfsHeaderCreate(FileType file_type, LPCTSTR title, LPCTSTR apptitle, LONG appverno, LONG no_of_items, StatType stat_type, LPHEAD *pdfs_rtn)
Creates the appropriate data structures for the header associated with a file.
m0LINK void m0IMEX dfsAddErrorHandler(FioErrors ioError, FErrorHandlerT dfsErrorHandler)
Adds an error handler for specific types of errors.
m0LINK LONG m0IMEX dfsSetAssocStatic(LPHEAD pdfs, LONG item_no, LONG staItNo)
Associates a static item specified by staItNo with a dynamic item specified by item_no (establishes a...
m0LINK GeoInfoType m0IMEX dfsGetGeoInfoType(LPHEAD pdfs)
Retrieves the type of geographical information from the header structure pointed to by pdfs.
m0LINK LONG m0IMEX dfsSetAppVersionNo(LPHEAD pdfs, LONG appverno)
Copies the application version number from the appverno to a corresponding field in the header struct...
m0LINK LONG m0IMEX dfsGetItemGeometryType(LPITEM item)
Retrieves the type of geometry type, according to the dimension of the spatial axis of an individuall...
m0LINK LPVECTOR m0IMEX dfsStaticRead(LPFILE fp, LONG *fioError)
Reads a static vector from the file pointed to by fp. dfsStaticRead allocates the memory necessary to...
m0LINK LONG m0IMEX dfsStreamRead(unsigned char *buffer, size_t bufferSize, FillBufferCallback callback, LPHEAD *pdfs_rtn, LPFILE *fp_rtn)
Use buffer for reading data, and when read to end-of-buffer, the callback is used to fill the buffer ...
m0LINK LONG m0IMEX dfsSetItemAxisUnitConversion(LPITEM item, UnitConvType nConvType, LONG nUnit)
Sets the unit conversion for the axis of a specific item.
m0LINK LONG m0IMEX dfsSetItemValueType(LPITEM item, DataValueType value_type)
Sets the data value type for the specified item.
m0LINK LONG m0IMEX dfsGetItemAxisEqD2(LPITEM item, LONG *n_eum_unit_rtn, LPCTSTR *t_eum_unit_rtn, LONG *j_rtn, LONG *k_rtn, float *x0_rtn, float *y0_rtn, float *dx_rtn, float *dy_rtn)
Retrieves the relative axis description of an individually selected 2-dimensional equidistant item po...
m0LINK LONG m0IMEX dfsSetGeoInfoUTMProj(LPHEAD pdfs, LPCTSTR projection_id, double lon0, double lat0, double orientation)
Sets the type of projection to be UTM-projection, sets the zone and sets the longitude,...
m0LINK float m0IMEX dfsGetDeleteValFloat(LPHEAD pdfs)
Retrieves the float-type delete value from the header structure pointed to by pdfs.
m0LINK LONG m0IMEX dfsStaticGetData(LPVECTOR pvec, void *data)
Retrieves the actual data from the static vector pointed to by pvec and copies them to the array spec...
m0LINK LONG m0IMEX dfsGetItemInfo(LPITEM item, LONG *n_eum_item_type_rtn, LPCTSTR *t_eum_item_type_rtn, LPCTSTR *name_rtn, LONG *n_eum_unit_rtn, LPCTSTR *t_eum_unit_rtn, SimpleType *data_type_rtn)
Retrieves the item information that are common for all items both dynamic and static and 0- to 3-dime...
m0LINK LONG m0IMEX dfsFileFlush(LPHEAD pdfs, LPFILE fp)
Flushes the file specified by fp and updates the header information pointed to by pdfs.
m0LINK LPCTSTR m0IMEX dfsGetAppTitle(LPHEAD pdfs)
Retrieves the application title string of the data from the header structure.
m0LINK LONG m0IMEX dfsGetNeqTimeAxis(LPHEAD pdfs, LONG *n_eum_unit_rtn, LPCTSTR *t_eum_unit_rtn, double *tstart_rtn, double *tspan_rtn, LONG *tnum_rtn, LONG *tindex_rtn)
Retrieves the description of a non equidistant time axis from the header structure pointed to by pdfs...
m0LINK LONG m0IMEX dfsSetItemAxisCurveLinearD3(LPITEM item, LONG n_eum_unit, LONG j, LONG k, LONG l, double *xcoords, double *ycoords, double *zcoords, BOOL coords_copy)
Sets the relative axis description of an individually selected 3-dimensional curvelinear item pointed...
m0LINK LONG m0IMEX dfsSetDataType(LPHEAD pdfs, LONG data_type)
Sets the tag-variable defining the type of data pointed to by pdfs..
m0LINK LONG m0IMEX dfsGetVersionCurrent()
Retrieves the version number of the ufs-library that is currently being used.
m0LINK LONG m0IMEX dfsSetDeleteValUnsignedInt(LPHEAD pdfs, ULONG udel)
Copies the ULONG-delete value from udel to a corresponding field in the header structure pointed to b...
m0LINK LONG m0IMEX dfsGetDeleteValInt(LPHEAD pdfs)
Retrieves the int-type delete value from the header structure pointed to by pdfs.
m0LINK LONG m0IMEX dfsParamModifyTimes(LPHEAD pdfs, BOOL doModify)
Sets the parameter deciding whether times stored in the dfs should be modified. Default is true.
m0LINK LONG m0IMEX dfsGetItemAxisCurveLinearD2(LPITEM item, LONG *n_eum_unit_rtn, LPCTSTR *t_eum_unit_rtn, LONG *j_rtn, LONG *k_rtn, double **xcoords_rtn, double **ycoords_rtn)
Retrieves the relative axis description of an individually selected 2-dimensional curvelinear item po...
m0LINK LONG m0IMEX dfsGetAppVersionNo(LPHEAD pdfs)
Retrieves the version number of the application from the header structure.
m0LINK LONG m0IMEX dfsGetItemStatsGlobal(LPITEM item, double *min_rtn, double *max_rtn, LONG *no_of_del_values_rtn)
Retrieves the global statistical values of an individually selected item pointed to by Item.
m0LINK LONG m0IMEX dfsSetItemAxisNeqD3(LPITEM item, LONG n_eum_unit, LONG j, LONG k, LONG l, double *xcoords, double *ycoords, double *zcoords, BOOL coords_copy)
Sets the relative axis description of an individually selected 3-dimensional non equidistant but orth...
m0LINK FileType m0IMEX dfsGetFileType(LPHEAD pdfs)
Retrieves the file type of the file pointed to by pdfs.
m0LINK ULONG m0IMEX dfsGetItemXSize(LPITEM item)
Retrieves the number of elements in the X axis, for an item pointed to by Item, in rectangular grids ...
m0LINK LONG m0IMEX dfsSetFileTitle(LPHEAD pdfs, LPCTSTR title)
Copies the string from the title-text string to a corresponding field in the header structure pointed...
m0LINK LONG m0IMEX dfsUnloadPlugin(LPHEAD pdfs)
Unloads a DFS plugin.
m0LINK LONG m0IMEX dfsSetItemRefCoords(LPITEM item, float x, float y, float z)
Sets the origin of the reference coordinate system of a n-dimensional item pointed to by Item,...
m0LINK LONG m0IMEX dfsFileClose(LPHEAD pdfs, LPFILE *fp_rtn)
Closes the file specified by fp_rtn and updates the header specified by pdfs.
m0LINK LONG m0IMEX dfsGetItemDim(LPITEM item)
Retrieves the dimension of the spatial axis of an individually selected item pointed to by Item.
m0LINK LONG m0IMEX dfsGetGeoInfoUTMProj(LPHEAD pdfs, LPCTSTR *projection_id_rtn, double *lon0_rtn, double *lat0_rtn, double *orientation_rtn)
Retrieves the geographical information for an UTM-projection. The longitude, latitude and orientation...
m0LINK LONG m0IMEX dfsSetItemAxisNeqD2(LPITEM item, LONG n_eum_unit, LONG j, LONG k, double *xcoords, double *ycoords, BOOL coords_copy)
Sets the relative axis description of an individually selected 2-dimensional non equidistant but orth...
m0LINK void m0IMEX dfsDebugOn(BOOL On)
Switches on/off the possibility for online debugging.
DataValueType
Type of data value to specify how each value is to be interpreted between two time step values....
Definition: dfsio.h:138
@ F_STEP_ACCUMULATED
Value accumulated since last time step to current time step.
Definition: dfsio.h:141
@ F_REV_MEAN_STEP_ACCUMULATED
Mean value from current to next time step. Also called: MeanStepForward.
Definition: dfsio.h:143
@ F_ACCUMULATED
Value accumulated from start of time series to current time step.
Definition: dfsio.h:140
@ F_INSTANTANEOUS
Value at current point in time, current time step.
Definition: dfsio.h:139
@ F_MEAN_STEP_ACCUMULATED
Mean value from previous to current time step. Also called: MeanStepBackwards.
Definition: dfsio.h:142
m0LINK LONG m0IMEX dfsSetDeleteValDouble(LPHEAD pdfs, double ddel)
Copies the double-delete value from ddel to a corresponding field in the header structure pointed to ...
m0LINK LONG m0IMEX dfsSetDeleteValByte(LPHEAD pdfs, char cdel)
Copies the char-delete value from cdel to a corresponding field in the header structure pointed to by...
m0LINK StatType m0IMEX dfsGetItemStatsType(LPHEAD pdfs)
retrieves the type of statistical values stored in the header part of the file pointed to by pdfs
m0LINK LONG m0IMEX dfsSkipItem(LPHEAD pdfs, LPFILE fp)
Skips the time step of the next item in the file.
m0LINK LONG m0IMEX dfsGetItemRefCoords(LPITEM item, float *x_rtn, float *y_rtn, float *z_rtn)
Retrieves the origin of the reference coordinate system of a n-dimensional item pointed to by Item,...
m0LINK LONG m0IMEX dfsGetEqTimeAxis(LPHEAD pdfs, LONG *n_eum_unit_rtn, LPCTSTR *t_eum_unit_rtn, double *tstart_rtn, double *tstep_rtn, LONG *tnum_rtn, LONG *tindex_rtn)
Retrieves the description of an equidistant time axis from the header structure pointed to by pdfs.
m0LINK LONG m0IMEX dfsSetItemUnitConversion(LPITEM item, UnitConvType nConvType, LONG nUnit)
Sets the unit conversion for a specific item.
m0LINK LPITEM m0IMEX dfsItemD(LPHEAD pdfs, LONG item_no)
Maps the item number item_no for the header structure pointed to by pdfs to a direct reference to the...
m0LINK LONG m0IMEX dfsStreamCreate(unsigned char *buffer, size_t bufferSize, WriteBufferCallback callback, LPHEAD pdfs, LPFILE *fp_rtn)
Creates a file and writes it to stream.
m0LINK LONG m0IMEX dfsSetItemAxisEqD1(LPITEM item, LONG n_eum_unit, LONG j, float x0, float dx)
Sets the relative axis description of an individually selected 1-dimensional equidistant item pointed...
m0LINK LONG m0IMEX dfsFileEdit(LPCTSTR pathname, LPHEAD *pdfs_rtn, LPFILE *fp_rtn)
Opens the file specified by pathname for editing, automatically reads the static header information a...
m0LINK LONG m0IMEX dfsGetEqCalendarAxis(LPHEAD pdfs, LPCTSTR *start_date_rtn, LPCTSTR *start_time_rtn, LONG *n_eum_unit_rtn, LPCTSTR *t_eum_unit_rtn, double *tstart_rtn, double *tstep_rtn, LONG *tnum_rtn, LONG *tindex_rtn)
Retrieves the description of an equidistant calendar axis from the header structure pointed to by pdf...
m0LINK LPCTSTR m0IMEX dfsGetFileTitle(LPHEAD pdfs)
Retrieves the title string of the data from the header structure.
m0LINK LONG m0IMEX dfsSetItemAxisEqD2(LPITEM item, LONG n_eum_unit, LONG j, LONG k, float x0, float y0, float dx, float dy)
Sets the relative axis description of an individually selected 2-dimensional equidistant item pointed...
m0LINK LONG m0IMEX dfsSkipTimeStep(LPHEAD pdfs, LPFILE fp)
Skips the entire time step containing all items stored consecutively in the time step.
m0LINK void m0IMEX dfsItemEnableCompression(LPHEAD pdfs)
Flags the header information structure of a file to enable compression of the file.
m0LINK LONG m0IMEX dfsSetItemAxisEqD3(LPITEM item, LONG n_eum_unit, LONG j, LONG k, LONG l, float x0, float y0, float z0, float dx, float dy, float dz)
Sets the relative axis description of an individually selected 3-dimensional equidistant item pointed...
m0LINK ULONG m0IMEX dfsGetItemXYZSize(LPITEM item)
Retrieves the number of actually used elements for an item pointed to by Item, in rectangular grids o...
m0LINK double m0IMEX dfsGetDeleteValDouble(LPHEAD pdfs)
Retrieves the double-type delete value from the header structure pointed to by pdfs.
m0LINK LONG m0IMEX dfsStaticWrite(LPVECTOR pvec, LPFILE fp, void *data)
Writes the static vector pointed to by pvec to the file pointed to by fp.