Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 8830 in orxonox.OLD for branches/single_player_map


Ignore:
Timestamp:
Jun 27, 2006, 3:37:07 PM (18 years ago)
Author:
snellen
Message:

Implemented the executor for 5 arguments and one return value

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/single_player_map/src/lib/util/executor/executor_lua.h

    r8829 r8830  
    489489  private:
    490490    ret          (T::*functionPointer)(type0, type1, type2, type3);
     491};
     492
     493///////////
     494//// 5 ////
     495///////////
     496//! Executes a Function with a lua_State* parameter.
     497template<class T, typename ret, typename type0, typename type1, typename type2, typename type3, typename type4> class ExecutorLua5ret : public Executor
     498{
     499  public:
     500    /**
     501   * @brief Constructor of a ExecutorXML
     502   * @param function a Function to call
     503     */
     504    ExecutorLua5ret(ret (T::*function)(type0, type1, type2, type3, type4))
     505  : Executor(ExecutorParamType<type0>(), ExecutorParamType<type1>(), ExecutorParamType<type2>(), ExecutorParamType<type3>(), ExecutorParamType<type4>())
     506    {
     507      this->functionPointer = function;
     508      this->functorType = Executor_Objective | Executor_NoLoadString;
     509    }
     510
     511    /**
     512     * @brief executes the Command on BaseObject
     513     * @param object the BaseObject to execute this Executor on
     514     * @param loadString ignored in this case
     515     */
     516    virtual void operator()(BaseObject* object, const SubString& = SubString()) const
     517    {
     518      PRINTF(1)("no usefull executor\n");
     519    }
     520
     521    virtual void operator()(BaseObject* object, int& count, void* values) const
     522    {
     523      lua_State* state = (lua_State*)values;
     524      count = 1;
     525
     526      toLua<ret>(state, (dynamic_cast<T*>(object)->*(functionPointer))(
     527          fromLua<type0>(state, 1),
     528          fromLua<type1>(state, 2),
     529          fromLua<type2>(state, 3),
     530          fromLua<type3>(state, 4),
     531          fromLua<type4>(state, 5) ));
     532    }
     533
     534    /**
     535     * @returns a _new_ Copy of this Executor
     536     */
     537    virtual Executor* clone () const
     538    {
     539      return new ExecutorLua5ret<T, ret, type0, type1, type2, type3, type4>(this->functionPointer);
     540    }
     541  private:
     542    ret          (T::*functionPointer)(type0, type1, type2, type3, type4);
    491543};
    492544
     
    588640                   fromLua<type3>(state, 4),
    589641                   fromLua<type4>(state, 5),
    590                    fromLua<type4>(state, 6),
    591                    fromLua<type5>(state, 7) ));
     642                   fromLua<type5>(state, 6),
     643                   fromLua<type6>(state, 7) ));
    592644             }
    593645
Note: See TracChangeset for help on using the changeset viewer.