Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
#ifndef GENERS_RPFOOTERREFERENCE_HH_
#define GENERS_RPFOOTERREFERENCE_HH_

#include "Alignment/Geners/interface/AbsArchive.hh"
#include "Alignment/Geners/interface/AbsReference.hh"
#include "Alignment/Geners/interface/GenericIO.hh"

namespace gs {
    namespace Private {
        struct RPFooterReference : public AbsReference
        {
            inline RPFooterReference(
                AbsArchive& ar, const ClassId& classId,
                const char* name, const char* category)
                : AbsReference(ar, classId, "gs::RPFooter",
                               name, category) {}

            void fillItems(
                unsigned long* nrows, unsigned long long* headerId,
                std::vector<std::pair<unsigned long,unsigned long long> >* ids,
                unsigned long long* offset,
                const unsigned long number) const
            {
                const unsigned long long itemId = this->id(number);
                assert(itemId);
                std::istream& s = this->positionInputStream(itemId);
                *offset = archive().catalogEntry(itemId)->offset();
                read_pod(s, nrows);
                read_pod(s, headerId);
                restore_item(s, ids, false);
            }
        };
    }
}

#endif // GENERS_RPFOOTERREFERENCE_HH_