// IndirectItem.h//// Copyright (c) 2003, Ingo Weinhold (bonefish@cs.tu-berlin.de)//// This program is free software; you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation; either version 2 of the License, or// (at your option) any later version.//// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with this program; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA//// You can alternatively use *this file* under the terms of the the MIT// license included in this package.#ifndef INDIRECT_ITEM_H#define INDIRECT_ITEM_H#include "endianess.h"// IndirectItem/*!\class IndirectItem\brief Provides access to the on-disk indirect item structure.An indirect item lists raw blocks containing the contents of a file.*/class IndirectItem : public Item {public:IndirectItem() : Item() {}IndirectItem(LeafNode *node, ItemHeader *header): Item(node, header) {}uint32 CountBlocks() const{return GetLen() / sizeof(uint32);}uint64 BlockNumberAt(int32 index) const{uint number = 0;if (index >= 0 && index < (int32)CountBlocks())number = le2h(((uint32*)GetData())[index]);return number;}};#endif // INDIRECT_ITEM_H