/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Event/eformat/eformat-00-00-04/eformat/write/SubDetectorFragment.h

Go to the documentation of this file.
00001 //Dear emacs, this is -*- c++ -*-
00002 
00013 #ifndef EFORMAT_WRITE_SUBDETECTORFRAGMENT_H
00014 #define EFORMAT_WRITE_SUBDETECTORFRAGMENT_H
00015 
00016 #include "eformat/write/ROSFragment.h"
00017 
00018 namespace eformat {
00019 
00020   namespace write {
00021 
00022     class FullEventFragment; 
00023 
00027     class SubDetectorFragment {
00028 
00029     public:
00030 
00037       SubDetectorFragment (uint32_t source_id);
00038 
00045       SubDetectorFragment (uint32_t* sd);
00046 
00057       SubDetectorFragment (eformat::write::node_t* sd);
00058 
00063       SubDetectorFragment ();
00064 
00076       SubDetectorFragment (const SubDetectorFragment& other);
00077 
00081       virtual ~SubDetectorFragment () {}
00082 
00094       SubDetectorFragment& operator= (const SubDetectorFragment& other);
00095 
00104       void status (uint32_t n, const uint32_t* status);
00105 
00109       inline uint32_t nstatus (void) const { return m_node[0].base[5]; }
00110 
00114       inline const uint32_t* status (void) const { return m_node[1].base; }
00115 
00121       inline void minor_version (uint16_t v) 
00122       { m_node[0].base[3] = eformat::DEFAULT_VERSION | v; }
00123 
00127       inline uint16_t minor_version (void) const 
00128       { return 0xffff & m_node[0].base[3]; }
00129 
00135       inline void source_id (uint32_t s) 
00136       { m_node[0].base[4] = s; }
00137 
00141       inline uint32_t source_id (void) const 
00142       { return m_node[0].base[4]; }
00143 
00149       inline uint32_t meta_size_word (void) const
00150       { return m_node[0].base[2]; }
00151 
00155       inline uint32_t size_word (void) const
00156       { return m_node[0].base[1]; }
00157       
00171       void append (eformat::write::ROSFragment* ros);
00172 
00178       inline const ROSFragment* first_child (void) const { return m_child; }
00179 
00187       void size_change (uint32_t o, uint32_t n);
00188 
00192       inline const FullEventFragment* parent (void) const 
00193       { return m_parent; }
00194 
00200       inline void parent (eformat::write::FullEventFragment* fe)
00201       { m_parent = fe; }
00202 
00206       inline const SubDetectorFragment* next (void) const { return m_next; }
00207 
00213       inline void next (const SubDetectorFragment* n) { m_next = n; }
00214 
00224       uint32_t page_count (void) const;
00225 
00231       const eformat::write::node_t* bind (void);
00232 
00233     private: //representation
00234 
00235       uint32_t m_header[7]; 
00236       eformat::write::node_t m_node[3]; 
00237       eformat::write::FullEventFragment* m_parent; 
00238       eformat::write::ROSFragment* m_child; 
00239       eformat::write::ROSFragment* m_last; 
00240       const eformat::write::SubDetectorFragment* m_next; 
00241       eformat::write::node_t m_extra; 
00242       uint32_t m_extra_count; 
00243       
00244     };
00245 
00246   }
00247 
00248 }
00249 
00250 #endif /* EFORMAT_WRITE_SUBDETECTORFRAGMENT_H */

Generated on Tue Nov 29 22:58:25 2016 for BOSS_7.0.2 by  doxygen 1.4.7