/*
Fire is a UCI chess playing engine by Kranium (Norman Schmidt)
Fire is based on Ippolit source code: http://ippolit.wikispaces.com/
authors: Yakov Petrovich Golyadkin, Igor Igorovich Igoronov,
and Roberto Pescatore copyright: (C) 2009 Yakov Petrovich Golyadkin
date: 92th and 93rd year from Revolution
owners: PUBLICDOMAIN (workers)
dedication: To Vladimir Ilyich
"This Russian chess ship is a truly glorious achievement of the
 October Revolution and Decembrists movement!"

Fire is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

Fire is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.
*/

static INLINE void MakeNull(typePos *Position)
    {
    Position->nodes++;
    Position->Dyn->SavedFlags = Position->Dyn->flags;
    memcpy(Position->Dyn + 1, Position->Dyn, 64);
    Position->Dyn++;
    Position->Dyn->Hash ^= HashWTM;
    Position->wtm ^= 1;
    Position->height++;
    Position->Dyn->reversible++;
    if (Position->Dyn->ep)
        {
        Position->Dyn->Hash ^= HashEP[Position->Dyn->ep & 7];
        Position->Dyn->ep = 0;
        }
    Position->Dyn->Value = -((Position->Dyn - 1)->Value + TempoValue);
    Position->Dyn->PositionalValue = (Position->Dyn - 1)->PositionalValue;
    Position->Dyn->lazy = (Position->Dyn - 1)->lazy;
    Position->Dyn->flags &= ~3;
    Position->Dyn->move = 0;
    Position->Stack[++(Position->StackHeight)] = Position->Dyn->Hash;
    }
static INLINE void UndoNull(typePos *Position)
    {
    Position->Dyn--;
    Position->StackHeight--;
    Position->height--;
    Position->wtm ^= 1;
    Position->Dyn->flags = Position->Dyn->SavedFlags;
    }
