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

Go to the documentation of this file.
00001 //Dear emacs, this is -*- c++ -*-
00002 
00013 #ifndef EFORMAT_WRITE_ROBFRAGMENT_H
00014 #define EFORMAT_WRITE_ROBFRAGMENT_H
00015 
00016 #include "eformat/write/node.h"
00017 #include "eformat/Version.h"
00018 
00019 namespace eformat {
00020 
00021   namespace write {
00022 
00023     class ROSFragment; 
00024 
00028     class ROBFragment {
00029 
00030     public:
00031 
00048       ROBFragment (uint32_t source_id,
00049                    uint32_t run_no,
00050                    uint32_t lvl1_id,
00051                    uint32_t bc_id,
00052                    uint32_t lvl1_type,
00053                    uint32_t detev_type,
00054                    uint32_t ndata,
00055                    const uint32_t* data,
00056                    uint32_t status_position);
00057 
00065       ROBFragment ();
00066 
00080       ROBFragment (const ROBFragment& other);
00081 
00090       ROBFragment (uint32_t* rod, uint32_t size_word);
00091 
00102       ROBFragment (uint32_t* rob);
00103 
00107       virtual ~ROBFragment () {}
00108 
00121       ROBFragment& operator= (const ROBFragment& other);
00122 
00131       void status (uint32_t n, const uint32_t* status);
00132 
00136       inline uint32_t nstatus (void) const { return m_node[0].base[5]; }
00137 
00141       inline const uint32_t* status (void) const { return m_node[1].base; }
00142 
00148       inline void minor_version (uint16_t v)
00149       { m_node[0].base[3] = eformat::DEFAULT_VERSION | v; }
00150 
00154       inline uint16_t minor_version (void) const 
00155       { return 0xffff & m_node[0].base[3]; }
00156 
00165       void rod_status (uint32_t n, const uint32_t* status);
00166 
00170       inline uint32_t rod_nstatus (void) const { return m_node[6].base[0]; }
00171 
00176       inline const uint32_t* rod_status (void) const { return m_node[4].base; }
00177 
00184       void status_position (uint32_t v);
00185 
00189       inline uint32_t status_position (void) const 
00190       { return m_node[6].base[2]; }
00191 
00197       inline void rod_minor_version (uint16_t v)
00198       { m_node[3].base[2] = eformat::DEFAULT_VERSION | v; }
00199 
00208       void rod_data (uint32_t n, const uint32_t* data);
00209 
00213       inline uint32_t rod_ndata (void) const { return m_node[6].base[1]; }
00214 
00218       inline const uint32_t* rod_data (void) const { return m_node[5].base; }
00219 
00225       inline void source_id (uint32_t s) 
00226       { m_node[0].base[4] = m_node[3].base[3] = s; }
00227 
00231       inline uint32_t source_id (void) const 
00232       { return m_node[0].base[4]; }
00233 
00239       inline void rod_run_no (uint32_t s) 
00240       { m_node[3].base[4] = s; }
00241 
00245       inline uint32_t rod_run_no (void) const 
00246       { return m_node[3].base[4]; }
00247 
00253       inline void rod_lvl1_id (uint32_t s) 
00254       { m_node[3].base[5] = s; }
00255 
00259       inline uint32_t rod_lvl1_id (void) const 
00260       { return m_node[3].base[5]; }
00261 
00267       inline void rod_bc_id (uint32_t s) 
00268       { m_node[3].base[6] = s; }
00269 
00273       inline uint32_t rod_bc_id (void) const 
00274       { return m_node[3].base[6]; }
00275 
00281       inline void rod_lvl1_type (uint32_t s) 
00282       { m_node[3].base[7] = s; }
00283 
00287       inline uint32_t rod_lvl1_type (void) const 
00288       { return m_node[3].base[7]; }
00289 
00295       inline void rod_detev_type (uint32_t s) 
00296       { m_node[3].base[8] = s; }
00297 
00301       inline uint32_t rod_detev_type (void) const 
00302       { return m_node[3].base[8]; }
00303 
00309       inline uint32_t meta_size_word (void) const
00310       { return 7 + m_node[0].base[5] + 12 + m_node[6].base[0]; }
00311 
00315       inline uint32_t size_word (void) const
00316       { return meta_size_word() + m_node[6].base[1]; }
00317 
00321       inline uint32_t page_count (void) const { return 7; }
00322 
00327       inline const eformat::write::node_t* bind (void) const
00328       { return m_node; }
00329 
00335       inline void parent (eformat::write::ROSFragment* ros) 
00336       { m_parent = ros; }
00337 
00341       inline const ROSFragment* parent (void) const { return m_parent; }
00342 
00348       inline void next (const ROBFragment* n) { m_next = n; }
00349 
00353       inline const ROBFragment* next (void) const { return m_next; }
00354 
00355     private: //representation
00356 
00357       uint32_t m_header[7]; 
00358       uint32_t m_rod_header[9]; 
00359       uint32_t m_rod_trailer[3]; 
00360       eformat::write::node_t m_node[7]; 
00361       eformat::write::ROSFragment* m_parent; 
00362       const eformat::write::ROBFragment* m_next; 
00363 
00364     };
00365 
00366   }
00367 
00368 }
00369 
00370 #endif /* EFORMAT_WRITE_ROBFRAGMENT_H */

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