BinaryReader.h revision f33f6de54db174aa679a4b6d1e040d37e95541c0
14199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa//===- BinaryReader.h -----------------------------------------------------===//
24199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa//
34199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa//                     The MCLinker Project
44199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa//
54199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa// This file is distributed under the University of Illinois Open Source
64199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa// License. See LICENSE.TXT for details.
74199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa//
84199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa//===----------------------------------------------------------------------===//
94199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa#ifndef MCLD_LD_BINARYREADER_H
104199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa#define MCLD_LD_BINARYREADER_H
114199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa#ifdef ENABLE_UNITTEST
124199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa#include <gtest.h>
134199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa#endif
144199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa#include "mcld/LD/LDReader.h"
154199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa#include <llvm/Support/system_error.h>
16677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawa
174199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawanamespace mcld {
184199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
194199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaclass Module;
204199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaclass Input;
214199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
22677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawa/** \class BinaryReader
234199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa *  \brief BinaryReader provides an common interface for different Binary
244199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa *  formats.
254199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa */
264199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaclass BinaryReader : public LDReader
274199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa{
28677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawapublic:
294199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa  virtual ~BinaryReader() = 0;
304199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
314560bdde6dd75cca49fc55b58aafb5d416b88ca3Daisuke Miyakawa  virtual bool isMyFormat(Input& pInput, bool &pContinue) const
324199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa  { pContinue = true; return false; }
334199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
344199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa  virtual bool readBinary(Input& pFile) = 0;
354199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa};
364199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
374199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa} // namespace of mcld
384199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
394199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa#endif
404199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
414199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa