EEPROMextent
Arduino EEPROM library
EEPROM_ItemList.hpp
1 //-------------------------------------------------------------------
2 #ifndef __EEPROM_ItemList_H__
3 #define __EEPROM_ItemList_H__
4 //-------------------------------------------------------------------
5 
6 #define EEPROMLIST_EMPTY_OWNER 255
7 
8 #include "EEPROMextent.h"
9 
31 {
32 private:
33  int StartListPos;
34  byte ItemSize;
35  int ListSize;
36 
37 public:
39  EEPROM_ItemListClass() { this->ItemSize = 0; this->ListSize = 0; this->StartListPos = 0; }
40 
46  void begin(int inStartListPos, byte inItemSize, int inListSize) { this->StartListPos = inStartListPos; this->ItemSize = inItemSize; this->ListSize = inListSize; }
47 
51  void FreeItem(byte inSlotNumber);
55  void FreeOwnedItems(byte inOwnerSlotNumber);
56 
61  inline int GetItemPos(byte inSlotNumber)
62  {
63  return GetItemPosRaw(inSlotNumber) + 2;
64  }
65 
70  inline int GetItemPosRaw(byte inSlotNumber)
71  {
72  return (inSlotNumber * ItemSize) + StartListPos;
73  }
74 
79  inline byte GetSlotFromPos(int inPosition)
80  {
81  return (inPosition - StartListPos) / ItemSize;
82  }
83 
88  inline byte GetItemType(byte inSlotNumber)
89  {
90  return EEPROMextent.read(GetItemPosRaw(inSlotNumber));
91  }
92 
97  inline byte GetItemOwner(byte inSlotNumber)
98  {
99  return EEPROMextent.read(GetItemPosRaw(inSlotNumber) + 1);
100  }
101 
108  int SaveItemPrefix(byte inSlotNumber, byte inType, byte inOwner);
109 
113  byte GetFirstFreeSlot();
114 
121  byte FindItem(byte inType, byte inStartSlotNumber = 0, byte inOwnerId = 255);
122 
127  byte CountItems(byte inType);
128 
133  byte CountOwnedItems(byte inOwnerId);
134 
137  void clear() const;
138 };
139 
140 //-------------------------------------------------------------------
141 #endif
142 //-------------------------------------------------------------------
void clear() const
Definition: EEPROM_ItemList.cpp:103
byte CountOwnedItems(byte inOwnerId)
Definition: EEPROM_ItemList.cpp:69
int SaveItemPrefix(byte inSlotNumber, byte inType, byte inOwner)
Definition: EEPROM_ItemList.cpp:95
Definition: EEPROM_ItemList.hpp:30
byte GetItemType(byte inSlotNumber)
Definition: EEPROM_ItemList.hpp:88
byte GetItemOwner(byte inSlotNumber)
Definition: EEPROM_ItemList.hpp:97
EEPROM_ItemListClass()
Definition: EEPROM_ItemList.hpp:39
byte FindItem(byte inType, byte inStartSlotNumber = 0, byte inOwnerId = 255)
Definition: EEPROM_ItemList.cpp:43
void begin(int inStartListPos, byte inItemSize, int inListSize)
Definition: EEPROM_ItemList.hpp:46
void FreeOwnedItems(byte inOwnerSlotNumber)
Definition: EEPROM_ItemList.cpp:25
void FreeItem(byte inSlotNumber)
Definition: EEPROM_ItemList.cpp:18
byte CountItems(byte inType)
Definition: EEPROM_ItemList.cpp:58
byte GetFirstFreeSlot()
Definition: EEPROM_ItemList.cpp:80
int GetItemPos(byte inSlotNumber)
Definition: EEPROM_ItemList.hpp:61
byte GetSlotFromPos(int inPosition)
Definition: EEPROM_ItemList.hpp:79
int GetItemPosRaw(byte inSlotNumber)
Definition: EEPROM_ItemList.hpp:70