llvm/lldb/source/Plugins/ObjectFile/Breakpad/BreakpadRecords.h

//===-- BreakpadRecords.h ------------------------------------- -*- 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
//
//===----------------------------------------------------------------------===//

#ifndef LLDB_SOURCE_PLUGINS_OBJECTFILE_BREAKPAD_BREAKPADRECORDS_H
#define LLDB_SOURCE_PLUGINS_OBJECTFILE_BREAKPAD_BREAKPADRECORDS_H

#include "lldb/Utility/UUID.h"
#include "lldb/lldb-types.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/FormatProviders.h"
#include "llvm/TargetParser/Triple.h"
#include <optional>

namespace lldb_private {
namespace breakpad {

class Record {};

llvm::StringRef toString(Record::Kind K);
inline llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, Record::Kind K) {}

class ModuleRecord : public Record {};

inline bool operator==(const ModuleRecord &L, const ModuleRecord &R) {}
llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const ModuleRecord &R);

class InfoRecord : public Record {};

inline bool operator==(const InfoRecord &L, const InfoRecord &R) {}
llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const InfoRecord &R);

class FileRecord : public Record {};

inline bool operator==(const FileRecord &L, const FileRecord &R) {}
llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const FileRecord &R);

class InlineOriginRecord : public Record {};

inline bool operator==(const InlineOriginRecord &L,
                       const InlineOriginRecord &R) {}
llvm::raw_ostream &operator<<(llvm::raw_ostream &OS,
                              const InlineOriginRecord &R);

class FuncRecord : public Record {};

bool operator==(const FuncRecord &L, const FuncRecord &R);
llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const FuncRecord &R);

class InlineRecord : public Record {};

bool operator==(const InlineRecord &L, const InlineRecord &R);
llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const InlineRecord &R);

class LineRecord : public Record {};

bool operator==(const LineRecord &L, const LineRecord &R);
llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const LineRecord &R);

class PublicRecord : public Record {};

bool operator==(const PublicRecord &L, const PublicRecord &R);
llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const PublicRecord &R);

class StackCFIRecord : public Record {};

bool operator==(const StackCFIRecord &L, const StackCFIRecord &R);
llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const StackCFIRecord &R);

class StackWinRecord : public Record {};

bool operator==(const StackWinRecord &L, const StackWinRecord &R);
llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const StackWinRecord &R);

} // namespace breakpad
} // namespace lldb_private

#endif // LLDB_SOURCE_PLUGINS_OBJECTFILE_BREAKPAD_BREAKPADRECORDS_H