arkhaix / emunisce

GNU General Public License v2.0
0 stars 0 forks source link

Remove the Platform layer #48

Closed arkhaix closed 4 years ago

arkhaix commented 4 years ago

41 and #43 eliminated all the low-level platform specific code. Everything that's left is on the application layer, so there's no need to expose it to the machine layer at all.

I have some reservations about the primitive types (u8, u16, etc) since those need to be communicated across the machine layer, but I think I can either have the machine layer define them itself, or just use the cstdint types directly. I'm irrationally in favor of defining them in the machine layer just because the cstdint versions are so verbose (uint8_t vs u8), but I might convince myself otherwise in the future.

arkhaix commented 4 years ago

One compromise might be to leave a Platform project in place, but remove the platform-specific overrides. This would provide a central place to define those low level types and support the EMUNISCE_COMPILER_X and EMUNISCE_PLATFORM_X defines (OpenGLRenderer still needs them at the moment).

arkhaix commented 4 years ago

For now I've gone with the option of removing LinuxPlatform and WindowsPlatform while leaving the base Platform project behind for build #defines and primitive typedefs.