# element name is the name of a command and the value is
# a script that loads the command.
-set auto_index(roiAreaRotateStart) [list source [file join $dir RoiAreaRotate.wish]]
-set auto_index(roiAreaRotateMotion) [list source [file join $dir RoiAreaRotate.wish]]
-set auto_index(roiAreaRotateEnd) [list source [file join $dir RoiAreaRotate.wish]]
-set auto_index(rectangleRotate) [list source [file join $dir RoiAreaRotate.wish]]
-set auto_index(rectangleRotateCalc) [list source [file join $dir RoiAreaRotate.wish]]
-set auto_index(lineRotate) [list source [file join $dir RoiAreaRotate.wish]]
-set auto_index(lineRotateCalc) [list source [file join $dir RoiAreaRotate.wish]]
-set auto_index(splineRotate) [list source [file join $dir RoiAreaRotate.wish]]
-set auto_index(splineRotateCalc) [list source [file join $dir RoiAreaRotate.wish]]
-set auto_index(roiAreaSelectStart) [list source [file join $dir RoiAreaSelect.wish]]
-set auto_index(roiAreaSelectMotion) [list source [file join $dir RoiAreaSelect.wish]]
-set auto_index(roiAreaSelectEnd) [list source [file join $dir RoiAreaSelect.wish]]
-set auto_index(roiAreaSelectOK) [list source [file join $dir RoiAreaSelect.wish]]
+set auto_index(display2BindingSet) [list source [file join $dir Display2Binding.wish]]
set auto_index(colormapChange) [list source [file join $dir Display2Colormap.wish]]
+set auto_index(display2DesktopSet) [list source [file join $dir Display2Desktop.wish]]
+set auto_index(display2ETCSet) [list source [file join $dir Display2ETCSet.wish]]
+set auto_index(fileOpenWinCreate) [list source [file join $dir Display2File.wish]]
+set auto_index(fileNewWinCreate) [list source [file join $dir Display2File.wish]]
+set auto_index(seqFileOpenWinCreate) [list source [file join $dir Display2File.wish]]
+set auto_index(seqFileNewWinCreate) [list source [file join $dir Display2File.wish]]
+set auto_index(fileOpen) [list source [file join $dir Display2Image.wish]]
+set auto_index(mainImagePut) [list source [file join $dir Display2Image.wish]]
+set auto_index(overviewImagePut) [list source [file join $dir Display2Image.wish]]
+set auto_index(histgramGraphCreate) [list source [file join $dir Display2Info.wish]]
+set auto_index(display2InformationWinCreate) [list source [file join $dir Display2Info.wish]]
+set auto_index(fileReopen) [list source [file join $dir Display2Info.wish]]
+set auto_index(mrcImageInformationWinCreate) [list source [file join $dir Display2Info.wish]]
+set auto_index(imageInformationWinCreate) [list source [file join $dir Display2Info.wish]]
+set auto_index(layerLineInformationWinCreate) [list source [file join $dir Display2Info.wish]]
+set auto_index(projectionInformationWinCreate) [list source [file join $dir Display2Info.wish]]
+set auto_index(sectionInformationWinCreate) [list source [file join $dir Display2Info.wish]]
+set auto_index(ctfInformationWinCreate) [list source [file join $dir Display2Info.wish]]
+set auto_index(unitCellInformationWinCreate) [list source [file join $dir Display2Info.wish]]
+set auto_index(scaleInfoWinCreate) [list source [file join $dir Display2Info.wish]]
+set auto_index(roiInformationWinCreate) [list source [file join $dir Display2InfoROI.wish]]
+set auto_index(roiLineInfoFrameCreate) [list source [file join $dir Display2InfoROI.wish]]
+set auto_index(roiSplineInfoFrameCreate) [list source [file join $dir Display2InfoROI.wish]]
+set auto_index(roiRectangleInfoFrameCreate) [list source [file join $dir Display2InfoROI.wish]]
+set auto_index(roiAnalysisFrameCreate) [list source [file join $dir Display2InfoROI.wish]]
+set auto_index(display2Init) [list source [file join $dir Display2Init.wish]]
+set auto_index(display2MenuSet) [list source [file join $dir Display2Menu.wish]]
+set auto_index(menuFileCreate) [list source [file join $dir Display2Menu.wish]]
+set auto_index(menuSeqFileCreate) [list source [file join $dir Display2Menu.wish]]
+set auto_index(menuWindowCreate) [list source [file join $dir Display2Menu.wish]]
+set auto_index(menuInfoCreate) [list source [file join $dir Display2Menu.wish]]
+set auto_index(menuHelpCreate) [list source [file join $dir Display2Menu.wish]]
set auto_index(display2MenuSet2) [list source [file join $dir Display2Menu2.wish]]
-set auto_index(fft2dCmd) [list source [file join $dir fft2dCmd.wish]]
-set auto_index(display2BindingSet) [list source [file join $dir Display2Binding.wish]]
-set auto_index(roiMultiAreaInfoSave) [list source [file join $dir RoiAreaFile.wish]]
-set auto_index(roiMultiAreaInfoLoad) [list source [file join $dir RoiAreaFile.wish]]
-set auto_index(roiAreaFileSave) [list source [file join $dir RoiAreaFile.wish]]
-set auto_index(roiAreaFFT) [list source [file join $dir RoiAreaUtil.wish]]
-set auto_index(splineNearPoint) [list source [file join $dir RoiAreaUtil.wish]]
-set auto_index(rectangleNearPoint) [list source [file join $dir RoiAreaUtil.wish]]
-set auto_index(lineNearPoint) [list source [file join $dir RoiAreaUtil.wish]]
-set auto_index(pointDistance) [list source [file join $dir RoiAreaUtil.wish]]
-set auto_index(pointDistance2) [list source [file join $dir RoiAreaUtil.wish]]
-set auto_index(vectorAngle) [list source [file join $dir RoiAreaUtil.wish]]
-set auto_index(coordGetInMainImageToReal) [list source [file join $dir RoiAreaUtil.wish]]
-set auto_index(coordGetInMainImageToCanvas) [list source [file join $dir RoiAreaUtil.wish]]
-set auto_index(dataGetInMainImageToReal) [list source [file join $dir RoiAreaUtil.wish]]
-set auto_index(dataGetInMainImageToCanvas) [list source [file join $dir RoiAreaUtil.wish]]
-set auto_index(pointSet) [list source [file join $dir RoiAreaUtil.wish]]
set auto_index(roiRelatedObjectRecreate) [list source [file join $dir Display2MenuROI.wish]]
set auto_index(menuRoiCreate) [list source [file join $dir Display2MenuROI.wish]]
set auto_index(menuRoiCancelCommand) [list source [file join $dir Display2MenuROI.wish]]
set auto_index(menuMultiRoiAllDeleteCommand) [list source [file join $dir Display2MenuROI.wish]]
set auto_index(menuMultiRoiDeleteCommand) [list source [file join $dir Display2MenuROI.wish]]
set auto_index(menuEditCreate) [list source [file join $dir Display2MenuROI.wish]]
-<<<<<<< HEAD
-set auto_index(display2Init) [list source [file join $dir Display2Init.wish]]
-set auto_index(display2MenuSet) [list source [file join $dir Display2Menu.wish]]
-set auto_index(menuFileCreate) [list source [file join $dir Display2Menu.wish]]
-set auto_index(menuSeqFileCreate) [list source [file join $dir Display2Menu.wish]]
-set auto_index(menuWindowCreate) [list source [file join $dir Display2Menu.wish]]
-set auto_index(menuInfoCreate) [list source [file join $dir Display2Menu.wish]]
-set auto_index(menuHelpCreate) [list source [file join $dir Display2Menu.wish]]
-set auto_index(roiAreaResizeStart) [list source [file join $dir RoiAreaResize.wish]]
-set auto_index(roiAreaResizeMotion) [list source [file join $dir RoiAreaResize.wish]]
-set auto_index(roiAreaResizeEnd) [list source [file join $dir RoiAreaResize.wish]]
-set auto_index(rectangleResize) [list source [file join $dir RoiAreaResize.wish]]
-set auto_index(rectangleResizeCalc) [list source [file join $dir RoiAreaResize.wish]]
-set auto_index(lineResize) [list source [file join $dir RoiAreaResize.wish]]
-set auto_index(splineResize) [list source [file join $dir RoiAreaResize.wish]]
-=======
-set auto_index(fft2dCmd) [list source [file join $dir fft2dCmd.wish]]
->>>>>>> FETCH_HEAD
set auto_index(layerLineRecreate) [list source [file join $dir LayerLineUtil.wish]]
set auto_index(layerLineCreate) [list source [file join $dir LayerLineUtil.wish]]
set auto_index(layerLineClear) [list source [file join $dir LayerLineUtil.wish]]
set auto_index(layerLineChange) [list source [file join $dir LayerLineUtil.wish]]
-set auto_index(histgramGraphCreate) [list source [file join $dir Display2Info.wish]]
-set auto_index(display2InformationWinCreate) [list source [file join $dir Display2Info.wish]]
-set auto_index(fileReopen) [list source [file join $dir Display2Info.wish]]
-set auto_index(mrcImageInformationWinCreate) [list source [file join $dir Display2Info.wish]]
-set auto_index(imageInformationWinCreate) [list source [file join $dir Display2Info.wish]]
-set auto_index(layerLineInformationWinCreate) [list source [file join $dir Display2Info.wish]]
-set auto_index(projectionInformationWinCreate) [list source [file join $dir Display2Info.wish]]
-set auto_index(sectionInformationWinCreate) [list source [file join $dir Display2Info.wish]]
-set auto_index(ctfInformationWinCreate) [list source [file join $dir Display2Info.wish]]
-set auto_index(unitCellInformationWinCreate) [list source [file join $dir Display2Info.wish]]
-set auto_index(scaleInfoWinCreate) [list source [file join $dir Display2Info.wish]]
-set auto_index(roiAreaZoomIn) [list source [file join $dir RoiAreaZoom.wish]]
-set auto_index(roiAreaZoomOut) [list source [file join $dir RoiAreaZoom.wish]]
-set auto_index(roiAreaZoom) [list source [file join $dir RoiAreaZoom.wish]]
+set auto_index(projectionRecreate) [list source [file join $dir ProjectionUtil.wish]]
+set auto_index(projectionCreate) [list source [file join $dir ProjectionUtil.wish]]
+set auto_index(projectionClear) [list source [file join $dir ProjectionUtil.wish]]
+set auto_index(projectionChange) [list source [file join $dir ProjectionUtil.wish]]
set auto_index(roiAreaCreateStart) [list source [file join $dir RoiAreaCreate.wish]]
set auto_index(roiAreaCreateMotion) [list source [file join $dir RoiAreaCreate.wish]]
set auto_index(roiAreaCreateEnd) [list source [file join $dir RoiAreaCreate.wish]]
set auto_index(splineCreate) [list source [file join $dir RoiAreaCreate.wish]]
set auto_index(knobShow) [list source [file join $dir RoiAreaCreate.wish]]
set auto_index(knobHide) [list source [file join $dir RoiAreaCreate.wish]]
-set auto_index(fileOpenWinCreate) [list source [file join $dir Display2File.wish]]
-set auto_index(fileNewWinCreate) [list source [file join $dir Display2File.wish]]
-set auto_index(seqFileOpenWinCreate) [list source [file join $dir Display2File.wish]]
-set auto_index(seqFileNewWinCreate) [list source [file join $dir Display2File.wish]]
-set auto_index(ScaleRecreate) [list source [file join $dir ScaleUtil.wish]]
-set auto_index(ScaleCreate) [list source [file join $dir ScaleUtil.wish]]
-set auto_index(ScaleClear) [list source [file join $dir ScaleUtil.wish]]
-set auto_index(ScaleChange) [list source [file join $dir ScaleUtil.wish]]
-set auto_index(unitCellRecreate) [list source [file join $dir UnitCell.wish]]
-set auto_index(fileOpen) [list source [file join $dir Display2Image.wish]]
-set auto_index(mainImagePut) [list source [file join $dir Display2Image.wish]]
-set auto_index(overviewImagePut) [list source [file join $dir Display2Image.wish]]
+set auto_index(roiMultiAreaInfoSave) [list source [file join $dir RoiAreaFile.wish]]
+set auto_index(roiMultiAreaInfoLoad) [list source [file join $dir RoiAreaFile.wish]]
+set auto_index(roiAreaFileSave) [list source [file join $dir RoiAreaFile.wish]]
set auto_index(roiAreaMoveStart) [list source [file join $dir RoiAreaMove.wish]]
set auto_index(roiAreaMoveMotion) [list source [file join $dir RoiAreaMove.wish]]
set auto_index(roiAreaMoveEnd) [list source [file join $dir RoiAreaMove.wish]]
set auto_index(rectangleMove) [list source [file join $dir RoiAreaMove.wish]]
set auto_index(lineMove) [list source [file join $dir RoiAreaMove.wish]]
set auto_index(splineMove) [list source [file join $dir RoiAreaMove.wish]]
-set auto_index(roiInformationWinCreate) [list source [file join $dir Display2InfoROI.wish]]
-set auto_index(roiLineInfoFrameCreate) [list source [file join $dir Display2InfoROI.wish]]
-set auto_index(roiSplineInfoFrameCreate) [list source [file join $dir Display2InfoROI.wish]]
-set auto_index(roiRectangleInfoFrameCreate) [list source [file join $dir Display2InfoROI.wish]]
-set auto_index(roiAnalysisFrameCreate) [list source [file join $dir Display2InfoROI.wish]]
+set auto_index(roiAreaResizeStart) [list source [file join $dir RoiAreaResize.wish]]
+set auto_index(roiAreaResizeMotion) [list source [file join $dir RoiAreaResize.wish]]
+set auto_index(roiAreaResizeEnd) [list source [file join $dir RoiAreaResize.wish]]
+set auto_index(rectangleResize) [list source [file join $dir RoiAreaResize.wish]]
+set auto_index(rectangleResizeCalc) [list source [file join $dir RoiAreaResize.wish]]
+set auto_index(lineResize) [list source [file join $dir RoiAreaResize.wish]]
+set auto_index(splineResize) [list source [file join $dir RoiAreaResize.wish]]
+set auto_index(roiAreaRotateStart) [list source [file join $dir RoiAreaRotate.wish]]
+set auto_index(roiAreaRotateMotion) [list source [file join $dir RoiAreaRotate.wish]]
+set auto_index(roiAreaRotateEnd) [list source [file join $dir RoiAreaRotate.wish]]
+set auto_index(rectangleRotate) [list source [file join $dir RoiAreaRotate.wish]]
+set auto_index(rectangleRotateCalc) [list source [file join $dir RoiAreaRotate.wish]]
+set auto_index(lineRotate) [list source [file join $dir RoiAreaRotate.wish]]
+set auto_index(lineRotateCalc) [list source [file join $dir RoiAreaRotate.wish]]
+set auto_index(splineRotate) [list source [file join $dir RoiAreaRotate.wish]]
+set auto_index(splineRotateCalc) [list source [file join $dir RoiAreaRotate.wish]]
+set auto_index(roiAreaSelectStart) [list source [file join $dir RoiAreaSelect.wish]]
+set auto_index(roiAreaSelectMotion) [list source [file join $dir RoiAreaSelect.wish]]
+set auto_index(roiAreaSelectEnd) [list source [file join $dir RoiAreaSelect.wish]]
+set auto_index(roiAreaSelectOK) [list source [file join $dir RoiAreaSelect.wish]]
+set auto_index(roiAreaFFT) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(splineNearPoint) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(rectangleNearPoint) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(lineNearPoint) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(pointDistance) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(pointDistance2) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(vectorAngle) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(coordGetInMainImageToReal) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(coordGetInMainImageToCanvas) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(dataGetInMainImageToReal) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(dataGetInMainImageToCanvas) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(pointSet) [list source [file join $dir RoiAreaUtil.wish]]
+set auto_index(roiAreaZoomIn) [list source [file join $dir RoiAreaZoom.wish]]
+set auto_index(roiAreaZoomOut) [list source [file join $dir RoiAreaZoom.wish]]
+set auto_index(roiAreaZoom) [list source [file join $dir RoiAreaZoom.wish]]
+set auto_index(ScaleRecreate) [list source [file join $dir ScaleUtil.wish]]
+set auto_index(ScaleCreate) [list source [file join $dir ScaleUtil.wish]]
+set auto_index(ScaleClear) [list source [file join $dir ScaleUtil.wish]]
+set auto_index(ScaleChange) [list source [file join $dir ScaleUtil.wish]]
set auto_index(sectionInit) [list source [file join $dir SectionUtil.wish]]
set auto_index(sectionRecreateAll) [list source [file join $dir SectionUtil.wish]]
set auto_index(sectionRecreate) [list source [file join $dir SectionUtil.wish]]
set auto_index(sectionClearAll) [list source [file join $dir SectionUtil.wish]]
set auto_index(sectionClear) [list source [file join $dir SectionUtil.wish]]
set auto_index(sectionChange) [list source [file join $dir SectionUtil.wish]]
-set auto_index(display2DesktopSet) [list source [file join $dir Display2Desktop.wish]]
-set auto_index(display2ETCSet) [list source [file join $dir Display2ETCSet.wish]]
-set auto_index(projectionRecreate) [list source [file join $dir ProjectionUtil.wish]]
-set auto_index(projectionCreate) [list source [file join $dir ProjectionUtil.wish]]
-set auto_index(projectionClear) [list source [file join $dir ProjectionUtil.wish]]
-set auto_index(projectionChange) [list source [file join $dir ProjectionUtil.wish]]
set auto_index(unitCellRecreate) [list source [file join $dir UnitCell.wish]]
+set auto_index(fft2dCmd) [list source [file join $dir fft2dCmd.wish]]
typedef __int8_t dmFileInteger1;
typedef enum dmFileTagDataType {
- dmFileTagDataTypeShort=2,
- dmFileTagDataTypeLong =3,
- dmFileTagDataTypeUShort =4,
+ 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 dm3FileHeader {
+typedef struct dmFile3Header {
dmFileInteger4 version;
dmFileInteger4 rootLength;
dmFileInteger4 byteOrder;
-} dm3FileHeader;
+} dmFile3Header;
-typedef struct dm4FileHeader {
+typedef struct dmFile4Header {
dmFileInteger4 version;
dmFileInteger8 rootLength;
dmFileInteger4 byteOrder;
-} dm4FileHeader;
-
-// Root Tag Directory
-typedef struct dm3FileRootTagDirectory {
- dmFileInteger1 sortf;
- dmFileInteger1 closef;
- dmFileInteger4 numberOfTags;
-} dm3FileRootTagDirectory;
+} dmFile4Header;
-typedef struct dm4FileRootTagDirectory {
- dmFileInteger1 sortf;
- dmFileInteger1 closef;
- dmFileInteger8 numberOfTags;
-} dm4FileRootTagDirectory;
+typedef struct dmFile3TagDirectory dmFile3TagDirectory;
+typedef struct dmFile4TagDirectory dmFile4TagDirectory;
-// Tag Directory
-typedef struct dm3FileTagDirectrory {
+// Tag
+typedef struct dmFile3Tag {
dmFileInteger1 tagID;
dmFileInteger2 tagNameLength; // Bytes
char* tagName;
+ // Tag
dmFileInteger1 seperator[4];
- dmFileInteger4 sizeDim;
- dmFileInteger4* dim;
-} dm3FileTagDirectrory;
-
-typedef struct dm4FileTagDirectrory {
+ dmFileInteger4 ninfo;
+ dmFileInteger4* info;
+ void* value;
+ void** value2;
+ // TagDirectory
+ dmFile3TagDirectory* tagDir;
+} dmFile3Tag;
+
+typedef struct dmFile4Tag {
dmFileInteger1 tagID;
dmFileInteger2 tagNameLength; // Bytes
char* tagName;
-} dm4FileTagDirectrory;
+ // 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;
- dm3FileHeader Header3;
- dm4FileHeader Header4;
+ dmFile3Header Header3;
+ dmFile4Header Header4;
// Root Tag
- dm3FileRootTagDirectory RootTag3;
- dm4FileRootTagDirectory RootTag4;
-
+ dmFile3TagDirectory RootTag3;
+ dmFile4TagDirectory RootTag4;
+ // Tail
dmFileInteger8 Tail;
} dmFile;
// 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 */
../src/dmFileInfo.c:
../src/dmFileRead.c:
+
+../src/dmFileUtil.c:
</PRE>
<HR>
<A NAME="include">
typedef __int8_t dmFileInteger1;
typedef enum dmFileTagDataType {
- dmFileTagDataTypeShort=2,
- dmFileTagDataTypeLong =3,
- dmFileTagDataTypeUShort =4,
+ 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 dm3FileHeader {
+typedef struct dmFile3Header {
dmFileInteger4 version;
dmFileInteger4 rootLength;
dmFileInteger4 byteOrder;
-} dm3FileHeader;
+} dmFile3Header;
-typedef struct dm4FileHeader {
+typedef struct dmFile4Header {
dmFileInteger4 version;
dmFileInteger8 rootLength;
dmFileInteger4 byteOrder;
-} dm4FileHeader;
+} dmFile4Header;
-// Root Tag Directory
-typedef struct dm3FileRootTagDirectory {
- dmFileInteger1 sortf;
- dmFileInteger1 closef;
- dmFileInteger4 numberOfTags;
-} dm3FileRootTagDirectory;
+typedef struct dmFile3TagDirectory dmFile3TagDirectory;
+typedef struct dmFile4TagDirectory dmFile4TagDirectory;
-typedef struct dm4FileRootTagDirectory {
- dmFileInteger1 sortf;
- dmFileInteger1 closef;
- dmFileInteger8 numberOfTags;
-} dm4FileRootTagDirectory;
-
-// Tag Directory
-typedef struct dm3FileTagDirectrory {
+// Tag
+typedef struct dmFile3Tag {
dmFileInteger1 tagID;
dmFileInteger2 tagNameLength; // Bytes
char* tagName;
+ // Tag
dmFileInteger1 seperator[4];
- dmFileInteger4 sizeDim;
- dmFileInteger4* dim;
-} dm3FileTagDirectrory;
-
-typedef struct dm4FileTagDirectrory {
+ dmFileInteger4 ninfo;
+ dmFileInteger4* info;
+ void* value;
+ void** value2;
+ // TagDirectory
+ dmFile3TagDirectory* tagDir;
+} dmFile3Tag;
+
+typedef struct dmFile4Tag {
dmFileInteger1 tagID;
dmFileInteger2 tagNameLength; // Bytes
char* tagName;
-} dm4FileTagDirectrory;
+ // 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;
- dm3FileHeader Header3;
- dm4FileHeader Header4;
+ dmFile3Header Header3;
+ dmFile4Header Header4;
// Root Tag
- dm3FileRootTagDirectory RootTag3;
- dm4FileRootTagDirectory RootTag4;
-
+ dmFile3TagDirectory RootTag3;
+ dmFile4TagDirectory RootTag4;
+ // Tail
dmFileInteger8 Tail;
} dmFile;
// 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 */