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