PixelLightAPI
.
|
00001 /*********************************************************\ 00002 * File: ScriptBinding.h * 00003 * 00004 * Copyright (C) 2002-2012 The PixelLight Team (http://www.pixellight.org/) 00005 * 00006 * This file is part of PixelLight. 00007 * 00008 * PixelLight is free software: you can redistribute it and/or modify 00009 * it under the terms of the GNU Lesser General Public License as published by 00010 * the Free Software Foundation, either version 3 of the License, or 00011 * (at your option) any later version. 00012 * 00013 * PixelLight is distributed in the hope that it will be useful, 00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00016 * GNU Lesser General Public License for more details. 00017 * 00018 * You should have received a copy of the GNU Lesser General Public License 00019 * along with PixelLight. If not, see <http://www.gnu.org/licenses/>. 00020 \*********************************************************/ 00021 00022 00023 #ifndef __PLCORE_SCRIPTBINDING_H__ 00024 #define __PLCORE_SCRIPTBINDING_H__ 00025 #pragma once 00026 00027 00028 //[-------------------------------------------------------] 00029 //[ Includes ] 00030 //[-------------------------------------------------------] 00031 #include "PLCore/Base/Object.h" 00032 00033 00034 //[-------------------------------------------------------] 00035 //[ Namespace ] 00036 //[-------------------------------------------------------] 00037 namespace PLCore { 00038 00039 00040 //[-------------------------------------------------------] 00041 //[ Classes ] 00042 //[-------------------------------------------------------] 00043 /** 00044 * @brief 00045 * Abstract script binding class 00046 * 00047 * @remarks 00048 * This is actually a blank RTTI class. RTTI classes which are only used for "script binding" should be 00049 * derived from this class. This doesn't mean that it will be impossible to bind any other RTTI class 00050 * instance to a script - but usually it's useful to have such an abstract base class. 00051 * 00052 * Usually the RTTI script binding class instance methods will be available to the script as simple 00053 * global functions. So, this has nothing to do with using OOP within scripts. It's just adding global 00054 * functions to scripts. 00055 * 00056 * Each script binding should have the following property: 00057 * - "Namespace": Namespace to use inside scripts (for example: "PL.Log") 00058 */ 00059 class ScriptBinding : public Object { 00060 00061 00062 //[-------------------------------------------------------] 00063 //[ RTTI interface ] 00064 //[-------------------------------------------------------] 00065 pl_class(PLCORE_RTTI_EXPORT, ScriptBinding, "PLCore", PLCore::Object, "Abstract script binding class") 00066 // Properties 00067 pl_properties 00068 pl_property("Namespace", "") 00069 pl_properties_end 00070 pl_class_end 00071 00072 00073 //[-------------------------------------------------------] 00074 //[ Public functions ] 00075 //[-------------------------------------------------------] 00076 public: 00077 /** 00078 * @brief 00079 * Destructor 00080 */ 00081 PLCORE_API virtual ~ScriptBinding(); 00082 00083 00084 //[-------------------------------------------------------] 00085 //[ Protected functions ] 00086 //[-------------------------------------------------------] 00087 protected: 00088 /** 00089 * @brief 00090 * Constructor 00091 */ 00092 PLCORE_API ScriptBinding(); 00093 00094 /** 00095 * @brief 00096 * Copy constructor 00097 * 00098 * @param[in] cSource 00099 * Source to copy from 00100 */ 00101 PLCORE_API ScriptBinding(const ScriptBinding &cSource); 00102 00103 /** 00104 * @brief 00105 * Copy operator 00106 * 00107 * @param[in] cSource 00108 * Source to copy from 00109 * 00110 * @return 00111 * Reference to this instance 00112 */ 00113 PLCORE_API ScriptBinding &operator =(const ScriptBinding &cSource); 00114 00115 00116 }; 00117 00118 00119 //[-------------------------------------------------------] 00120 //[ Namespace ] 00121 //[-------------------------------------------------------] 00122 } // PLCore 00123 00124 00125 #endif // __PLCORE_SCRIPTBINDING_H__
|