1 /*
2  * This file is part of the Colobot: Gold Edition source code
3  * Copyright (C) 2001-2020, Daniel Roux, EPSITEC SA & TerranovaTeam
4  * http://epsitec.ch; http://colobot.info; http://github.com/colobot
5  *
6  * This program is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14  * See the GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program. If not, see http://gnu.org/licenses
18  */
19 
20 #include "CBot/CBotInstr/CBotExprLitNull.h"
21 
22 #include "CBot/CBotStack.h"
23 
24 #include "CBot/CBotVar/CBotVar.h"
25 
26 namespace CBot
27 {
28 
29 ////////////////////////////////////////////////////////////////////////////////
CBotExprLitNull()30 CBotExprLitNull::CBotExprLitNull()
31 {
32 }
33 
34 ////////////////////////////////////////////////////////////////////////////////
~CBotExprLitNull()35 CBotExprLitNull::~CBotExprLitNull()
36 {
37 }
38 
39 ////////////////////////////////////////////////////////////////////////////////
Execute(CBotStack * & pj)40 bool CBotExprLitNull::Execute(CBotStack* &pj)
41 {
42     CBotStack*    pile = pj->AddStack(this);
43 
44     if (pile->IfStep()) return false;
45     CBotVar*    var = CBotVar::Create("", CBotTypNullPointer);
46 
47     var->SetInit(CBotVar::InitType::DEF);         // null pointer valid
48     pile->SetVar(var);          // place on the stack
49     return pj->Return(pile);    // forwards below
50 }
51 
52 ////////////////////////////////////////////////////////////////////////////////
RestoreState(CBotStack * & pj,bool bMain)53 void CBotExprLitNull::RestoreState(CBotStack* &pj, bool bMain)
54 {
55     if (bMain) pj->RestoreStack(this);
56 }
57 
58 } // namespace CBot
59