1//===- ArchiveReader.h ----------------------------------------------------===//
2//
3//                     The MCLinker Project
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9#ifndef MCLD_LD_ARCHIVEREADER_H_
10#define MCLD_LD_ARCHIVEREADER_H_
11#include "mcld/LD/LDReader.h"
12
13namespace mcld {
14
15class Archive;
16class LinkerConfig;
17
18/** \class ArchiveReader
19 *  \brief ArchiveReader provides an common interface for all archive readers.
20 *
21 *  ArchiveReader also reads the target-independent parts of an archive file.
22 *  There are some property on all the archive formats.
23 *  1. All archive elements star on an even boundary, new line padded;
24 *  2. All archive headers are char *;
25 *  3. All archive headers are the same size.
26 */
27
28class ArchiveReader : public LDReader {
29 public:
30  ArchiveReader();
31  virtual ~ArchiveReader();
32
33  virtual bool readArchive(const LinkerConfig& pConfig, Archive& pArchive) = 0;
34};
35
36}  // namespace mcld
37
38#endif  // MCLD_LD_ARCHIVEREADER_H_
39