| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- // Filename: genericAsyncTask.h
- // Created by: drose (16Sep08)
- //
- ////////////////////////////////////////////////////////////////////
- //
- // PANDA 3D SOFTWARE
- // Copyright (c) Carnegie Mellon University. All rights reserved.
- //
- // All use of this software is subject to the terms of the revised BSD
- // license. You should have received a copy of this license along
- // with this source code in a file named "LICENSE."
- //
- ////////////////////////////////////////////////////////////////////
- #ifndef GENERICASYNCTASK_H
- #define GENERICASYNCTASK_H
- #include "pandabase.h"
- #include "asyncTask.h"
- ////////////////////////////////////////////////////////////////////
- // Class : GenericAsyncTask
- // Description : Associates a generic C-style function pointer with an
- // AsyncTask object. You can use this when you want to
- // create an AsyncTask without having to subclass.
- ////////////////////////////////////////////////////////////////////
- class EXPCL_PANDA_PIPELINE GenericAsyncTask : public AsyncTask {
- public:
- typedef DoneStatus TaskFunc(GenericAsyncTask *task, void *user_data);
- typedef void BirthFunc(GenericAsyncTask *task, void *user_data);
- typedef void DeathFunc(GenericAsyncTask *task, bool clean_exit, void *user_data);
- GenericAsyncTask(const string &name = string());
- GenericAsyncTask(const string &name, TaskFunc *function, void *user_data);
- ALLOC_DELETED_CHAIN(GenericAsyncTask);
- INLINE void set_function(TaskFunc *function);
- INLINE TaskFunc *get_function() const;
- INLINE void set_upon_birth(BirthFunc *function);
- INLINE BirthFunc *get_upon_birth() const;
- INLINE void set_upon_death(DeathFunc *function);
- INLINE DeathFunc *get_upon_death() const;
- INLINE void set_user_data(void *user_data);
- INLINE void *get_user_data() const;
- protected:
- virtual bool is_runnable();
- virtual DoneStatus do_task();
- virtual void upon_birth(AsyncTaskManager *manager);
- virtual void upon_death(AsyncTaskManager *manager, bool clean_exit);
- private:
- TaskFunc *_function;
- BirthFunc *_upon_birth;
- DeathFunc *_upon_death;
- void *_user_data;
- public:
- static TypeHandle get_class_type() {
- return _type_handle;
- }
- static void init_type() {
- AsyncTask::init_type();
- register_type(_type_handle, "GenericAsyncTask",
- AsyncTask::get_class_type());
- }
- virtual TypeHandle get_type() const {
- return get_class_type();
- }
- virtual TypeHandle force_init_type() {init_type(); return get_class_type();}
- private:
- static TypeHandle _type_handle;
- };
- #include "genericAsyncTask.I"
- #endif
|