Files
Xenia-Canary/src/xenia/cpu/raw_module.h
gibbed 5bf0b34445 C++17ification.
C++17ification!

- Filesystem interaction now uses std::filesystem::path.
- Usage of const char*, std::string have been changed to
  std::string_view where appropriate.
- Usage of printf-style functions changed to use fmt.
2020-04-07 16:09:41 -05:00

53 lines
1.6 KiB
C++

/**
******************************************************************************
* Xenia : Xbox 360 Emulator Research Project *
******************************************************************************
* Copyright 2020 Ben Vanik. All rights reserved. *
* Released under the BSD license - see LICENSE in the root for more details. *
******************************************************************************
*/
#ifndef XENIA_CPU_RAW_MODULE_H_
#define XENIA_CPU_RAW_MODULE_H_
#include <string>
#include "xenia/cpu/module.h"
namespace xe {
namespace cpu {
class RawModule : public Module {
public:
explicit RawModule(Processor* processor);
~RawModule() override;
bool LoadFile(uint32_t base_address, const std::filesystem::path& path);
// Set address range if you've already allocated memory and placed code
// in it.
void SetAddressRange(uint32_t base_address, uint32_t size);
const std::string& name() const override { return name_; }
bool is_executable() const override { return is_executable_; }
void set_name(const std::string_view name) { name_ = name; }
void set_executable(bool is_executable) { is_executable_ = is_executable; }
bool ContainsAddress(uint32_t address) override;
protected:
std::unique_ptr<Function> CreateFunction(uint32_t address) override;
private:
std::string name_;
bool is_executable_ = false;
uint32_t base_address_;
uint32_t low_address_;
uint32_t high_address_;
};
} // namespace cpu
} // namespace xe
#endif // XENIA_CPU_RAW_MODULE_H_