20#ifndef _INTERFACE_CHANGE_FIELD_H_
21#define _INTERFACE_CHANGE_FIELD_H_
23#include <core/exceptions/software.h>
35template <
class FieldT,
class DataT>
39 bool rv = field != value;
49template <
class FieldT, std::
size_t Size>
53 bool change = ::strncmp(field, value, Size);
54 ::strncpy(field, value, Size - 1);
64template <
class FieldT, std::
size_t Size,
class DataT>
65typename std::enable_if<!std::is_same<FieldT, char>::value,
bool>::type
68 bool change = ::memcmp(field, value, Size);
69 ::memcpy(field, value,
sizeof(FieldT) * Size);
79template <
class FieldT, std::
size_t Size,
class DataT>
81change_field(FieldT (&field)[Size],
unsigned int index,
const DataT &value)
84 throw Exception(
"Index value %u is out of bounds (0..%u)", index, Size - 1);
85 bool change = field[index] != value;
Base class for exceptions in Fawkes.
Fawkes library namespace.
bool change_field(FieldT &field, const DataT &value)
Set a field and return whether it changed.