[colobot] 124/377: Moving CBotTypResult class in its own header and source files.
Didier Raboud
odyx at moszumanska.debian.org
Wed Mar 30 13:34:06 UTC 2016
This is an automated email from the git hooks/post-receive script.
odyx pushed a commit to branch debian/master
in repository colobot.
commit 3b0561056a0247096e089464ba86b59df3438795
Author: Grunaka <dev at romainbreton.fr>
Date: Tue Nov 17 21:06:25 2015 +0100
Moving CBotTypResult class in its own header and source files.
---
src/CBot/CBotClass.h | 8 +-
src/CBot/CBotDll.h | 84 -----------------
src/CBot/CBotProgram.h | 3 +-
src/CBot/CBotTypResult.cpp | 208 +++++++++++++++++++++++++++++++++++++++++++
src/CBot/CBotTypResult.h | 112 +++++++++++++++++++++++
src/CBot/CBotUtils.h | 1 +
src/CBot/CBotVar/CBotVar.cpp | 178 ------------------------------------
src/CBot/CMakeLists.txt | 1 +
src/script/scriptfunc.h | 1 +
9 files changed, 331 insertions(+), 265 deletions(-)
diff --git a/src/CBot/CBotClass.h b/src/CBot/CBotClass.h
index fe38546..b776fb5 100644
--- a/src/CBot/CBotClass.h
+++ b/src/CBot/CBotClass.h
@@ -22,14 +22,18 @@
// Modules inlcude
#include "CBotDll.h"
-#include "CBotProgram.h"
-
#include "CBotDefines.h"
+#include "CBotTypResult.h"
+
+#include "CBotString.h"
+
// Local include
// Global include
+class CBotProgram;
+
/*!
* \brief The CBotClass class Class to define new classes in the language CBOT
* for example to define the class CPoint (x, y).
diff --git a/src/CBot/CBotDll.h b/src/CBot/CBotDll.h
index 40e4931..fd5939d 100644
--- a/src/CBot/CBotDll.h
+++ b/src/CBot/CBotDll.h
@@ -69,90 +69,6 @@ class CBotCStack; // stack
#define OBJECTCREATED (reinterpret_cast<void*>(-2))
-/** \brief CBotTypResult class to define the complete type of a result*/
-class CBotTypResult
-{
-public:
- /**
- * \brief CBotTypResult constructor for simple types (CBotTypInt to CBotTypString)
- * \param type type of created result, see CBotType
- */
- CBotTypResult(int type);
- // for simple types (CBotTypInt à CBotTypString)
-
-
- CBotTypResult(int type, const char* name);
- // for pointer types and intrinsic classes
-
- CBotTypResult(int type, CBotClass* pClass);
- // for the instance of a class
-
- CBotTypResult(int type, CBotTypResult elem);
- // for arrays of variables
-
- CBotTypResult(const CBotTypResult& typ);
- // for assignments
-
- CBotTypResult();
- // for default
-
- ~CBotTypResult();
-
- int GetType(int mode = 0) const;
- // returns type CBotType* as a result
-
- void SetType(int n);
- // modifies a type
-
- CBotClass* GetClass() const;
- // makes the pointer to the class (for CBotTypClass, CBotTypPointer)
-
- int GetLimite() const;
- // returns limit size of table (CBotTypArray)
-
- void SetLimite(int n);
- // set limit to the table
-
- void SetArray(int* max );
- // set limits for a list of dimensions (arrays of arrays)
-
- CBotTypResult& GetTypElem() const;
- // returns type of array elements (CBotTypArray)
- // rend le type des éléments du tableau (CBotTypArray)
-
- bool Compare(const CBotTypResult& typ) const;
- // compares whether the types are compatible
- bool Eq(int type) const;
- // compare type
-
- CBotTypResult& operator=(const CBotTypResult& src);
- // copy a complete type in another
-
-private:
- int m_type;
- CBotTypResult* m_pNext; // for the types of type
- CBotClass* m_pClass; // for the derivatives of class
- int m_limite; // limits of tables
- friend class CBotVarClass;
- friend class CBotVarPointer;
-};
-
-/*
-// to define a result as output, using for example
-
- // to return a simple Float
- return CBotTypResult( CBotTypFloat );
-
-
- // to return a string array
- return CBotTypResult( CBotTypArray, CBotTypResult( CBotTypString ) );
-
- // to return un array of array of "point" class
- CBotTypResult typPoint( CBotTypIntrinsic, "point" );
- CBotTypResult arrPoint( CBotTypArray, typPoint );
- return CBotTypResult( CBotTypArray, arrPoint );
-*/
-
////////////////////////////////////////////////////////////////////////
// Error Handling of compilation and execution
diff --git a/src/CBot/CBotProgram.h b/src/CBot/CBotProgram.h
index bef08a8..f13a1af 100644
--- a/src/CBot/CBotProgram.h
+++ b/src/CBot/CBotProgram.h
@@ -20,13 +20,14 @@
#pragma once
// Modules inlcude
+#include "CBotTypResult.h"
+#include "CBotString.h"
#include "CBotStringArray.h"
// Local include
// Global include
-
/*!
* \brief The CBotProgram class Main class managing CBot program.
*/
diff --git a/src/CBot/CBotTypResult.cpp b/src/CBot/CBotTypResult.cpp
new file mode 100644
index 0000000..0ba8ff5
--- /dev/null
+++ b/src/CBot/CBotTypResult.cpp
@@ -0,0 +1,208 @@
+/*
+ * This file is part of the Colobot: Gold Edition source code
+ * Copyright (C) 2001-2015, Daniel Roux, EPSITEC SA & TerranovaTeam
+ * http://epsitec.ch; http://colobot.info; http://github.com/colobot
+ *
+ * This program 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.
+ *
+ * This program 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://gnu.org/licenses
+ */
+
+// Modules inlcude
+#include "CBotTypResult.h"
+
+#include "CBotEnums.h"
+
+#include "CBotClass.h"
+
+// Local include
+
+// Global include
+
+
+
+///////////////////////////////////////////////////////
+// management of results types
+
+////////////////////////////////////////////////////////////////////////////////
+CBotTypResult::CBotTypResult(int type)
+{
+ m_type = type;
+ m_pNext = nullptr;
+ m_pClass = nullptr;
+ m_limite = -1;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+CBotTypResult::CBotTypResult(int type, const char* name)
+{
+ m_type = type;
+ m_pNext = nullptr;
+ m_pClass = nullptr;
+ m_limite = -1;
+
+ if ( type == CBotTypPointer ||
+ type == CBotTypClass ||
+ type == CBotTypIntrinsic )
+ {
+ m_pClass = CBotClass::Find(name);
+ if ( m_pClass && m_pClass->IsIntrinsic() ) m_type = CBotTypIntrinsic;
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+CBotTypResult::CBotTypResult(int type, CBotClass* pClass)
+{
+ m_type = type;
+ m_pNext = nullptr;
+ m_pClass = pClass;
+ m_limite = -1;
+
+ if ( m_pClass && m_pClass->IsIntrinsic() ) m_type = CBotTypIntrinsic;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+CBotTypResult::CBotTypResult(int type, CBotTypResult elem)
+{
+ m_type = type;
+ m_pNext = nullptr;
+ m_pClass = nullptr;
+ m_limite = -1;
+
+ if ( type == CBotTypArrayPointer ||
+ type == CBotTypArrayBody )
+ m_pNext = new CBotTypResult( elem );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+CBotTypResult::CBotTypResult(const CBotTypResult& typ)
+{
+ m_type = typ.m_type;
+ m_pClass = typ.m_pClass;
+ m_pNext = nullptr;
+ m_limite = typ.m_limite;
+
+ if ( typ.m_pNext )
+ m_pNext = new CBotTypResult( *typ.m_pNext );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+CBotTypResult::CBotTypResult()
+{
+ m_type = 0;
+ m_limite = -1;
+ m_pNext = nullptr;
+ m_pClass = nullptr;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+CBotTypResult::~CBotTypResult()
+{
+ delete m_pNext;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+int CBotTypResult::GetType(int mode) const
+{
+#ifdef _DEBUG
+ if ( m_type == CBotTypPointer ||
+ m_type == CBotTypClass ||
+ m_type == CBotTypIntrinsic )
+
+ if ( m_pClass == nullptr ) assert(0);
+
+
+ if ( m_type == CBotTypArrayPointer )
+ if ( m_pNext == nullptr ) assert(0);
+#endif
+ if ( mode == 3 && m_type == CBotTypNullPointer ) return CBotTypPointer;
+ return m_type;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void CBotTypResult::SetType(int n)
+{
+ m_type = n;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+CBotClass* CBotTypResult::GetClass() const
+{
+ return m_pClass;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+CBotTypResult& CBotTypResult::GetTypElem() const
+{
+ return *m_pNext;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+int CBotTypResult::GetLimite() const
+{
+ return m_limite;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void CBotTypResult::SetLimite(int n)
+{
+ m_limite = n;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void CBotTypResult::SetArray( int* max )
+{
+ m_limite = *max;
+ if (m_limite < 1) m_limite = -1;
+
+ if ( m_pNext != nullptr ) // last dimension?
+ {
+ m_pNext->SetArray( max+1 );
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+bool CBotTypResult::Compare(const CBotTypResult& typ) const
+{
+ if ( m_type != typ.m_type ) return false;
+
+ if ( m_type == CBotTypArrayPointer ) return m_pNext->Compare(*typ.m_pNext);
+
+ if ( m_type == CBotTypPointer ||
+ m_type == CBotTypClass ||
+ m_type == CBotTypIntrinsic )
+ {
+ return m_pClass == typ.m_pClass;
+ }
+
+ return true;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+bool CBotTypResult::Eq(int type) const
+{
+ return m_type == type;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+CBotTypResult& CBotTypResult::operator=(const CBotTypResult& src)
+{
+ m_type = src.m_type;
+ m_limite = src.m_limite;
+ m_pClass = src.m_pClass;
+ m_pNext = nullptr;
+ if ( src.m_pNext != nullptr )
+ {
+ m_pNext = new CBotTypResult(*src.m_pNext);
+ }
+ return *this;
+}
diff --git a/src/CBot/CBotTypResult.h b/src/CBot/CBotTypResult.h
new file mode 100644
index 0000000..97ac52a
--- /dev/null
+++ b/src/CBot/CBotTypResult.h
@@ -0,0 +1,112 @@
+/*
+ * This file is part of the Colobot: Gold Edition source code
+ * Copyright (C) 2001-2015, Daniel Roux, EPSITEC SA & TerranovaTeam
+ * http://epsitec.ch; http://colobot.info; http://github.com/colobot
+ *
+ * This program 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.
+ *
+ * This program 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://gnu.org/licenses
+ */
+
+#pragma once
+
+// Modules inlcude
+
+// Local include
+
+// Global include
+
+class CBotClass;
+
+/*
+// to define a result as output, using for example
+
+ // to return a simple Float
+ return CBotTypResult( CBotTypFloat );
+
+
+ // to return a string array
+ return CBotTypResult( CBotTypArray, CBotTypResult( CBotTypString ) );
+
+ // to return un array of array of "point" class
+ CBotTypResult typPoint( CBotTypIntrinsic, "point" );
+ CBotTypResult arrPoint( CBotTypArray, typPoint );
+ return CBotTypResult( CBotTypArray, arrPoint );
+*/
+
+/** \brief CBotTypResult class to define the complete type of a result*/
+class CBotTypResult
+{
+public:
+ /**
+ * \brief CBotTypResult constructor for simple types (CBotTypInt to CBotTypString)
+ * \param type type of created result, see CBotType
+ */
+ CBotTypResult(int type);
+ // for simple types (CBotTypInt à CBotTypString)
+
+
+ CBotTypResult(int type, const char* name);
+ // for pointer types and intrinsic classes
+
+ CBotTypResult(int type, CBotClass* pClass);
+ // for the instance of a class
+
+ CBotTypResult(int type, CBotTypResult elem);
+ // for arrays of variables
+
+ CBotTypResult(const CBotTypResult& typ);
+ // for assignments
+
+ CBotTypResult();
+ // for default
+
+ ~CBotTypResult();
+
+ int GetType(int mode = 0) const;
+ // returns type CBotType* as a result
+
+ void SetType(int n);
+ // modifies a type
+
+ CBotClass* GetClass() const;
+ // makes the pointer to the class (for CBotTypClass, CBotTypPointer)
+
+ int GetLimite() const;
+ // returns limit size of table (CBotTypArray)
+
+ void SetLimite(int n);
+ // set limit to the table
+
+ void SetArray(int* max );
+ // set limits for a list of dimensions (arrays of arrays)
+
+ CBotTypResult& GetTypElem() const;
+ // returns type of array elements (CBotTypArray)
+ // rend le type des éléments du tableau (CBotTypArray)
+
+ bool Compare(const CBotTypResult& typ) const;
+ // compares whether the types are compatible
+ bool Eq(int type) const;
+ // compare type
+
+ CBotTypResult& operator=(const CBotTypResult& src);
+ // copy a complete type in another
+
+private:
+ int m_type;
+ CBotTypResult* m_pNext; // for the types of type
+ CBotClass* m_pClass; // for the derivatives of class
+ int m_limite; // limits of tables
+ friend class CBotVarClass;
+ friend class CBotVarPointer;
+};
diff --git a/src/CBot/CBotUtils.h b/src/CBot/CBotUtils.h
index e14b474..739800e 100644
--- a/src/CBot/CBotUtils.h
+++ b/src/CBot/CBotUtils.h
@@ -23,6 +23,7 @@
#include "CBotDll.h"
#include "CBotString.h"
+#include "CBotTypResult.h"
// Local include
diff --git a/src/CBot/CBotVar/CBotVar.cpp b/src/CBot/CBotVar/CBotVar.cpp
index e2c1fe7..e5ce073 100644
--- a/src/CBot/CBotVar/CBotVar.cpp
+++ b/src/CBot/CBotVar/CBotVar.cpp
@@ -759,181 +759,3 @@ CBotClass* CBotVar::GetClass()
assert(0);
return nullptr;
}
-
-///////////////////////////////////////////////////////
-// management of results types
-
-////////////////////////////////////////////////////////////////////////////////
-CBotTypResult::CBotTypResult(int type)
-{
- m_type = type;
- m_pNext = nullptr;
- m_pClass = nullptr;
- m_limite = -1;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-CBotTypResult::CBotTypResult(int type, const char* name)
-{
- m_type = type;
- m_pNext = nullptr;
- m_pClass = nullptr;
- m_limite = -1;
-
- if ( type == CBotTypPointer ||
- type == CBotTypClass ||
- type == CBotTypIntrinsic )
- {
- m_pClass = CBotClass::Find(name);
- if ( m_pClass && m_pClass->IsIntrinsic() ) m_type = CBotTypIntrinsic;
- }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-CBotTypResult::CBotTypResult(int type, CBotClass* pClass)
-{
- m_type = type;
- m_pNext = nullptr;
- m_pClass = pClass;
- m_limite = -1;
-
- if ( m_pClass && m_pClass->IsIntrinsic() ) m_type = CBotTypIntrinsic;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-CBotTypResult::CBotTypResult(int type, CBotTypResult elem)
-{
- m_type = type;
- m_pNext = nullptr;
- m_pClass = nullptr;
- m_limite = -1;
-
- if ( type == CBotTypArrayPointer ||
- type == CBotTypArrayBody )
- m_pNext = new CBotTypResult( elem );
-}
-
-////////////////////////////////////////////////////////////////////////////////
-CBotTypResult::CBotTypResult(const CBotTypResult& typ)
-{
- m_type = typ.m_type;
- m_pClass = typ.m_pClass;
- m_pNext = nullptr;
- m_limite = typ.m_limite;
-
- if ( typ.m_pNext )
- m_pNext = new CBotTypResult( *typ.m_pNext );
-}
-
-////////////////////////////////////////////////////////////////////////////////
-CBotTypResult::CBotTypResult()
-{
- m_type = 0;
- m_limite = -1;
- m_pNext = nullptr;
- m_pClass = nullptr;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-CBotTypResult::~CBotTypResult()
-{
- delete m_pNext;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-int CBotTypResult::GetType(int mode) const
-{
-#ifdef _DEBUG
- if ( m_type == CBotTypPointer ||
- m_type == CBotTypClass ||
- m_type == CBotTypIntrinsic )
-
- if ( m_pClass == nullptr ) assert(0);
-
-
- if ( m_type == CBotTypArrayPointer )
- if ( m_pNext == nullptr ) assert(0);
-#endif
- if ( mode == 3 && m_type == CBotTypNullPointer ) return CBotTypPointer;
- return m_type;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void CBotTypResult::SetType(int n)
-{
- m_type = n;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-CBotClass* CBotTypResult::GetClass() const
-{
- return m_pClass;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-CBotTypResult& CBotTypResult::GetTypElem() const
-{
- return *m_pNext;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-int CBotTypResult::GetLimite() const
-{
- return m_limite;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void CBotTypResult::SetLimite(int n)
-{
- m_limite = n;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void CBotTypResult::SetArray( int* max )
-{
- m_limite = *max;
- if (m_limite < 1) m_limite = -1;
-
- if ( m_pNext != nullptr ) // last dimension?
- {
- m_pNext->SetArray( max+1 );
- }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-bool CBotTypResult::Compare(const CBotTypResult& typ) const
-{
- if ( m_type != typ.m_type ) return false;
-
- if ( m_type == CBotTypArrayPointer ) return m_pNext->Compare(*typ.m_pNext);
-
- if ( m_type == CBotTypPointer ||
- m_type == CBotTypClass ||
- m_type == CBotTypIntrinsic )
- {
- return m_pClass == typ.m_pClass;
- }
-
- return true;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-bool CBotTypResult::Eq(int type) const
-{
- return m_type == type;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-CBotTypResult& CBotTypResult::operator=(const CBotTypResult& src)
-{
- m_type = src.m_type;
- m_limite = src.m_limite;
- m_pClass = src.m_pClass;
- m_pNext = nullptr;
- if ( src.m_pNext != nullptr )
- {
- m_pNext = new CBotTypResult(*src.m_pNext);
- }
- return *this;
-}
-
diff --git a/src/CBot/CMakeLists.txt b/src/CBot/CMakeLists.txt
index 28c7320..d8bda9f 100644
--- a/src/CBot/CMakeLists.txt
+++ b/src/CBot/CMakeLists.txt
@@ -11,6 +11,7 @@ set(SOURCES
CBotDefParam.cpp
CBotCallMethode.cpp
CBotStringArray.cpp
+ CBotTypResult.cpp
CBotInstr/CBotInstr.cpp
CBotInstr/CBotWhile.cpp
CBotInstr/CBotDo.cpp
diff --git a/src/script/scriptfunc.h b/src/script/scriptfunc.h
index 9428879..07b21cb 100644
--- a/src/script/scriptfunc.h
+++ b/src/script/scriptfunc.h
@@ -25,6 +25,7 @@
#pragma once
#include "CBot/CBotDll.h"
+#include "CBot/CBotTypResult.h"
#include "common/error.h"
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/colobot.git
More information about the Pkg-games-commits
mailing list