#include <dm3io.h>
Collaboration diagram for EMAN::Gatan::TagEntry:

Public Types | |
| enum | EntryType { GROUP_TAG = 20, DATA_TAG = 21 } |
Public Member Functions | |
| TagEntry (FILE *data_file, TagTable *tagtable, TagGroup *parent_group) | |
| ~TagEntry () | |
| int | read (bool nodata=false) |
Private Attributes | |
| FILE * | in |
| TagTable * | tagtable |
| TagGroup * | parent_group |
| string | name |
|
|
Definition at line 162 of file dm3io.h. Referenced by read().
|
|
||||||||||||||||
|
Definition at line 572 of file dm3io.cpp. References in. 00573 : in(data_file), tagtable(table), parent_group(parent), name("") 00574 { 00575 }
|
|
|
Definition at line 577 of file dm3io.cpp. 00578 {
00579 }
|
|
|
Definition at line 582 of file dm3io.cpp. References EntryType, EMAN::Gatan::TagGroup::get_entry_id(), EMAN::Gatan::TagGroup::get_name(), GROUP_TAG, in, LOGERR, LOGVAR, name, parent_group, EMAN::Gatan::TagGroup::read(), EMAN::Gatan::TagData::read(), tagtable, and EMAN::Gatan::to_str(). Referenced by EMAN::Gatan::TagGroup::read(). 00583 {
00584 LOGVAR("TagEntry::read()");
00585 int err = 0;
00586 char tag_type = 0;
00587 char *tmp_name = 0;
00588
00589 fread(&tag_type, sizeof(char), 1, in);
00590
00591 if (tag_type != GROUP_TAG && tag_type != DATA_TAG) {
00592 LOGERR("TagEntry::read() invalid tag type: %d", tag_type);
00593 return 1;
00594 }
00595
00596 short name_len = 0;
00597 fread(&name_len, sizeof(short), 1, in);
00598 ByteOrder::become_big_endian(&name_len);
00599
00600 if (name_len != 0) {
00601 tmp_name = new char[name_len + 1];
00602 fread(tmp_name, name_len, 1, in);
00603 tmp_name[name_len] = '\0';
00604 }
00605 else {
00606 string parent_name = parent_group->get_name();
00607 name_len = static_cast < short >(parent_name.size() + 4);
00608 tmp_name = new char[name_len + 1];
00609 sprintf(tmp_name, "%s #%d", parent_name.c_str(), parent_group->get_entry_id());
00610 }
00611
00612 name = string(tmp_name);
00613 if( tmp_name )
00614 {
00615 delete[]tmp_name;
00616 tmp_name = 0;
00617 }
00618
00619 LOGVAR("\ntag name: '%s', len: %d, type: '%s'",
00620 name.c_str(), name_len, Gatan::to_str((EntryType) tag_type));
00621
00622 if (tag_type == DATA_TAG) {
00623 TagData tag_data(in, tagtable, name);
00624 err = tag_data.read(nodata);
00625 }
00626 else if (tag_type == GROUP_TAG) {
00627 TagGroup group(in, tagtable, name);
00628 err = group.read(nodata);
00629 }
00630
00631 return err;
00632 }
|
|
|
Definition at line 174 of file dm3io.h. Referenced by read(). |
|
|
Definition at line 177 of file dm3io.h. Referenced by read(). |
|
|
Definition at line 176 of file dm3io.h. Referenced by read(). |
|
|
Definition at line 175 of file dm3io.h. Referenced by read(). |
1.3.9.1