| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- // Filename: loader.h
- // Created by: mike (09Jan97)
- //
- ////////////////////////////////////////////////////////////////////
- //
- // PANDA 3D SOFTWARE
- // Copyright (c) 2001 - 2004, Disney Enterprises, Inc. All rights reserved
- //
- // All use of this software is subject to the terms of the Panda 3d
- // Software license. You should have received a copy of this license
- // along with this source code; you will also find a current copy of
- // the license at http://etc.cmu.edu/panda3d/docs/license/ .
- //
- // To contact the maintainers of this program write to
- // [email protected] .
- //
- ////////////////////////////////////////////////////////////////////
- #ifndef LOADER_H
- #define LOADER_H
- #include "pandabase.h"
- #include "loaderOptions.h"
- #include "pnotify.h"
- #include "pandaNode.h"
- #include "filename.h"
- #include "tokenBoard.h"
- #include "asyncUtility.h"
- #include "dSearchPath.h"
- class LoaderToken;
- class LoaderFileType;
- ////////////////////////////////////////////////////////////////////
- // Class : Loader
- // Description : Handles database loading through asynchronous
- // threading
- ////////////////////////////////////////////////////////////////////
- class EXPCL_PANDA Loader : public AsyncUtility {
- private:
- class ConsiderFile {
- public:
- Filename _path;
- LoaderFileType *_type;
- };
- PUBLISHED:
- class EXPCL_PANDA Results {
- PUBLISHED:
- INLINE Results();
- INLINE Results(const Results ©);
- INLINE void operator = (const Results ©);
- INLINE ~Results();
- INLINE void clear();
- INLINE int get_num_files() const;
- INLINE const Filename &get_file(int n) const;
- INLINE LoaderFileType *get_file_type(int n) const;
- public:
- INLINE void add_file(const Filename &file, LoaderFileType *type);
- private:
- typedef pvector<ConsiderFile> Files;
- Files _files;
- };
- Loader();
- ~Loader();
- int find_all_files(const Filename &filename, const DSearchPath &search_path,
- Results &results) const;
- INLINE PT(PandaNode) load_sync(const Filename &filename,
- const LoaderOptions &options = LoaderOptions()) const;
- uint request_load(const string &event_name, const Filename &filename, bool search = true);
- bool check_load(uint id);
- PT(PandaNode) fetch_load(uint id);
- private:
- static void load_file_types();
- static bool _file_types_loaded;
- virtual bool process_request();
- PT(PandaNode) load_file(const Filename &filename, const LoaderOptions &options) const;
- typedef TokenBoard<LoaderToken> LoaderTokenBoard;
- LoaderTokenBoard *_token_board;
- };
- #include "loader.I"
- #endif
|