diff --git a/src/xenia/apu/apu.h b/src/xenia/apu/apu.h index 36861efae..9c39b5079 100644 --- a/src/xenia/apu/apu.h +++ b/src/xenia/apu/apu.h @@ -12,14 +12,13 @@ #include - -XEDECLARECLASS1(xe, Emulator); - +namespace xe { +class Emulator; +} // namespace xe namespace xe { namespace apu { - AudioSystem* Create(Emulator* emulator); AudioSystem* CreateNop(Emulator* emulator); @@ -31,5 +30,4 @@ AudioSystem* CreateXAudio2(Emulator* emulator); } // namespace apu } // namespace xe - #endif // XENIA_APU_APU_H_ diff --git a/src/xenia/apu/audio_driver.h b/src/xenia/apu/audio_driver.h index 3ec11bdca..55d80acb4 100644 --- a/src/xenia/apu/audio_driver.h +++ b/src/xenia/apu/audio_driver.h @@ -11,34 +11,26 @@ #define XENIA_APU_AUDIO_DRIVER_H_ #include +#include #include - -XEDECLARECLASS1(xe, Emulator); -XEDECLARECLASS2(xe, cpu, Processor); -XEDECLARECLASS2(xe, cpu, XenonThreadState); - - namespace xe { namespace apu { - class AudioDriver { -public: + public: AudioDriver(Emulator* emulator); virtual ~AudioDriver(); virtual void SubmitFrame(uint32_t samples_ptr) = 0; -protected: - Emulator* emulator_; - Memory* memory_; - cpu::Processor* processor_; + protected: + Emulator* emulator_; + Memory* memory_; + cpu::Processor* processor_; }; - } // namespace apu } // namespace xe - #endif // XENIA_APU_AUDIO_DRIVER_H_ diff --git a/src/xenia/apu/audio_system.h b/src/xenia/apu/audio_system.h index 25f871745..b0b9a0321 100644 --- a/src/xenia/apu/audio_system.h +++ b/src/xenia/apu/audio_system.h @@ -16,19 +16,16 @@ #include #include +#include #include -XEDECLARECLASS1(xe, Emulator); -XEDECLARECLASS2(xe, cpu, Processor); -XEDECLARECLASS2(xe, cpu, XenonThreadState); -XEDECLARECLASS2(xe, apu, AudioDriver); - namespace xe { namespace apu { +class AudioDriver; class AudioSystem { -public: + public: virtual ~AudioSystem(); Emulator* emulator() const { return emulator_; } @@ -38,20 +35,22 @@ public: virtual X_STATUS Setup(); virtual void Shutdown(); - X_STATUS RegisterClient(uint32_t callback, uint32_t callback_arg, size_t* out_index); + X_STATUS RegisterClient(uint32_t callback, uint32_t callback_arg, + size_t* out_index); void UnregisterClient(size_t index); void SubmitFrame(size_t index, uint32_t samples_ptr); - virtual X_STATUS CreateDriver(size_t index, HANDLE wait_handle, AudioDriver** out_driver) = 0; + virtual X_STATUS CreateDriver(size_t index, HANDLE wait_handle, + AudioDriver** out_driver) = 0; virtual void DestroyDriver(AudioDriver* driver) = 0; virtual uint64_t ReadRegister(uint64_t addr); virtual void WriteRegister(uint64_t addr, uint64_t value); -protected: + protected: virtual void Initialize(); -private: + private: void ThreadStart(); static uint64_t MMIOReadRegisterThunk(AudioSystem* as, uint64_t addr) { @@ -62,19 +61,19 @@ private: as->WriteRegister(addr, value); } -protected: + protected: AudioSystem(Emulator* emulator); - Emulator* emulator_; - Memory* memory_; - cpu::Processor* processor_; + Emulator* emulator_; + Memory* memory_; + cpu::Processor* processor_; - std::thread thread_; + std::thread thread_; cpu::XenonThreadState* thread_state_; - uint32_t thread_block_; + uint32_t thread_block_; std::atomic running_; - std::mutex lock_; + std::mutex lock_; static const size_t maximum_client_count_ = 8; @@ -88,9 +87,7 @@ protected: std::queue unused_clients_; }; - } // namespace apu } // namespace xe - #endif // XENIA_APU_AUDIO_SYSTEM_H_ diff --git a/src/xenia/apu/nop/nop_apu.h b/src/xenia/apu/nop/nop_apu.h index 2ff51b89f..d7df58711 100644 --- a/src/xenia/apu/nop/nop_apu.h +++ b/src/xenia/apu/nop/nop_apu.h @@ -12,22 +12,19 @@ #include - -XEDECLARECLASS1(xe, Emulator); -XEDECLARECLASS2(xe, apu, AudioSystem); - +namespace xe { +class Emulator; +} // namespace xe namespace xe { namespace apu { +class AudioSystem; namespace nop { - AudioSystem* Create(Emulator* emulator); - } // namespace nop } // namespace apu } // namespace xe - #endif // XENIA_APU_NOP_NOP_APU_H_ diff --git a/src/xenia/cpu/processor.h b/src/xenia/cpu/processor.h index fc0b5bc2a..ffcd65c9b 100644 --- a/src/xenia/cpu/processor.h +++ b/src/xenia/cpu/processor.h @@ -14,21 +14,15 @@ #include #include - - -XEDECLARECLASS2(alloy, runtime, Breakpoint); -XEDECLARECLASS1(xe, Emulator); -XEDECLARECLASS1(xe, ExportResolver); -XEDECLARECLASS1(xe, Memory); -XEDECLARECLASS2(xe, cpu, XenonMemory); -XEDECLARECLASS2(xe, cpu, XenonRuntime); -XEDECLARECLASS2(xe, cpu, XenonThreadState); -XEDECLARECLASS2(xe, cpu, XexModule); - +#include namespace xe { namespace cpu { +class XenonMemory; +class XenonRuntime; +class XenonThreadState; +class XexModule; enum class Irql : uint32_t { PASSIVE = 0, @@ -37,9 +31,8 @@ enum class Irql : uint32_t { DPC = 3, }; - class Processor { -public: + public: Processor(Emulator* emulator); ~Processor(); @@ -49,34 +42,30 @@ public: int Setup(); - int Execute( - XenonThreadState* thread_state, uint64_t address); - uint64_t Execute( - XenonThreadState* thread_state, uint64_t address, uint64_t args[], - size_t arg_count); + int Execute(XenonThreadState* thread_state, uint64_t address); + uint64_t Execute(XenonThreadState* thread_state, uint64_t address, + uint64_t args[], size_t arg_count); Irql RaiseIrql(Irql new_value); void LowerIrql(Irql old_value); - uint64_t ExecuteInterrupt( - uint32_t cpu, uint64_t address, uint64_t args[], size_t arg_count); + uint64_t ExecuteInterrupt(uint32_t cpu, uint64_t address, uint64_t args[], + size_t arg_count); -private: - Emulator* emulator_; - ExportResolver* export_resolver_; + private: + Emulator* emulator_; + ExportResolver* export_resolver_; - XenonRuntime* runtime_; - Memory* memory_; + XenonRuntime* runtime_; + Memory* memory_; - Irql irql_; - std::mutex interrupt_thread_lock_; - XenonThreadState* interrupt_thread_state_; - uint64_t interrupt_thread_block_; + Irql irql_; + std::mutex interrupt_thread_lock_; + XenonThreadState* interrupt_thread_state_; + uint64_t interrupt_thread_block_; }; - } // namespace cpu } // namespace xe - #endif // XENIA_CPU_PROCESSOR_H_ diff --git a/src/xenia/cpu/xenon_runtime.h b/src/xenia/cpu/xenon_runtime.h index de90e167d..2b53d0561 100644 --- a/src/xenia/cpu/xenon_runtime.h +++ b/src/xenia/cpu/xenon_runtime.h @@ -14,8 +14,7 @@ #include #include - -XEDECLARECLASS1(xe, ExportResolver); +#include namespace xe { namespace cpu { diff --git a/src/xenia/gpu/gpu.h b/src/xenia/gpu/gpu.h index 2861d7446..7015fef24 100644 --- a/src/xenia/gpu/gpu.h +++ b/src/xenia/gpu/gpu.h @@ -12,14 +12,13 @@ #include - -XEDECLARECLASS1(xe, Emulator); - +namespace xe { +class Emulator; +} // namespace xe namespace xe { namespace gpu { - GraphicsSystem* Create(Emulator* emulator); GraphicsSystem* CreateNop(Emulator* emulator); @@ -28,9 +27,7 @@ GraphicsSystem* CreateNop(Emulator* emulator); GraphicsSystem* CreateD3D11(Emulator* emulator); #endif // WIN32 - } // namespace gpu } // namespace xe - #endif // XENIA_GPU_GPU_H_ diff --git a/src/xenia/gpu/graphics_system.h b/src/xenia/gpu/graphics_system.h index 0a068ff71..4f5e8f4c3 100644 --- a/src/xenia/gpu/graphics_system.h +++ b/src/xenia/gpu/graphics_system.h @@ -14,22 +14,17 @@ #include #include +#include #include - -XEDECLARECLASS1(xe, Emulator); -XEDECLARECLASS2(xe, cpu, Processor); - - namespace xe { namespace gpu { class CommandProcessor; class GraphicsDriver; - class GraphicsSystem { -public: + public: virtual ~GraphicsSystem(); Emulator* emulator() const { return emulator_; } @@ -50,11 +45,11 @@ public: void DispatchInterruptCallback(uint32_t source, uint32_t cpu = 0xFFFFFFFF); virtual void Swap() = 0; -protected: + protected: virtual void Initialize(); virtual void Pump() = 0; -private: + private: void ThreadStart(); static uint64_t MMIOReadRegisterThunk(GraphicsSystem* gs, uint64_t addr) { @@ -65,28 +60,26 @@ private: gs->WriteRegister(addr, value); } -protected: + protected: GraphicsSystem(Emulator* emulator); - Emulator* emulator_; - Memory* memory_; - cpu::Processor* processor_; + Emulator* emulator_; + Memory* memory_; + cpu::Processor* processor_; - xe_run_loop_ref run_loop_; - std::thread thread_; + xe_run_loop_ref run_loop_; + std::thread thread_; std::atomic running_; - GraphicsDriver* driver_; + GraphicsDriver* driver_; CommandProcessor* command_processor_; - uint32_t interrupt_callback_; - uint32_t interrupt_callback_data_; - HANDLE thread_wait_; + uint32_t interrupt_callback_; + uint32_t interrupt_callback_data_; + HANDLE thread_wait_; }; - } // namespace gpu } // namespace xe - #endif // XENIA_GPU_GRAPHICS_SYSTEM_H_ diff --git a/src/xenia/gpu/nop/nop_gpu.h b/src/xenia/gpu/nop/nop_gpu.h index 7d3e03a34..c9dfd5ead 100644 --- a/src/xenia/gpu/nop/nop_gpu.h +++ b/src/xenia/gpu/nop/nop_gpu.h @@ -12,22 +12,19 @@ #include - -XEDECLARECLASS1(xe, Emulator); -XEDECLARECLASS2(xe, gpu, GraphicsSystem); - +namespace xe { +class Emulator; +} // namespace xe namespace xe { namespace gpu { +class GraphicsSystem; namespace nop { - GraphicsSystem* Create(Emulator* emulator); - } // namespace nop } // namespace gpu } // namespace xe - #endif // XENIA_GPU_NOP_NOP_GPU_H_ diff --git a/src/xenia/hid/hid.h b/src/xenia/hid/hid.h index cd3fe887a..095dcfd9a 100644 --- a/src/xenia/hid/hid.h +++ b/src/xenia/hid/hid.h @@ -12,19 +12,16 @@ #include - -XEDECLARECLASS1(xe, Emulator); - +namespace xe { +class Emulator; +} // namespace xe namespace xe { namespace hid { - InputSystem* Create(Emulator* emulator); - } // namespace hid } // namespace xe - #endif // XENIA_HID_HID_H_ diff --git a/src/xenia/hid/input_system.h b/src/xenia/hid/input_system.h index f9f996469..309b1da02 100644 --- a/src/xenia/hid/input_system.h +++ b/src/xenia/hid/input_system.h @@ -13,11 +13,9 @@ #include #include +#include #include -XEDECLARECLASS1(xe, Emulator); -XEDECLARECLASS2(xe, cpu, Processor); - namespace xe { namespace hid { diff --git a/src/xenia/hid/nop/nop_hid.h b/src/xenia/hid/nop/nop_hid.h index 63fd1f3ac..6080d159e 100644 --- a/src/xenia/hid/nop/nop_hid.h +++ b/src/xenia/hid/nop/nop_hid.h @@ -12,11 +12,10 @@ #include -XEDECLARECLASS2(xe, hid, InputDriver); -XEDECLARECLASS2(xe, hid, InputSystem); - namespace xe { namespace hid { +class InputDriver; +class InputSystem; namespace nop { InputDriver* Create(InputSystem* input_system); diff --git a/src/xenia/kernel/objects/xkernel_module.h b/src/xenia/kernel/objects/xkernel_module.h index 6b8c6980f..e2ff4c28b 100644 --- a/src/xenia/kernel/objects/xkernel_module.h +++ b/src/xenia/kernel/objects/xkernel_module.h @@ -10,11 +10,9 @@ #ifndef XENIA_KERNEL_XBOXKRNL_XKERNEL_MODULE_H_ #define XENIA_KERNEL_XBOXKRNL_XKERNEL_MODULE_H_ +#include #include -XEDECLARECLASS1(xe, Emulator); -XEDECLARECLASS1(xe, ExportResolver); - namespace xe { namespace kernel { diff --git a/src/xenia/kernel/objects/xthread.h b/src/xenia/kernel/objects/xthread.h index 3d7e9da22..1f676ecba 100644 --- a/src/xenia/kernel/objects/xthread.h +++ b/src/xenia/kernel/objects/xthread.h @@ -14,11 +14,10 @@ #include #include +#include #include #include -XEDECLARECLASS2(xe, cpu, XenonThreadState); - namespace xe { namespace kernel { diff --git a/src/xenia/types.h b/src/xenia/types.h index 0fe6f7661..ad208a60d 100644 --- a/src/xenia/types.h +++ b/src/xenia/types.h @@ -10,20 +10,34 @@ #ifndef XENIA_TYPES_H_ #define XENIA_TYPES_H_ -#define XEDECLARECLASS1(ns1, name) \ - namespace ns1 { class name; } -#define XEDECLARECLASS2(ns1, ns2, name) \ - namespace ns1 { namespace ns2 { \ - class name; \ - } } - -#define XEFAIL() goto XECLEANUP -#define XEEXPECT(expr) if (!(expr) ) { goto XECLEANUP; } -#define XEEXPECTTRUE(expr) if (!(expr) ) { goto XECLEANUP; } -#define XEEXPECTFALSE(expr) if ( (expr) ) { goto XECLEANUP; } -#define XEEXPECTZERO(expr) if ( (expr) != 0 ) { goto XECLEANUP; } -#define XEEXPECTNOTZERO(expr) if ( (expr) == 0 ) { goto XECLEANUP; } -#define XEEXPECTNULL(expr) if ( (expr) != NULL ) { goto XECLEANUP; } -#define XEEXPECTNOTNULL(expr) if ( (expr) == NULL ) { goto XECLEANUP; } +#define XEFAIL() goto XECLEANUP +#define XEEXPECT(expr) \ + if (!(expr)) { \ + goto XECLEANUP; \ + } +#define XEEXPECTTRUE(expr) \ + if (!(expr)) { \ + goto XECLEANUP; \ + } +#define XEEXPECTFALSE(expr) \ + if ((expr)) { \ + goto XECLEANUP; \ + } +#define XEEXPECTZERO(expr) \ + if ((expr) != 0) { \ + goto XECLEANUP; \ + } +#define XEEXPECTNOTZERO(expr) \ + if ((expr) == 0) { \ + goto XECLEANUP; \ + } +#define XEEXPECTNULL(expr) \ + if ((expr) != NULL) { \ + goto XECLEANUP; \ + } +#define XEEXPECTNOTNULL(expr) \ + if ((expr) == NULL) { \ + goto XECLEANUP; \ + } #endif // XENIA_TYPES_H_