|
|
@@ -10,9 +10,11 @@
|
|
|
|
|
|
namespace ARDUINOJSON_NAMESPACE {
|
|
|
|
|
|
-inline bool isAligned(void *ptr) {
|
|
|
+#if ARDUINOJSON_ENABLE_ALIGNMENT
|
|
|
+
|
|
|
+inline bool isAligned(size_t value) {
|
|
|
const size_t mask = sizeof(void *) - 1;
|
|
|
- size_t addr = reinterpret_cast<size_t>(ptr);
|
|
|
+ size_t addr = value;
|
|
|
return (addr & mask) == 0;
|
|
|
}
|
|
|
|
|
|
@@ -21,16 +23,38 @@ inline size_t addPadding(size_t bytes) {
|
|
|
return (bytes + mask) & ~mask;
|
|
|
}
|
|
|
|
|
|
-template <typename T>
|
|
|
-inline T *addPadding(T *p) {
|
|
|
- size_t address = addPadding(reinterpret_cast<size_t>(p));
|
|
|
- return reinterpret_cast<T *>(address);
|
|
|
-}
|
|
|
-
|
|
|
template <size_t bytes>
|
|
|
struct AddPadding {
|
|
|
static const size_t mask = sizeof(void *) - 1;
|
|
|
static const size_t value = (bytes + mask) & ~mask;
|
|
|
};
|
|
|
|
|
|
+#else
|
|
|
+
|
|
|
+inline bool isAligned(size_t) {
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
+inline size_t addPadding(size_t bytes) {
|
|
|
+ return bytes;
|
|
|
+}
|
|
|
+
|
|
|
+template <size_t bytes>
|
|
|
+struct AddPadding {
|
|
|
+ static const size_t value = bytes;
|
|
|
+};
|
|
|
+
|
|
|
+#endif
|
|
|
+
|
|
|
+template <typename T>
|
|
|
+inline bool isAligned(T *ptr) {
|
|
|
+ return isAligned(reinterpret_cast<size_t>(ptr));
|
|
|
+}
|
|
|
+
|
|
|
+template <typename T>
|
|
|
+inline T *addPadding(T *p) {
|
|
|
+ size_t address = addPadding(reinterpret_cast<size_t>(p));
|
|
|
+ return reinterpret_cast<T *>(address);
|
|
|
+}
|
|
|
+
|
|
|
} // namespace ARDUINOJSON_NAMESPACE
|