#include #include #include // for type definitions template int EEPROM_writeStruct(int address, const T& value) { const byte* p = (const byte*)(const void*)&value; unsigned int i; for (i = 0; i < sizeof(value); i++) eeprom_write_byte((unsigned char *)address++, *p++); return i; } template int EEPROM_readStruct(int address, T& value) { byte* p = (byte*)(void*)&value; unsigned int i; for (i = 0; i < sizeof(value); i++) *p++ = eeprom_read_byte((unsigned char *)address++); return i; }