#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 577 of file dm3io.cpp. References in. 00578 : in(data_file), tagtable(table), parent_group(parent), name("") 00579 { 00580 }
|
|
Definition at line 582 of file dm3io.cpp. 00583 { 00584 }
|
|
Definition at line 587 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::GatanDM4::to_str(). Referenced by EMAN::Gatan::TagGroup::read(). 00588 { 00589 LOGVAR("TagEntry::read()"); 00590 int err = 0; 00591 char tag_type = 0; 00592 char *tmp_name = 0; 00593 00594 fread(&tag_type, sizeof(char), 1, in); 00595 00596 if (tag_type != GROUP_TAG && tag_type != DATA_TAG) { 00597 LOGERR("TagEntry::read() invalid tag type: %d", tag_type); 00598 return 1; 00599 } 00600 00601 short name_len = 0; 00602 fread(&name_len, sizeof(short), 1, in); 00603 ByteOrder::become_big_endian(&name_len); 00604 00605 if (name_len != 0) { 00606 tmp_name = new char[name_len + 1]; 00607 fread(tmp_name, name_len, 1, in); 00608 tmp_name[name_len] = '\0'; 00609 } 00610 else { 00611 string parent_name = parent_group->get_name(); 00612 name_len = static_cast < short >(parent_name.size() + 4); 00613 tmp_name = new char[name_len + 1]; 00614 sprintf(tmp_name, "%s #%d", parent_name.c_str(), parent_group->get_entry_id()); 00615 } 00616 00617 name = string(tmp_name); 00618 if( tmp_name ) 00619 { 00620 delete[]tmp_name; 00621 tmp_name = 0; 00622 } 00623 00624 LOGVAR("\ntag name: '%s', len: %d, type: '%s'", 00625 name.c_str(), name_len, Gatan::to_str((EntryType) tag_type)); 00626 00627 if (tag_type == DATA_TAG) { 00628 TagData tag_data(in, tagtable, name); 00629 err = tag_data.read(nodata); 00630 } 00631 else if (tag_type == GROUP_TAG) { 00632 TagGroup group(in, tagtable, name); 00633 err = group.read(nodata); 00634 } 00635 00636 return err; 00637 }
|
|
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(). |