修订版 | c26b43f87fb96c43f559c029b3c95c6fe38fff4f (tree) |
---|---|
时间 | 2015-04-01 15:04:44 |
作者 | Takuo Yasunaga <yasunaga@bio....> |
Commiter | Takuo Yasunaga |
modified output file
LogS
@@ -35,11 +35,11 @@ typedef enum dmFileTagDataType { | ||
35 | 35 | dmFileTagDataTypeReal8 =7, |
36 | 36 | dmFileTagDataTypeBool1 =8, |
37 | 37 | dmFileTagDataTypeChar1 =9, |
38 | - dmFileTagDataTypeInt1 =10, | |
39 | - dmFileTagDataTypeInt8 =11, | |
40 | - dmFileTagDataTypeStruct =15, | |
41 | - dmFileTagDataTypeString =18, | |
42 | - dmFileTagDataTypeArray =20 | |
38 | + dmFileTagDataTypeInt1 =0xa, | |
39 | + dmFileTagDataTypeInt8 =0xb, | |
40 | + dmFileTagDataTypeStruct =0xf, | |
41 | + dmFileTagDataTypeString =0x12, | |
42 | + dmFileTagDataTypeArray =0x14, | |
43 | 43 | } dmFileTagDataType; |
44 | 44 | |
45 | 45 | static size_t __dmFileTagDataTypeSize[24] = { |
@@ -55,65 +55,69 @@ static char* __dmFileTagDataTypeFormat[24] = { | ||
55 | 55 | }; |
56 | 56 | |
57 | 57 | // Header |
58 | -typedef struct dm3FileHeader { | |
58 | +typedef struct dmFile3Header { | |
59 | 59 | dmFileInteger4 version; |
60 | 60 | dmFileInteger4 rootLength; |
61 | 61 | dmFileInteger4 byteOrder; |
62 | -} dm3FileHeader; | |
62 | +} dmFile3Header; | |
63 | 63 | |
64 | -typedef struct dm4FileHeader { | |
64 | +typedef struct dmFile4Header { | |
65 | 65 | dmFileInteger4 version; |
66 | 66 | dmFileInteger8 rootLength; |
67 | 67 | dmFileInteger4 byteOrder; |
68 | -} dm4FileHeader; | |
68 | +} dmFile4Header; | |
69 | 69 | |
70 | -typedef struct dm3FileRootTagDirectory dm3FileRootTagDirectory; | |
71 | -typedef struct dm4FileRootTagDirectory dm4FileRootTagDirectory; | |
70 | +typedef struct dmFile3TagDirectory dmFile3TagDirectory; | |
71 | +typedef struct dmFile4TagDirectory dmFile4TagDirectory; | |
72 | 72 | |
73 | -// Tag Directory | |
74 | -typedef struct dm3FileTagDirectrory { | |
73 | +// Tag | |
74 | +typedef struct dmFile3Tag { | |
75 | 75 | dmFileInteger1 tagID; |
76 | 76 | dmFileInteger2 tagNameLength; // Bytes |
77 | 77 | char* tagName; |
78 | + // Tag | |
78 | 79 | dmFileInteger1 seperator[4]; |
79 | 80 | dmFileInteger4 ninfo; |
80 | 81 | dmFileInteger4* info; |
81 | 82 | void* value; |
82 | 83 | void** value2; |
83 | - dm3FileRootTagDirectory* tagDir; | |
84 | -} dm3FileTagDirectrory; | |
84 | + // TagDirectory | |
85 | + dmFile3TagDirectory* tagDir; | |
86 | +} dmFile3Tag; | |
85 | 87 | |
86 | -typedef struct dm4FileTagDirectrory { | |
88 | +typedef struct dmFile4Tag { | |
87 | 89 | dmFileInteger1 tagID; |
88 | 90 | dmFileInteger2 tagNameLength; // Bytes |
89 | 91 | char* tagName; |
92 | + // Tag | |
90 | 93 | dmFileInteger1 seperator[4]; |
91 | - dm4FileRootTagDirectory* tagDir; | |
92 | -} dm4FileTagDirectrory; | |
94 | + // TagDirectory | |
95 | + dmFile4TagDirectory* tagDir; | |
96 | +} dmFile4Tag; | |
93 | 97 | |
94 | 98 | // Root Tag Directory |
95 | -struct dm3FileRootTagDirectory { | |
99 | +struct dmFile3TagDirectory { | |
96 | 100 | dmFileInteger1 sortf; |
97 | 101 | dmFileInteger1 closef; |
98 | 102 | dmFileInteger4 numberOfTags; |
99 | - dm3FileTagDirectrory* Tags; | |
103 | + dmFile3Tag* Tags; | |
100 | 104 | } ; |
101 | 105 | |
102 | -struct dm4FileRootTagDirectory { | |
106 | +struct dmFile4TagDirectory { | |
103 | 107 | dmFileInteger1 sortf; |
104 | 108 | dmFileInteger1 closef; |
105 | 109 | dmFileInteger8 numberOfTags; |
106 | - dm4FileTagDirectrory* Tags; | |
110 | + dmFile4Tag* Tags; | |
107 | 111 | } ; |
108 | 112 | |
109 | 113 | typedef struct dmFile { |
110 | 114 | // Header |
111 | 115 | dmFileInteger4 version; |
112 | - dm3FileHeader Header3; | |
113 | - dm4FileHeader Header4; | |
116 | + dmFile3Header Header3; | |
117 | + dmFile4Header Header4; | |
114 | 118 | // Root Tag |
115 | - dm3FileRootTagDirectory RootTag3; | |
116 | - dm4FileRootTagDirectory RootTag4; | |
119 | + dmFile3TagDirectory RootTag3; | |
120 | + dmFile4TagDirectory RootTag4; | |
117 | 121 | // Tail |
118 | 122 | dmFileInteger8 Tail; |
119 | 123 | } dmFile; |
@@ -130,16 +134,24 @@ extern "C" { | ||
130 | 134 | extern void dmFileInfo(FILE* fpt, dmFile dm, int mode); |
131 | 135 | |
132 | 136 | // in dmFileRead.c |
133 | -extern void dmFileHeaderTailRead(FILE* fpt, dmFile* dm, char* message, int mode); | |
134 | 137 | extern void dmFileRead(FILE* fpt, dmFile* dm, char* message, int mode); |
138 | +// DM Header and End Read: check file format | |
139 | +extern void dmFileHeaderTailRead(FILE* fpt, dmFile* dm, char* message, int mode); | |
140 | +// DM3 | |
141 | +// Header | |
135 | 142 | extern void dmFile3HeaderRead(FILE* fpt, dmFile* dm, char* message, int mode); |
136 | -extern void dmFileTag3RootTagRead(FILE* fpt, dm3FileRootTagDirectory* dmRoot, char* message, int mode); | |
137 | -extern void dmFileTag3HeaderRead(FILE* fpt, dm3FileTagDirectrory* dmTag, char* message, int mode); | |
138 | -extern void dmFileTag3Read(FILE* fpt, dm3FileTagDirectrory* dmTag, char* message, int mode); | |
143 | +// | |
144 | +extern void dmFile3TagDirectoryHeaderRead(FILE* fpt, dmFile3TagDirectory* dmRoot, char* message, int mode); | |
145 | +extern void dmFile3TagHeaderRead(FILE* fpt, dmFile3Tag* dmTag, char* message, int mode); | |
146 | +extern void dmFile3TagRead(FILE* fpt, dmFile3Tag* dmTag, char* message, int mode); | |
147 | + | |
148 | +// DM4 | |
149 | +// Header | |
139 | 150 | extern void dmFile4HeaderRead(FILE* fpt, dmFile* dm, char* message, int mode); |
140 | -extern void dmFileTag4RootTagRead(FILE* fpt, dm4FileRootTagDirectory* dmRoot, char* message, int mode); | |
141 | -extern void dmFileTag4HeaderRead(FILE* fpt, dm4FileTagDirectrory* dmTag, char* message, int mode); | |
142 | -extern void dmFileTag4Read(FILE* fpt, dm4FileTagDirectrory* dmTag, char* message, int mode); | |
151 | +// | |
152 | +extern void dmFile4TagDirectoryHeaderRead(FILE* fpt, dmFile4TagDirectory* dmRoot, char* message, int mode); | |
153 | +extern void dmFile4TagHeaderRead(FILE* fpt, dmFile4Tag* dmTag, char* message, int mode); | |
154 | +extern void dmFile4TagRead(FILE* fpt, dmFile4Tag* dmTag, char* message, int mode); | |
143 | 155 | |
144 | 156 | // in dmFileUtil.c |
145 | 157 | extern void dmFileValuePrint(FILE* fpt, void* value, dmFileTagDataType valueType, int n); |
@@ -1,153 +0,0 @@ | ||
1 | -/* | |
2 | -# dmFile.h : $Revision$ | |
3 | -# $Date$ | |
4 | -# Created by $Author$ | |
5 | -# Usage : dmFile.h | |
6 | -# Attention | |
7 | -# $Loccker$ | |
8 | -# $State$ | |
9 | -# | |
10 | -*/ | |
11 | -/* $Log$ */ | |
12 | -#ifndef DMFILE_H | |
13 | -#define DMFILE_H | |
14 | - | |
15 | -#include <stdio.h> | |
16 | - | |
17 | -/* constant begin */ | |
18 | - | |
19 | - | |
20 | -/* constant end */ | |
21 | - | |
22 | -/* struct begin */ | |
23 | - | |
24 | -typedef __int64_t dmFileInteger8; | |
25 | -typedef __int32_t dmFileInteger4; | |
26 | -typedef __int16_t dmFileInteger2; | |
27 | -typedef __int8_t dmFileInteger1; | |
28 | - | |
29 | -typedef enum dmFileTagDataType { | |
30 | - dmFileTagDataTypeInt2 =2, | |
31 | - dmFileTagDataTypeInt4 =3, | |
32 | - dmFileTagDataTypeUInt2 =4, | |
33 | - dmFileTagDataTypeUInt4 =5, | |
34 | - dmFileTagDataTypeReal4 =6, | |
35 | - dmFileTagDataTypeReal8 =7, | |
36 | - dmFileTagDataTypeBool1 =8, | |
37 | - dmFileTagDataTypeChar1 =9, | |
38 | - dmFileTagDataTypeInt1 =10, | |
39 | - dmFileTagDataTypeInt8 =11, | |
40 | - dmFileTagDataTypeStruct =15, | |
41 | - dmFileTagDataTypeString =18, | |
42 | - dmFileTagDataTypeArray =20 | |
43 | -} dmFileTagDataType; | |
44 | - | |
45 | -static size_t __dmFileTagDataTypeSize[24] = { | |
46 | - 0, 0, 2, 4, 2, 4, 4, 8, 1, 1, | |
47 | - 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, | |
48 | - 0, 0, 0, 0 | |
49 | -}; | |
50 | - | |
51 | -static char* __dmFileTagDataTypeFormat[24] = { | |
52 | - 0, 0, "%d", "%d", "%u", "%u", "%f", "%f", "%d", "%c", | |
53 | - "%d", "%d", 0, 0, 0, 0, 0, 0, 0, 0, | |
54 | - 0, 0, 0, 0 | |
55 | -}; | |
56 | - | |
57 | -// Header | |
58 | -typedef struct dm3FileHeader { | |
59 | - dmFileInteger4 version; | |
60 | - dmFileInteger4 rootLength; | |
61 | - dmFileInteger4 byteOrder; | |
62 | -} dm3FileHeader; | |
63 | - | |
64 | -typedef struct dm4FileHeader { | |
65 | - dmFileInteger4 version; | |
66 | - dmFileInteger8 rootLength; | |
67 | - dmFileInteger4 byteOrder; | |
68 | -} dm4FileHeader; | |
69 | - | |
70 | -typedef struct dm3FileRootTagDirectory dm3FileRootTagDirectory; | |
71 | -typedef struct dm4FileRootTagDirectory dm4FileRootTagDirectory; | |
72 | - | |
73 | -// Tag Directory | |
74 | -typedef struct dm3FileTagDirectrory { | |
75 | - dmFileInteger1 tagID; | |
76 | - dmFileInteger2 tagNameLength; // Bytes | |
77 | - char* tagName; | |
78 | - dmFileInteger1 seperator[4]; | |
79 | - dmFileInteger4 ninfo; | |
80 | - dmFileInteger4* info; | |
81 | - void* value; | |
82 | - void** value2; | |
83 | - dm3FileRootTagDirectory* tagDir; | |
84 | -} dm3FileTagDirectrory; | |
85 | - | |
86 | -typedef struct dm4FileTagDirectrory { | |
87 | - dmFileInteger1 tagID; | |
88 | - dmFileInteger2 tagNameLength; // Bytes | |
89 | - char* tagName; | |
90 | - dmFileInteger1 seperator[4]; | |
91 | - dm4FileRootTagDirectory* tagDir; | |
92 | -} dm4FileTagDirectrory; | |
93 | - | |
94 | -// Root Tag Directory | |
95 | -struct dm3FileRootTagDirectory { | |
96 | - dmFileInteger1 sortf; | |
97 | - dmFileInteger1 closef; | |
98 | - dmFileInteger4 numberOfTags; | |
99 | - dm3FileTagDirectrory* Tags; | |
100 | -} ; | |
101 | - | |
102 | -struct dm4FileRootTagDirectory { | |
103 | - dmFileInteger1 sortf; | |
104 | - dmFileInteger1 closef; | |
105 | - dmFileInteger8 numberOfTags; | |
106 | - dm4FileTagDirectrory* Tags; | |
107 | -} dm4FileRootTagDirectory; | |
108 | - | |
109 | -typedef struct dmFile { | |
110 | - // Header | |
111 | - dmFileInteger4 version; | |
112 | - dm3FileHeader Header3; | |
113 | - dm4FileHeader Header4; | |
114 | - // Root Tag | |
115 | - dm3FileRootTagDirectory RootTag3; | |
116 | - dm4FileRootTagDirectory RootTag4; | |
117 | - // Tail | |
118 | - dmFileInteger8 Tail; | |
119 | -} dmFile; | |
120 | - | |
121 | -/* struct end */ | |
122 | - | |
123 | -#ifdef __cplusplus | |
124 | -extern "C" { | |
125 | -#endif | |
126 | - | |
127 | -/* prototype begin */ | |
128 | - | |
129 | -// in dfFileInfo.c | |
130 | -extern void dmFileInfo(FILE* fpt, dmFile dm, int mode); | |
131 | - | |
132 | -// in dmFileRead.c | |
133 | -extern void dmFileHeaderTailRead(FILE* fpt, dmFile* dm, char* message, int mode); | |
134 | -extern void dmFileRead(FILE* fpt, dmFile* dm, char* message, int mode); | |
135 | -extern void dmFile3HeaderRead(FILE* fpt, dmFile* dm, char* message, int mode); | |
136 | -extern void dmFileTag3RootTagRead(FILE* fpt, dm3FileRootTagDirectory* dmRoot, char* message, int mode); | |
137 | -extern void dmFileTag3HeaderRead(FILE* fpt, dm3FileTagDirectrory* dmTag, char* message, int mode); | |
138 | -extern void dmFileTag3Read(FILE* fpt, dm3FileTagDirectrory* dmTag, char* message, int mode); | |
139 | -extern void dmFile4HeaderRead(FILE* fpt, dmFile* dm, char* message, int mode); | |
140 | -extern void dmFileTag4RootTagRead(FILE* fpt, dm4FileRootTagDirectory* dmRoot, char* message, int mode); | |
141 | -extern void dmFileTag4HeaderRead(FILE* fpt, dm4FileTagDirectrory* dmTag, char* message, int mode); | |
142 | -extern void dmFileTag4Read(FILE* fpt, dm4FileTagDirectrory* dmTag, char* message, int mode); | |
143 | - | |
144 | -// in dmFileUtil.c | |
145 | -extern void dmFileValuePrint(FILE* fpt, void* value, dmFileTagDataType valueType, int n); | |
146 | - | |
147 | -/* prototype end */ | |
148 | - | |
149 | -#ifdef __cplusplus | |
150 | -}; | |
151 | -#endif | |
152 | - | |
153 | -#endif /* DMFILE_H */ |
@@ -19,6 +19,7 @@ void | ||
19 | 19 | dmFileRead(FILE* fpt, dmFile* dm, char* message, int mode) |
20 | 20 | { |
21 | 21 | int i, j; |
22 | + dmFile3Tag* dmTag; | |
22 | 23 | |
23 | 24 | dmFileHeaderTailRead(fpt, dm, message, mode); |
24 | 25 |
@@ -27,36 +28,36 @@ dmFileRead(FILE* fpt, dmFile* dm, char* message, int mode) | ||
27 | 28 | // Header |
28 | 29 | dmFile3HeaderRead(fpt, dm, message, mode); |
29 | 30 | // Root Tag |
30 | - dmFileTag3RootTagRead(fpt, &(dm->RootTag3), message, mode); | |
31 | + dmFile3TagDirectoryHeaderRead(fpt, &(dm->RootTag3), message, mode); | |
31 | 32 | for(i=0; i<dm->RootTag3.numberOfTags; i++) { |
32 | - DEBUGPRINT1("Tags-i: %d\n", i); | |
33 | - dmFileTag3HeaderRead(fpt, &(dm->RootTag3.Tags[i]), message, mode); | |
33 | + dmTag = &(dm->RootTag3.Tags[i]); | |
34 | + DEBUGPRINT2("Tags-i: %d/%d\n", i, dm->RootTag3.numberOfTags); | |
35 | + dmFile3TagHeaderRead(fpt, &(dm->RootTag3.Tags[i]), message, mode); | |
34 | 36 | switch(dm->RootTag3.Tags[i].tagID) { |
35 | - case 0x12: { | |
36 | - | |
37 | - break; | |
38 | - } | |
39 | 37 | case 0x15: { // tag |
40 | - dmFileTag3Read(fpt, &(dm->RootTag3.Tags[i]), message, mode); | |
38 | + DEBUGPRINT("TAG\n"); | |
39 | + dmFile3TagRead(fpt, &(dm->RootTag3.Tags[i]), message, mode); | |
41 | 40 | break; |
42 | 41 | } |
43 | 42 | case 0x14: { // tag directories |
44 | 43 | DEBUGPRINT("TAG DIRECTORIES\n"); |
45 | - dm->RootTag3.Tags[i].tagDir = memoryAllocate(sizeof(dm3FileRootTagDirectory), message); | |
46 | - dmFileTag3RootTagRead(fpt, dm->RootTag3.Tags[i].tagDir, message, mode); | |
44 | + dm->RootTag3.Tags[i].tagDir = memoryAllocate(sizeof(dmFile3TagDirectory), message); | |
45 | + dmFile3TagDirectoryHeaderRead(fpt, dm->RootTag3.Tags[i].tagDir, message, mode); | |
47 | 46 | DEBUGPRINT1("Number of Tages: %d\n", dm->RootTag3.Tags[i].tagDir->numberOfTags); |
48 | 47 | for(j=0; j<dm->RootTag3.Tags[i].tagDir->numberOfTags; j++) { |
49 | 48 | DEBUGPRINT1("Tags-j(in tag directories): %d\n", j); |
50 | - dmFileTag3Read(fpt, &(dm->RootTag3.Tags[i].tagDir->Tags[j]), message, mode); | |
49 | + dmFile3TagHeaderRead(fpt, &(dm->RootTag3.Tags[i].tagDir->Tags[j]), message, mode); | |
50 | + dmFile3TagRead(fpt, &(dm->RootTag3.Tags[i].tagDir->Tags[j]), message, mode); | |
51 | 51 | } |
52 | 52 | break; |
53 | 53 | } |
54 | - case 0x0: { | |
54 | + case 0x0: { | |
55 | 55 | DEBUGPRINT("FILE END\n") |
56 | 56 | return; |
57 | 57 | break; |
58 | 58 | } |
59 | 59 | default: { |
60 | + dmFile3TagRead(fpt, &(dm->RootTag3.Tags[i]), message, mode); | |
60 | 61 | fprintf(stderr, "Not supported tagID: %X\n", dm->RootTag3.Tags[i].tagID); |
61 | 62 | //exit(EXIT_FAILURE); |
62 | 63 | break; |
@@ -69,7 +70,7 @@ dmFileRead(FILE* fpt, dmFile* dm, char* message, int mode) | ||
69 | 70 | // Header |
70 | 71 | dmFile4HeaderRead(fpt, dm, message, mode); |
71 | 72 | // Root Tag |
72 | - dmFileTag4RootTagRead(fpt, &(dm->RootTag4), message, mode); | |
73 | + dmFile4TagDirectoryHeaderRead(fpt, &(dm->RootTag4), message, mode); | |
73 | 74 | break; |
74 | 75 | } |
75 | 76 | default: { |
@@ -83,6 +84,7 @@ dmFileRead(FILE* fpt, dmFile* dm, char* message, int mode) | ||
83 | 84 | void |
84 | 85 | dmFileHeaderTailRead(FILE* fpt, dmFile* dm, char* message, int mode) |
85 | 86 | { |
87 | + DEBUGPRINT("dmFileHeaderTailRead\n"); | |
86 | 88 | fseek(fpt, 0L, SEEK_SET); |
87 | 89 | fread(&(dm->version), sizeof(dmFileInteger4), 1, fpt); |
88 | 90 | #ifdef II |
@@ -101,9 +103,10 @@ dmFileHeaderTailRead(FILE* fpt, dmFile* dm, char* message, int mode) | ||
101 | 103 | void |
102 | 104 | dmFile3HeaderRead(FILE* fpt, dmFile* dm, char* message, int mode) |
103 | 105 | { |
106 | + DEBUGPRINT("dmFile3HeaderRead\n"); | |
104 | 107 | // Header |
105 | 108 | fseek(fpt, 0L, SEEK_SET); |
106 | - if(12!=sizeof(dm->Header4)) { | |
109 | + if(12!=sizeof(dm->Header3)) { | |
107 | 110 | fprintf(stderr, "Size is strange: %lu expected 12\n", sizeof(dm->Header4)); |
108 | 111 | fread(&(dm->Header3.version), sizeof(dm->Header3.version), 1, fpt); |
109 | 112 | fread(&(dm->Header3.rootLength), sizeof(dm->Header3.rootLength), 1, fpt); |
@@ -148,8 +151,9 @@ dmFile4HeaderRead(FILE* fpt, dmFile* dm, char* message, int mode) | ||
148 | 151 | } |
149 | 152 | |
150 | 153 | void |
151 | -dmFileTag3RootTagRead(FILE* fpt, dm3FileRootTagDirectory* RootTag3, char* message, int mode) | |
154 | +dmFile3TagDirectoryHeaderRead(FILE* fpt, dmFile3TagDirectory* RootTag3, char* message, int mode) | |
152 | 155 | { |
156 | + DEBUGPRINT("dmFileTag3RootTagRead\n"); | |
153 | 157 | // Root Tag |
154 | 158 | fread(&(RootTag3->sortf), sizeof(dmFileInteger1), 1, fpt); |
155 | 159 | fread(&(RootTag3->closef), sizeof(dmFileInteger1), 1, fpt); |
@@ -160,12 +164,13 @@ dmFileTag3RootTagRead(FILE* fpt, dm3FileRootTagDirectory* RootTag3, char* messag | ||
160 | 164 | DEBUGPRINT1("sortf: %d\n", RootTag3->sortf); |
161 | 165 | DEBUGPRINT1("closef: %d\n", RootTag3->closef); |
162 | 166 | DEBUGPRINT1("numberOfTags: %d\n", RootTag3->numberOfTags); |
163 | - RootTag3->Tags = (dm3FileTagDirectrory*)memoryAllocate(sizeof(dm3FileTagDirectrory)*RootTag3->numberOfTags, "in dmFileRead"); | |
167 | + RootTag3->Tags = (dmFile3Tag*)memoryAllocate(sizeof(dmFile3Tag)*RootTag3->numberOfTags, "in dmFileRead"); | |
164 | 168 | } |
165 | 169 | |
166 | 170 | void |
167 | -dmFileTag4RootTagRead(FILE* fpt, dm4FileRootTagDirectory* RootTag4, char* message, int mode) | |
171 | +dmFile4TagDirectoryHeaderRead(FILE* fpt, dmFile4TagDirectory* RootTag4, char* message, int mode) | |
168 | 172 | { |
173 | + DBUGPRINT("dmFile4TagDirectoryHeaderRead"); | |
169 | 174 | // Root Tag |
170 | 175 | fread(&(RootTag4->sortf), sizeof(dmFileInteger1), 1, fpt); |
171 | 176 | fread(&(RootTag4->closef), sizeof(dmFileInteger1), 1, fpt); |
@@ -176,12 +181,13 @@ dmFileTag4RootTagRead(FILE* fpt, dm4FileRootTagDirectory* RootTag4, char* messag | ||
176 | 181 | DEBUGPRINT1("sortf: %d\n", RootTag4->sortf); |
177 | 182 | DEBUGPRINT1("closef: %d\n", RootTag4->closef); |
178 | 183 | DEBUGPRINT1("numberOfTags: %lld\n", RootTag4->numberOfTags); |
179 | - RootTag4->Tags = (dm4FileTagDirectrory*)memoryAllocate(sizeof(dm4FileTagDirectrory)*RootTag4->numberOfTags, "in dmFileRead"); | |
184 | + RootTag4->Tags = (dmFile4Tag*)memoryAllocate(sizeof(dmFile4Tag)*RootTag4->numberOfTags, "in dmFileRead"); | |
180 | 185 | } |
181 | 186 | |
182 | 187 | void |
183 | -dmFileTag3HeaderRead(FILE* fpt, dm3FileTagDirectrory* dmTag, char* message, int mode) | |
188 | +dmFile3TagHeaderRead(FILE* fpt, dmFile3Tag* dmTag, char* message, int mode) | |
184 | 189 | { |
190 | + DEBUGPRINT("dmFileTag3HeaderRead\n"); | |
185 | 191 | fread(&(dmTag->tagID), sizeof(dmFileInteger1), 1, fpt); |
186 | 192 | fread(&(dmTag->tagNameLength), sizeof(dmFileInteger2), 1, fpt); |
187 | 193 | #ifdef II |
@@ -191,26 +197,34 @@ dmFileTag3HeaderRead(FILE* fpt, dm3FileTagDirectrory* dmTag, char* message, int | ||
191 | 197 | dmTag->tagName = (char*)memoryAllocate(sizeof(char)*(dmTag->tagNameLength+1), "in dmFileRead"); |
192 | 198 | fread(dmTag->tagName, sizeof(char), dmTag->tagNameLength, fpt); |
193 | 199 | } |
194 | - DEBUGPRINT3("tag %X %d %s\n", dmTag->tagID, dmTag->tagNameLength, dmTag->tagName); | |
200 | + DEBUGPRINT3("tagID(hex) %X tagNameLength %d tagName %s\n", dmTag->tagID, dmTag->tagNameLength, dmTag->tagName); | |
195 | 201 | } |
196 | 202 | |
197 | 203 | void |
198 | -dmFileTag3Read(FILE* fpt, dm3FileTagDirectrory* dmTag, char* message, int mode) | |
204 | +dmFile3TagRead(FILE* fpt, dmFile3Tag* dmTag, char* message, int mode) | |
199 | 205 | { |
200 | 206 | int j; |
201 | - DEBUGPRINT("TAG Read\n"); | |
207 | + DEBUGPRINT("dmFileTag3Read\n"); | |
202 | 208 | fread(dmTag->seperator, sizeof(char), 4, fpt); |
209 | + DEBUGPRINT1("%s\n",dmTag->seperator); | |
210 | + if(0!=strncmp(dmTag->seperator, "%%%%", 4)) { | |
211 | + fprintf(stderr, "Not supported : Strange!!!\n"); | |
212 | + } | |
203 | 213 | fread(&(dmTag->ninfo), sizeof(dmFileInteger4), 1, fpt); |
204 | 214 | #ifdef II |
205 | 215 | memoryByteSwap(&(dmTag->ninfo), sizeof(dmFileInteger4), 1); |
206 | 216 | #endif |
207 | 217 | DEBUGPRINT1("tag ninfo %d\n", dmTag->ninfo); |
218 | + if(0==dmTag->ninfo) { | |
219 | + DEBUGPRINT1("tag ninfo is zero: %d\n", dmTag->ninfo); | |
220 | + return; | |
221 | + } | |
208 | 222 | dmTag->info = (dmFileInteger4*)memoryAllocate(sizeof(dmFileInteger4)*dmTag->ninfo, "in dmFileRead"); |
209 | 223 | fread(dmTag->info, sizeof(dmFileInteger4), dmTag->ninfo, fpt); |
210 | 224 | #ifdef II |
211 | 225 | memoryByteSwap(dmTag->info, sizeof(dmFileInteger4), dmTag->ninfo); |
212 | 226 | #endif |
213 | - DEBUGPRINT1("tag: %X\n", dmTag->info[0]); | |
227 | + DEBUGPRINT2("tag: info[0] %X ninfo %d\n", dmTag->info[0], dmTag->ninfo); | |
214 | 228 | switch(dmTag->info[0]) { |
215 | 229 | case dmFileTagDataTypeStruct: { |
216 | 230 | DEBUGPRINT1("Struct: numEntry %d\n", dmTag->info[2]); |
@@ -218,7 +232,7 @@ dmFileTag3Read(FILE* fpt, dm3FileTagDirectrory* dmTag, char* message, int mode) | ||
218 | 232 | // dmTag->info[2*n + 4] ; data type of value-n |
219 | 233 | dmTag->value2 = (void*)memoryAllocate(sizeof(void*)*dmTag->info[2], "in dmFileRead"); |
220 | 234 | for(j=0; j<dmTag->info[2]; j++) { |
221 | - DEBUGPRINT2("value %d %d\n", j, dmTag->info[2*j+4]); | |
235 | + DEBUGPRINT2("value %d type %d\n", j, dmTag->info[2*j+4]); | |
222 | 236 | dmTag->value2[j] = memoryAllocate(__dmFileTagDataTypeSize[dmTag->info[2*j+4]], "in dmFileRead"); |
223 | 237 | fread(dmTag->value2[j], __dmFileTagDataTypeSize[dmTag->info[2*j+4]], 1, fpt); |
224 | 238 | #ifdef II |
@@ -245,11 +259,20 @@ dmFileTag3Read(FILE* fpt, dm3FileTagDirectrory* dmTag, char* message, int mode) | ||
245 | 259 | } |
246 | 260 | break; |
247 | 261 | } |
262 | + case dmFileTagDataTypeString: { | |
263 | + //dmTag->value = memoryAllocate(__dmFileTagDataTypeSize[dmTag->info[0]], "in dmFileRead"); | |
264 | + //fread(dmTag->value, __dmFileTagDataTypeSize[dmTag->info[0]], 1, fpt); | |
265 | + //dmFileValuePrint(stderr, dmTag->value, __dmFileTagDataTypeSize[dmTag->info[0]], 1); | |
266 | + //fprintf(stderr, "Not supported tagType: %d\n", dmTag->info[j]); | |
267 | + break; | |
268 | + } | |
248 | 269 | default: { |
249 | - fprintf(stderr, "Not supported tagType: %d\n", dmTag->info[j]); | |
270 | + dmTag->value = memoryAllocate(__dmFileTagDataTypeSize[dmTag->info[0]], "in dmFileRead"); | |
271 | + fread(dmTag->value, __dmFileTagDataTypeSize[dmTag->info[0]], 1, fpt); | |
272 | + dmFileValuePrint(stderr, dmTag->value, __dmFileTagDataTypeSize[dmTag->info[0]], 1); | |
273 | + //fprintf(stderr, "Not supported tagType: %d\n", dmTag->info[j]); | |
250 | 274 | break; |
251 | 275 | } |
252 | 276 | } |
253 | 277 | } |
254 | 278 | |
255 | - |
@@ -59,27 +59,44 @@ lmrcImageShapePCA(mrcImage* in, lmrcImageShapePCAInfo* linfo, int mode) | ||
59 | 59 | arrayDataSet2(X1, 2, i, data); |
60 | 60 | } |
61 | 61 | arrayPCA(&linfo->u, &linfo->C, &linfo->Lambda, &X1, &linfo->Average, 0); |
62 | + | |
63 | + return 0; | |
62 | 64 | } |
63 | 65 | |
64 | 66 | int |
65 | 67 | lmrcImageShapePCAResultsPrint(FILE* fpt, lmrcImageShapePCAInfo* linfo, int mode) |
66 | 68 | { |
67 | 69 | double sum; |
70 | + double lambda[3]; | |
71 | + int i; | |
72 | + | |
73 | + fprintf(fpt, "# PCA Results"); | |
74 | + fprintf(fpt, "Convariace Matrix: "); | |
75 | + arrayWriteToFile(fpt, &linfo->C, "lmrcImageShapePCAResultsPrint"); | |
76 | + fprintf(fpt, "UnitVector: one unit vector per line, from 1st "); | |
77 | + arrayWriteToFile(fpt, &linfo->u, "lmrcImageShapePCAResultsPrint"); | |
78 | + fprintf(fpt, "Lambda: 1st 2nd 3rd"); | |
79 | + arrayWriteToFile(fpt, &linfo->Lambda, "lmrcImageShapePCAResultsPrint"); | |
80 | + fprintf(fpt, "Average: "); | |
81 | + arrayWriteToFile(fpt, &linfo->Average, "lmrcImageShapePCAResultsPrint"); | |
82 | + fprintf(fpt, "Normalized Lambda: 1st 2nd 3rd\n"); | |
83 | + | |
84 | + lambda[0] = arrayDataGet1(linfo->Lambda, 0); | |
85 | + lambda[1] = arrayDataGet1(linfo->Lambda, 1); | |
86 | + lambda[2] = arrayDataGet1(linfo->Lambda, 2); | |
87 | + sum = 0; | |
88 | + for(i=0; i<3; i++) { | |
89 | + sum += lambda[i]; | |
90 | + } | |
91 | + for(i=0; i<3; i++) { | |
92 | + lambda[i] /= sum; | |
93 | + } | |
94 | + for(i=0; i<3; i++) { | |
95 | + fprintf(fpt, "%15.6f ", lambda[i]); | |
96 | + } | |
97 | + fprintf(fpt, "\n"); | |
98 | + | |
99 | + fprintf(fpt, "logS(SphereIndex) : %15.6f\n", log10(1/(lambda[0]*lambda[1] + lambda[1]*lambda[2] +lambda[2]*lambda[0] ))); | |
68 | 100 | |
69 | - fprintf(fpt, "# PCA Results"); | |
70 | - fprintf(fpt, "Convariace Matrix: "); | |
71 | - arrayWriteToFile(fpt, &linfo->C, "lmrcImageShapePCAResultsPrint"); | |
72 | - fprintf(fpt, "UnitVector: one unit vector per line, from 1st "); | |
73 | - arrayWriteToFile(fpt, &linfo->u, "lmrcImageShapePCAResultsPrint"); | |
74 | - fprintf(fpt, "Lambda: 1st 2nd 3rd"); | |
75 | - arrayWriteToFile(fpt, &linfo->Lambda, "lmrcImageShapePCAResultsPrint"); | |
76 | - fprintf(fpt, "Average: "); | |
77 | - arrayWriteToFile(fpt, &linfo->Average, "lmrcImageShapePCAResultsPrint"); | |
78 | - fprintf(fpt, "Normalized Lambda: 1st 2nd 3rd\n"); | |
79 | - sum = arrayDataGet1(linfo->Lambda, 0); | |
80 | - sum += arrayDataGet1(linfo->Lambda, 1); | |
81 | - sum += arrayDataGet1(linfo->Lambda, 2); | |
82 | - fprintf(fpt, "%15.6f ", arrayDataGet1(linfo->Lambda, 0)/sum); | |
83 | - fprintf(fpt, "%15.6f ", arrayDataGet1(linfo->Lambda, 1)/sum); | |
84 | - fprintf(fpt, "%15.6f \n", arrayDataGet1(linfo->Lambda, 2)/sum); | |
101 | + return 0; | |
85 | 102 | } |
@@ -1,18 +1 @@ | ||
1 | -<HTML> | |
2 | -<HEAD> | |
3 | -<TITLE>dmInfo</TITLE> | |
4 | -</HEAD> | |
5 | -<BODY> | |
6 | -<H1>dmInfo</H1> | |
7 | -<H2>Usage</H2> | |
8 | -<PRE> | |
9 | -Usage: dmInfo | |
10 | -Options: | |
11 | - [-i[nput] In (NULL ).as(inFile::dmFile ) ] :Essential :Input:dfFile(dm3|dm4) | |
12 | - [-o[utput] Out (stdout ).as(outFile::ASCII ) ] :Optional :Output: | |
13 | - [-c[onfig] configFile (NULL ).as(inFile ) ] :Optional :ConfigurationFile | |
14 | - [-m[ode] mode (0 ).as(Integer ) ] :Optional :Mode | |
15 | ------ Additional Usage ----- | |
16 | -</PRE> | |
17 | -</BODY> | |
18 | -</HTML> | |
1 | +/bin/bash: dmInfo: No such file or directory |