#ifndef SMOKEBINDING_H #define SMOKEBINDING_H #include namespace cl_smoke { class NoDispatchBinding : public SmokeBinding { public: typedef void (*destructed)(void* object); NoDispatchBinding(destructed destruct); virtual void deleted(Smoke::Index classId, void *object); virtual bool callMethod(Smoke::Index method, void* object, Smoke::Stack stack, bool abstract); virtual char* className(Smoke::Index classId); private: const destructed destruct; }; class Binding : public NoDispatchBinding { public: typedef int (*dispatch_method)(Smoke::Index method, void* object, Smoke::Stack args, int abstract); Binding(destructed destruct, dispatch_method dispatch); virtual bool callMethod(Smoke::Index method, void* object, Smoke::Stack stack, bool abstract); private: const dispatch_method dispatch; }; } // namespace cl_smoke #endif // SMOKEBINDING_H