Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

EMAN::Gatan::TagEntry Class Reference

#include <dm3io.h>

Collaboration diagram for EMAN::Gatan::TagEntry:

Collaboration graph
[legend]
List of all members.

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
TagTabletagtable
TagGroupparent_group
string name

Detailed Description

Definition at line 159 of file dm3io.h.


Member Enumeration Documentation

enum EMAN::Gatan::TagEntry::EntryType
 

Enumerator:
GROUP_TAG 
DATA_TAG 

Definition at line 162 of file dm3io.h.

00163                         {
00164                                 GROUP_TAG = 20,
00165                                 DATA_TAG = 21
00166                         };


Constructor & Destructor Documentation

TagEntry::TagEntry FILE *  data_file,
TagTable tagtable,
TagGroup parent_group
 

Definition at line 572 of file dm3io.cpp.

00573         :       in(data_file), tagtable(table), parent_group(parent), name("")
00574 {
00575 }

TagEntry::~TagEntry  ) 
 

Definition at line 577 of file dm3io.cpp.

00578 {
00579 }


Member Function Documentation

int TagEntry::read bool  nodata = false  ) 
 

Definition at line 582 of file dm3io.cpp.

References EMAN::ByteOrder::become_big_endian(), DATA_TAG, 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 }


Member Data Documentation

FILE* EMAN::Gatan::TagEntry::in [private]
 

Definition at line 174 of file dm3io.h.

Referenced by read().

string EMAN::Gatan::TagEntry::name [private]
 

Definition at line 177 of file dm3io.h.

Referenced by read().

TagGroup* EMAN::Gatan::TagEntry::parent_group [private]
 

Definition at line 176 of file dm3io.h.

Referenced by read().

TagTable* EMAN::Gatan::TagEntry::tagtable [private]
 

Definition at line 175 of file dm3io.h.

Referenced by read().


The documentation for this class was generated from the following files:
Generated on Mon Jul 19 13:08:09 2010 for EMAN2 by  doxygen 1.4.4