Information from source codes
../src/dmFileInfo.c:
../src/dmFileRead.c:
../src/dmFileUtil.c:
dmFile.h
/*
# dmFile.h : $Revision$
# $Date$
# Created by $Author$
# Usage : dmFile.h
# Attention
# $Loccker$
# $State$
#
*/
/* $Log$ */
#ifndef DMFILE_H
#define DMFILE_H
#include
/* constant begin */
/* constant end */
/* struct begin */
typedef __int64_t dmFileInteger8;
typedef __int32_t dmFileInteger4;
typedef __int16_t dmFileInteger2;
typedef __int8_t dmFileInteger1;
typedef enum dmFileTagDataType {
dmFileTagDataTypeInt2 =2,
dmFileTagDataTypeInt4 =3,
dmFileTagDataTypeUInt2 =4,
dmFileTagDataTypeUInt4 =5,
dmFileTagDataTypeReal4 =6,
dmFileTagDataTypeReal8 =7,
dmFileTagDataTypeBool1 =8,
dmFileTagDataTypeChar1 =9,
dmFileTagDataTypeInt1 =0xa,
dmFileTagDataTypeInt8 =0xb,
dmFileTagDataTypeStruct =0xf,
dmFileTagDataTypeString =0x12,
dmFileTagDataTypeArray =0x14,
} dmFileTagDataType;
static size_t __dmFileTagDataTypeSize[24] = {
0, 0, 2, 4, 2, 4, 4, 8, 1, 1,
1, 8, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0
};
static char* __dmFileTagDataTypeFormat[24] = {
0, 0, "%d", "%d", "%u", "%u", "%f", "%f", "%d", "%c",
"%d", "%d", 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0
};
// Header
typedef struct dmFile3Header {
dmFileInteger4 version;
dmFileInteger4 rootLength;
dmFileInteger4 byteOrder;
} dmFile3Header;
typedef struct dmFile4Header {
dmFileInteger4 version;
dmFileInteger8 rootLength;
dmFileInteger4 byteOrder;
} dmFile4Header;
typedef struct dmFile3TagDirectory dmFile3TagDirectory;
typedef struct dmFile4TagDirectory dmFile4TagDirectory;
// Tag
typedef struct dmFile3Tag {
dmFileInteger1 tagID;
dmFileInteger2 tagNameLength; // Bytes
char* tagName;
// Tag
dmFileInteger1 seperator[4];
dmFileInteger4 ninfo;
dmFileInteger4* info;
void* value;
void** value2;
// TagDirectory
dmFile3TagDirectory* tagDir;
} dmFile3Tag;
typedef struct dmFile4Tag {
dmFileInteger1 tagID;
dmFileInteger2 tagNameLength; // Bytes
char* tagName;
// Tag
dmFileInteger1 seperator[4];
// TagDirectory
dmFile4TagDirectory* tagDir;
} dmFile4Tag;
// Root Tag Directory
struct dmFile3TagDirectory {
dmFileInteger1 sortf;
dmFileInteger1 closef;
dmFileInteger4 numberOfTags;
dmFile3Tag* Tags;
} ;
struct dmFile4TagDirectory {
dmFileInteger1 sortf;
dmFileInteger1 closef;
dmFileInteger8 numberOfTags;
dmFile4Tag* Tags;
} ;
typedef struct dmFile {
// Header
dmFileInteger4 version;
dmFile3Header Header3;
dmFile4Header Header4;
// Root Tag
dmFile3TagDirectory RootTag3;
dmFile4TagDirectory RootTag4;
// Tail
dmFileInteger8 Tail;
} dmFile;
/* struct end */
#ifdef __cplusplus
extern "C" {
#endif
/* prototype begin */
// in dfFileInfo.c
extern void dmFileInfo(FILE* fpt, dmFile dm, int mode);
// in dmFileRead.c
extern void dmFileRead(FILE* fpt, dmFile* dm, char* message, int mode);
// DM Header and End Read: check file format
extern void dmFileHeaderTailRead(FILE* fpt, dmFile* dm, char* message, int mode);
// DM3
// Header
extern void dmFile3HeaderRead(FILE* fpt, dmFile* dm, char* message, int mode);
//
extern void dmFile3TagDirectoryHeaderRead(FILE* fpt, dmFile3TagDirectory* dmRoot, char* message, int mode);
extern void dmFile3TagHeaderRead(FILE* fpt, dmFile3Tag* dmTag, char* message, int mode);
extern void dmFile3TagRead(FILE* fpt, dmFile3Tag* dmTag, char* message, int mode);
// DM4
// Header
extern void dmFile4HeaderRead(FILE* fpt, dmFile* dm, char* message, int mode);
//
extern void dmFile4TagDirectoryHeaderRead(FILE* fpt, dmFile4TagDirectory* dmRoot, char* message, int mode);
extern void dmFile4TagHeaderRead(FILE* fpt, dmFile4Tag* dmTag, char* message, int mode);
extern void dmFile4TagRead(FILE* fpt, dmFile4Tag* dmTag, char* message, int mode);
// in dmFileUtil.c
extern void dmFileValuePrint(FILE* fpt, void* value, dmFileTagDataType valueType, int n);
/* prototype end */
#ifdef __cplusplus
};
#endif
#endif /* DMFILE_H */