Gorgon Game Engine
Scripting.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <vector>
4 #include <string>
5 #include <set>
6 
7 #include "Types.h"
8 #include "Enum.h"
10 #include "Any.h"
11 
12 #include "Scripting/Reflection.h"
13 #include "Scripting/Data.h"
14 
15 namespace Gorgon {
16 
21  namespace Scripting {
22 
68  void init_builtin();
71 
73  inline std::ostream &operator<<(std::ostream &out, const Data &data) {
74  if(!data.IsValid()) {
75  out<<"[ INVALID ]";
76  }
77  else {
78  out<<data.GetType().ToString(data);
79  }
80 
81  return out;
82  }
83 
85  inline void Initialize() {
86  init_builtin();
87  }
88 
90  extern Library Integrals;
91  extern Library Keywords;
92  extern Library Reflection;
93 
94  extern std::set<std::string, String::CaseInsensitiveLess> KeywordNames;
95 
97  namespace Types {
98 #define DEFTYPE(name) inline const Scripting::Type &name() { static const Scripting::Type *type = Integrals.GetType(#name); return *type; }
99  DEFTYPE(Variant);
103 
105  DEFTYPE(String);
106 
108  DEFTYPE(Int);
109 
112 
114  DEFTYPE(Bool);
115 
117  DEFTYPE(Double);
118 
121 
124 
126  DEFTYPE(Unsigned);
127 
131 
132 #undef DEFTYPE
133 
134 #define DEFTYPE(name) inline const Scripting::Type &name() { static const Scripting::Type *type = Reflection.GetType(#name); return *type; }
135 
145 
146 #undef DEFTYPE
147  }
148  }
149 }
Gorgon::Scripting::Type::ToString
virtual std::string ToString(const Data &) const =0
Converts a data of this type to string.
Collection.h
contains collection, a vector of references.
Reflection.h
Gorgon::Scripting::operator<<
std::ostream & operator<<(std::ostream &out, const Data &data)
This function parses the code and returns any syntax errors.
Definition: Scripting.h:73
Gorgon::Scripting::Data
Data describes a piece of data.
Definition: Data.h:22
Enum.h
contains Enum class that allows C++ enums to have string capabilities.
Gorgon::Float
float Float
Represents floating point data type.
Definition: Types.h:16
Gorgon::Scripting::Data::GetType
const Type & GetType() const
Returns the type of the data.
Definition: Data.h:173
Gorgon::Scripting::Keywords
Library Keywords
Definition: VirtualMachine.h:41
Any.h
contains class Any.
Gorgon::Scripting::Initialize
void Initialize()
Initializes the scripting system.
Definition: Scripting.h:85
Gorgon::Scripting::Type
This class stores information about types.
Definition: Reflection.h:1165
Gorgon
Root namespace for Gorgon Game Engine.
Definition: Any.h:19
Gorgon::Scripting::Library
This class represents a library.
Definition: Reflection.h:1596
Gorgon::Char
uint32_t Char
Definition: Types.h:46
Gorgon::Scripting::Namespace
Namespace contains other static members as members.
Definition: Reflection.h:1073
Gorgon::Scripting::Constant
This class represents a static constant.
Definition: Reflection.h:1458
Gorgon::Scripting::Array
Definition: Array.h:14
Gorgon::Scripting::Types::Library
const Scripting::Type & Library()
Gorgon::Scripting::init_builtin
void init_builtin()
Definition: Builtin.cpp:113
Types.h
contains type definitions for Gorgon system
Gorgon::Byte
unsigned char Byte
Represents smallest cell in memory.
Definition: Types.h:9
Gorgon::Scripting::KeywordNames
std::set< std::string, String::CaseInsensitiveLess > KeywordNames
Definition: Scripting.cpp:13
Gorgon::Scripting::EnumType
Represents an enumeration type.
Definition: Reflection.h:1540
Data.h
Gorgon::Scripting::Reflection
Library Reflection
Definition: Builtin.cpp:17
Gorgon::Scripting::Integrals
Library Integrals
This library requires Initialize to be called.
Definition: VirtualMachine.h:41
Gorgon::Scripting::Function
Represents a function.
Definition: Reflection.h:557
Gorgon::Scripting::Data::IsValid
bool IsValid() const
Returns if the data is in a valid state.
Definition: Data.h:152
Gorgon::Scripting::InstanceMember
This class represents an instance data member.
Definition: Reflection.h:989
Gorgon::Scripting::EventType
Events allow an easy mechanism to program logic into actions instead of checking actions continuously...
Definition: Reflection.h:1491
Gorgon::Scripting::StaticDataMember
Definition: Reflection.h:421
Gorgon::Scripting::Types::DEFTYPE
DEFTYPE(Variant)
Variant is a special data type.