llvm/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCClassDescriptorV2.cpp

//===-- AppleObjCClassDescriptorV2.cpp ------------------------------------===//
//
// 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
//
//===----------------------------------------------------------------------===//

#include "AppleObjCClassDescriptorV2.h"

#include "lldb/Expression/FunctionCaller.h"
#include "lldb/Target/ABI.h"
#include "lldb/Target/Language.h"
#include "lldb/Utility/LLDBLog.h"
#include "lldb/Utility/Log.h"
#include "lldb/lldb-enumerations.h"

usingnamespacelldb;
usingnamespacelldb_private;

bool ClassDescriptorV2::Read_objc_class(
    Process *process, std::unique_ptr<objc_class_t> &objc_class) const {}

static lldb::addr_t GetClassDataMask(Process *process) {}

bool ClassDescriptorV2::objc_class_t::Read(Process *process,
                                           lldb::addr_t addr) {}

bool ClassDescriptorV2::class_rw_t::Read(Process *process, lldb::addr_t addr) {}

bool ClassDescriptorV2::class_ro_t::Read(Process *process, lldb::addr_t addr) {}

bool ClassDescriptorV2::Read_class_row(
    Process *process, const objc_class_t &objc_class,
    std::unique_ptr<class_ro_t> &class_ro,
    std::unique_ptr<class_rw_t> &class_rw) const {}

bool ClassDescriptorV2::method_list_t::Read(Process *process,
                                            lldb::addr_t addr) {}

bool ClassDescriptorV2::method_t::Read(Process *process, lldb::addr_t addr,
                                       lldb::addr_t relative_selector_base_addr,
                                       bool is_small, bool has_direct_sel) {}

bool ClassDescriptorV2::ivar_list_t::Read(Process *process, lldb::addr_t addr) {}

bool ClassDescriptorV2::ivar_t::Read(Process *process, lldb::addr_t addr) {}

bool ClassDescriptorV2::relative_list_entry_t::Read(Process *process,
                                                    lldb::addr_t addr) {}

bool ClassDescriptorV2::relative_list_list_t::Read(Process *process,
                                                   lldb::addr_t addr) {}

std::optional<ClassDescriptorV2::method_list_t>
ClassDescriptorV2::GetMethodList(Process *process,
                                 lldb::addr_t method_list_ptr) const {}

bool ClassDescriptorV2::ProcessMethodList(
    std::function<bool(const char *, const char *)> const &instance_method_func,
    ClassDescriptorV2::method_list_t &method_list) const {}

// The relevant data structures:
//  - relative_list_list_t
//    - uint32_t count
//    - uint32_t entsize
//    - Followed by <count> number of relative_list_entry_t of size <entsize>
//
//  - relative_list_entry_t
//    - uint64_t image_index : 16
//    - int64_t list_offset : 48
//    - Note: The above 2 fit into 8 bytes always
//
//    image_index corresponds to an image in the shared cache
//    list_offset is used to calculate the address of the method_list_t we want
bool ClassDescriptorV2::ProcessRelativeMethodLists(
    std::function<bool(const char *, const char *)> const &instance_method_func,
    lldb::addr_t relative_method_list_ptr) const {}

bool ClassDescriptorV2::Describe(
    std::function<void(ObjCLanguageRuntime::ObjCISA)> const &superclass_func,
    std::function<bool(const char *, const char *)> const &instance_method_func,
    std::function<bool(const char *, const char *)> const &class_method_func,
    std::function<bool(const char *, const char *, lldb::addr_t,
                       uint64_t)> const &ivar_func) const {}

ConstString ClassDescriptorV2::GetClassName() {}

ObjCLanguageRuntime::ClassDescriptorSP ClassDescriptorV2::GetSuperclass() {}

ObjCLanguageRuntime::ClassDescriptorSP ClassDescriptorV2::GetMetaclass() const {}

uint64_t ClassDescriptorV2::GetInstanceSize() {}

// From the ObjC runtime.
static uint8_t IS_SWIFT_STABLE =;

LanguageType ClassDescriptorV2::GetImplementationLanguage() const {}

ClassDescriptorV2::iVarsStorage::iVarsStorage() :{}

size_t ClassDescriptorV2::iVarsStorage::size() {}

ClassDescriptorV2::iVarDescriptor &ClassDescriptorV2::iVarsStorage::
operator[](size_t idx) {}

void ClassDescriptorV2::iVarsStorage::fill(AppleObjCRuntimeV2 &runtime,
                                           ClassDescriptorV2 &descriptor) {}

void ClassDescriptorV2::GetIVarInformation() {}