123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- /*
- * TI Voxel Lib component.
- *
- * Copyright (c) 2014 Texas Instruments Inc.
- */
- #ifndef VOXEL_DOWNLOADER_FACTORY_H
- #define VOXEL_DOWNLOADER_FACTORY_H
- #include "Downloader.h"
- #include "Common.h"
- #include "Device.h"
- namespace Voxel
- {
-
- /**
- * \addtogroup CamSys
- * @{
- */
- class VOXEL_EXPORT DownloaderFactory
- {
- protected:
- Vector<DevicePtr> _supportedDevices;
-
- inline void _addSupportedDevices(const Vector<DevicePtr> &devices);
-
- String _name;
-
- public:
- DownloaderFactory(const String &name): _name(name) {}
-
- inline const String &name() const { return _name; }
-
- inline const Vector<DevicePtr> &getSupportedDevices() const { return _supportedDevices; }
-
- // Instantiate a depth camera for the specified device
- virtual DownloaderPtr getDownloader(DevicePtr device) = 0;
-
- virtual ~DownloaderFactory() {}
- };
- void DownloaderFactory::_addSupportedDevices(const Vector<DevicePtr> &devices)
- {
- _supportedDevices.reserve(_supportedDevices.size() + devices.size());
- _supportedDevices.insert(_supportedDevices.end(), devices.begin(), devices.end());
- }
- // Implement this function in every device-specific voxel library
- typedef Ptr<DownloaderFactory> DownloaderFactoryPtr;
- #ifndef SWIG
- extern "C" void getDownloaderFactory(DownloaderFactoryPtr &downloaderFactory);
- #endif
- typedef void (*GetDownloaderFactory)(DownloaderFactoryPtr &downloaderFactory); // Function type to return DownloaderFactory
- /**
- * @}
- */
- }
- #endif // DEPTHCAMERA_FACTORY_H
|