/// <summary> /// Restore memory storage position /// </summary> /// <param name="storage"></param> /// <param name="pos"></param> public static void RestoreMemStoragePos(MemStorage* storage, MemStoragePos* pos) { if (storage == null || pos == null) return; if (pos->FreeSpace > storage->BlockSize) throw new Exception("bad size"); storage->Top = pos->Top; storage->FreeSpace = pos->FreeSpace; if (storage->Top == null) { storage->Top = storage->Bottom; storage->FreeSpace = (storage->Top != null) ? storage->BlockSize - sizeof(MemBlock) : 0; } }
/* Remember memory storage position: */ public static void SaveMemStoragePos(MemStorage* storage, MemStoragePos* pos) { if (storage == null || pos == null) return; pos->Top = storage->Top; pos->FreeSpace = storage->FreeSpace; }