view Engine/NZIArray.h @ 2541:a902abdfc7f2

1. Renamed class Game to class Engine. 2. Separated game logic as state of FSM from game logic as engine. 3. Found out that many UI screen initializers were optimized away, intially they all returned newly created window as separate object like it is done in CharacterUI_Initialize.
author a.parshin
date Sun, 10 May 2015 01:29:11 +0200
parents 68cdef6879a0
children
line wrap: on
line source

#pragma once
#include <array>
#include <assert.h>


template<class _Ty,
  size_t _Size>
class NZIArray : std::array<_Ty, _Size>
{
public:
  reference ZerothIndex()
  {
    return std::array<_Ty, _Size>::operator [](0);
  }

  reference operator[](size_type _Pos)
  {	// subscript nonmutable sequence
#if _ITERATOR_DEBUG_LEVEL == 2
    assert(_Pos != 0 && "not allowed to access zeroth element");

#elif _ITERATOR_DEBUG_LEVEL == 1
    _SCL_SECURE_VALIDATE_RANGE(_Pos != 0);
#endif /* _ITERATOR_DEBUG_LEVEL */

    __analysis_assume(_Pos != 0);

    return std::array<_Ty, _Size>::operator [](_Pos);
  }

  const_reference operator[](size_type _Pos) const
  {	// subscript nonmutable sequence
#if _ITERATOR_DEBUG_LEVEL == 2
    assert(_Pos != 0 && "not allowed to access zeroth element");

#elif _ITERATOR_DEBUG_LEVEL == 1
    _SCL_SECURE_VALIDATE_RANGE(_Pos != 0);
#endif /* _ITERATOR_DEBUG_LEVEL */

    __analysis_assume(_Pos != 0);

    return std::array<_Ty, _Size>::operator [](_Pos);
  }
};