/* ------------------------------------------- Copyright (C) 2024, MediaSwirl, all rights reserved. ------------------------------------------- */ #pragma once #include #include #include #include namespace Kernel { template class IOArray final { public: IOArray() = delete; IOArray(nullPtr) = delete; explicit IOArray(Array& ports) : fPorts(ports) { } ~IOArray() { } IOArray& operator=(const IOArray&) = default; IOArray(const IOArray&) = default; operator bool() { return !fPorts.Empty(); } public: template T In(SizeT index); template void Out(SizeT index, T value); private: Array fPorts; }; using IOArray16 = IOArray<16>; } // namespace Kernel #ifdef __x86_64__ #include #else #error Please provide platform specific code for the I/O #endif // ifdef __x86_64__