diff --git a/src/runtime/include/iec_array.hpp b/src/runtime/include/iec_array.hpp index ddee3cb..af28cf4 100644 --- a/src/runtime/include/iec_array.hpp +++ b/src/runtime/include/iec_array.hpp @@ -12,8 +12,9 @@ #pragma once +#include "iec_platform.hpp" + #include -#include #include #include "iec_var.hpp" diff --git a/src/runtime/include/iec_char.hpp b/src/runtime/include/iec_char.hpp index cf26bb0..9b47369 100644 --- a/src/runtime/include/iec_char.hpp +++ b/src/runtime/include/iec_char.hpp @@ -12,7 +12,8 @@ #pragma once -#include +#include "iec_platform.hpp" + #include "iec_types.hpp" namespace strucpp { diff --git a/src/runtime/include/iec_date.hpp b/src/runtime/include/iec_date.hpp index 9e3024d..70a68ef 100644 --- a/src/runtime/include/iec_date.hpp +++ b/src/runtime/include/iec_date.hpp @@ -12,7 +12,8 @@ #pragma once -#include +#include "iec_platform.hpp" + #include "iec_types.hpp" namespace strucpp { diff --git a/src/runtime/include/iec_dt.hpp b/src/runtime/include/iec_dt.hpp index 199c416..76e0fb0 100644 --- a/src/runtime/include/iec_dt.hpp +++ b/src/runtime/include/iec_dt.hpp @@ -12,7 +12,8 @@ #pragma once -#include +#include "iec_platform.hpp" + #include "iec_types.hpp" #include "iec_date.hpp" #include "iec_tod.hpp" diff --git a/src/runtime/include/iec_enum.hpp b/src/runtime/include/iec_enum.hpp index c51354e..0e8a91d 100644 --- a/src/runtime/include/iec_enum.hpp +++ b/src/runtime/include/iec_enum.hpp @@ -12,7 +12,8 @@ #pragma once -#include +#include "iec_platform.hpp" + #include #include #include "iec_var.hpp" diff --git a/src/runtime/include/iec_located.hpp b/src/runtime/include/iec_located.hpp index 842d628..c194055 100644 --- a/src/runtime/include/iec_located.hpp +++ b/src/runtime/include/iec_located.hpp @@ -15,7 +15,8 @@ #pragma once -#include +#include "iec_platform.hpp" + #include namespace strucpp { diff --git a/src/runtime/include/iec_memory.hpp b/src/runtime/include/iec_memory.hpp index caea52b..907104a 100644 --- a/src/runtime/include/iec_memory.hpp +++ b/src/runtime/include/iec_memory.hpp @@ -14,8 +14,8 @@ #pragma once -#include -#include +#include "iec_platform.hpp" + #include #include "iec_ptr.hpp" diff --git a/src/runtime/include/iec_platform.hpp b/src/runtime/include/iec_platform.hpp new file mode 100644 index 0000000..9486048 --- /dev/null +++ b/src/runtime/include/iec_platform.hpp @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: GPL-3.0-or-later WITH STruCpp-runtime-exception +// Copyright (C) 2025 Autonomy / OpenPLC Project +// This file is part of the STruC++ Runtime Library and is covered by the +// STruC++ Runtime Library Exception. See COPYING.RUNTIME for details. +/** + * STruC++ Runtime - Platform Compatibility Header + * + * AVR (Arduino) toolchains don't ship C++ standard library wrappers like + * , , etc. This header provides a single compatibility + * shim that maps to the correct C headers on AVR and C++ headers elsewhere. + * + * All other runtime headers should include this instead of etc. + */ + +#pragma once + +#if defined(__AVR__) || defined(ARDUINO) + // AVR libc provides C headers only, not C++ wrappers + #include + #include + #include + #include + #include +#else + #include + #include + #include + #include + #include +#endif diff --git a/src/runtime/include/iec_pointer.hpp b/src/runtime/include/iec_pointer.hpp index 879c430..fb29ccb 100644 --- a/src/runtime/include/iec_pointer.hpp +++ b/src/runtime/include/iec_pointer.hpp @@ -45,7 +45,8 @@ #pragma once -#include +#include "iec_platform.hpp" + #include #include #include "iec_var.hpp" diff --git a/src/runtime/include/iec_ptr.hpp b/src/runtime/include/iec_ptr.hpp index f3228ad..0c78b23 100644 --- a/src/runtime/include/iec_ptr.hpp +++ b/src/runtime/include/iec_ptr.hpp @@ -21,8 +21,8 @@ #pragma once -#include -#include +#include "iec_platform.hpp" + #include namespace strucpp { diff --git a/src/runtime/include/iec_retain.hpp b/src/runtime/include/iec_retain.hpp index c8c636d..f8f98e9 100644 --- a/src/runtime/include/iec_retain.hpp +++ b/src/runtime/include/iec_retain.hpp @@ -15,8 +15,8 @@ #pragma once -#include -#include +#include "iec_platform.hpp" + namespace strucpp { diff --git a/src/runtime/include/iec_std_lib.hpp b/src/runtime/include/iec_std_lib.hpp index 7198848..64549c7 100644 --- a/src/runtime/include/iec_std_lib.hpp +++ b/src/runtime/include/iec_std_lib.hpp @@ -20,14 +20,13 @@ #pragma once +#include "iec_platform.hpp" + #include "iec_var.hpp" #include "iec_traits.hpp" #include "iec_retain.hpp" #include "iec_ptr.hpp" -#include #include -#include -#include #include namespace strucpp { diff --git a/src/runtime/include/iec_string.hpp b/src/runtime/include/iec_string.hpp index 69938cc..fb3dbe8 100644 --- a/src/runtime/include/iec_string.hpp +++ b/src/runtime/include/iec_string.hpp @@ -12,10 +12,9 @@ #pragma once -#include +#include "iec_platform.hpp" + #include -#include -#include #include #include #include "iec_types.hpp" diff --git a/src/runtime/include/iec_subrange.hpp b/src/runtime/include/iec_subrange.hpp index c784cd0..343db4e 100644 --- a/src/runtime/include/iec_subrange.hpp +++ b/src/runtime/include/iec_subrange.hpp @@ -12,7 +12,8 @@ #pragma once -#include +#include "iec_platform.hpp" + #include "iec_var.hpp" namespace strucpp { diff --git a/src/runtime/include/iec_time.hpp b/src/runtime/include/iec_time.hpp index a05ca50..5205120 100644 --- a/src/runtime/include/iec_time.hpp +++ b/src/runtime/include/iec_time.hpp @@ -12,8 +12,8 @@ #pragma once -#include -#include +#include "iec_platform.hpp" + #include "iec_types.hpp" namespace strucpp { diff --git a/src/runtime/include/iec_tod.hpp b/src/runtime/include/iec_tod.hpp index f5d6456..5e9835c 100644 --- a/src/runtime/include/iec_tod.hpp +++ b/src/runtime/include/iec_tod.hpp @@ -12,7 +12,8 @@ #pragma once -#include +#include "iec_platform.hpp" + #include "iec_types.hpp" namespace strucpp { diff --git a/src/runtime/include/iec_traits.hpp b/src/runtime/include/iec_traits.hpp index 588b338..2101350 100644 --- a/src/runtime/include/iec_traits.hpp +++ b/src/runtime/include/iec_traits.hpp @@ -12,9 +12,9 @@ #pragma once +#include "iec_platform.hpp" + #include -#include -#include #include "iec_types.hpp" namespace strucpp { diff --git a/src/runtime/include/iec_types.hpp b/src/runtime/include/iec_types.hpp index 6742652..c37a014 100644 --- a/src/runtime/include/iec_types.hpp +++ b/src/runtime/include/iec_types.hpp @@ -12,8 +12,8 @@ #pragma once -#include -#include +#include "iec_platform.hpp" + namespace strucpp { diff --git a/src/runtime/include/iec_wstring.hpp b/src/runtime/include/iec_wstring.hpp index 2af9e6c..d5ff7b0 100644 --- a/src/runtime/include/iec_wstring.hpp +++ b/src/runtime/include/iec_wstring.hpp @@ -13,8 +13,8 @@ #pragma once -#include -#include +#include "iec_platform.hpp" + #include #include "iec_types.hpp"