llvm/llvm/include/llvm/Object/Archive.h

//===- Archive.h - ar archive file format -----------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// This file declares the ar archive file format class.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_OBJECT_ARCHIVE_H
#define LLVM_OBJECT_ARCHIVE_H

#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/fallible_iterator.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/Object/Binary.h"
#include "llvm/Support/Chrono.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/MemoryBuffer.h"
#include <cassert>
#include <cstdint>
#include <memory>
#include <string>
#include <vector>

namespace llvm {
namespace object {

const char ArchiveMagic[] =;
const char ThinArchiveMagic[] =;
const char BigArchiveMagic[] =;

class Archive;

class AbstractArchiveMemberHeader {};

template <typename T>
class CommonArchiveMemberHeader : public AbstractArchiveMemberHeader {};

struct UnixArMemHdrType {};

class ArchiveMemberHeader : public CommonArchiveMemberHeader<UnixArMemHdrType> {};

// File Member Header
struct BigArMemHdrType {};

// Define file member header of AIX big archive.
class BigArchiveMemberHeader
    : public CommonArchiveMemberHeader<BigArMemHdrType> {};

class Archive : public Binary {};

class BigArchive : public Archive {};

} // end namespace object
} // end namespace llvm

#endif // LLVM_OBJECT_ARCHIVE_H