39 #define DECLARE_FSTR_ARRAY(name, ElementType) DECLARE_FSTR_OBJECT(name, FSTR::Array<ElementType>)
48 #define DEFINE_FSTR_ARRAY(name, ElementType, ...) \
49 static DEFINE_FSTR_ARRAY_DATA(FSTR_DATA_NAME(name), ElementType, __VA_ARGS__); \
55 #define DEFINE_FSTR_ARRAY_LOCAL(name, ElementType, ...) \
56 static DEFINE_FSTR_ARRAY_DATA(FSTR_DATA_NAME(name), ElementType, __VA_ARGS__); \
57 DEFINE_FSTR_REF_LOCAL(name)
65 #define DEFINE_FSTR_ARRAY_DATA(name, ElementType, ...) \
66 DEFINE_FSTR_ARRAY_DATA_SIZED(name, ElementType, FSTR_VA_NARGS(ElementType, __VA_ARGS__), __VA_ARGS__)
75 #define DEFINE_FSTR_ARRAY_DATA_SIZED(name, ElementType, size, ...) \
76 constexpr const struct { \
77 FSTR::Array<ElementType> object; \
78 ElementType data[size]; \
79 } FSTR_PACKED name PROGMEM = {{sizeof(ElementType) * size}, {__VA_ARGS__}}; \
80 FSTR_CHECK_STRUCT(name);
91 #define LOAD_FSTR_ARRAY(name, array) \
92 decltype((array)[0]) name[(array).size()] FSTR_ALIGNED; \
93 memcpy_aligned(name, (array).data(), (array).size());
99 #define FSTR_ARRAY_ARRAY(name, ElementType, ...) \
100 static DEFINE_FSTR_ARRAY_DATA(FSTR_DATA_NAME(name), ElementType, __VA_ARGS__); \
101 LOAD_FSTR_ARRAY(name, FSTR_DATA_NAME(name).object)
110 #define IMPORT_FSTR_ARRAY(name, ElementType, file) IMPORT_FSTR_OBJECT(name, FSTR::Array<ElementType>, file)
115 #define IMPORT_FSTR_ARRAY_LOCAL(name, ElementType, file) IMPORT_FSTR_OBJECT_LOCAL(name, FSTR::Array<ElementType>, file)
123 template <
typename ElementType>
class Array :
public Object<Array<ElementType>, ElementType>
126 static_assert(!std::is_pointer<ElementType>::value,
"Pointer types not supported by Array - use Vector");
Class template to provide a simple way to print the contents of an array.
Definition: ArrayPrinter.hpp:40
Class to access an array of integral values stored in flash.
Definition: Array.hpp:124
ArrayPrinter< Array > printer() const
Returns a printer object for this array.
Definition: Array.hpp:134
size_t printTo(Print &p) const
Definition: Array.hpp:139
Base class template for all types.
Definition: Object.hpp:101
Provides formatted output to stream.
Definition: Print.h:37
#define FSTR_PACKED
Definition: config.hpp:31
Definition: Array.hpp:118