58 lines
1.6 KiB
C++
58 lines
1.6 KiB
C++
//======================================================================================================
|
|
// Copyright 2016, NaturalPoint Inc.
|
|
//======================================================================================================
|
|
#pragma once
|
|
|
|
#include <memory>
|
|
|
|
#include "AnalogSystemBuildConfig.h"
|
|
|
|
namespace AnalogSystem
|
|
{
|
|
class IDevice;
|
|
|
|
/// <summary>
|
|
/// IDeviceFactory creates a specific instance of a device.
|
|
/// </summary>
|
|
class ANALOGSYSTEM_API IDeviceFactory
|
|
{
|
|
public:
|
|
virtual ~IDeviceFactory() = default;
|
|
|
|
///<summary>Returns factory name</summary>
|
|
virtual const char* Name() const = 0;
|
|
|
|
///<summary>Returns device instance name</summary>
|
|
virtual const char* DeviceName() const = 0;
|
|
|
|
///<summary>Creates a new instance of the device.</summary>
|
|
virtual std::unique_ptr<IDevice> Create() const = 0;
|
|
};
|
|
|
|
/// <summary>
|
|
/// Base implementation for a Plugin Device factory.
|
|
/// See Plugin Device SDK for example implementation
|
|
/// </summary>
|
|
/// <seealso cref="IDeviceFactory" />
|
|
class ANALOGSYSTEM_API PluginDeviceFactory : public IDeviceFactory
|
|
{
|
|
public:
|
|
PluginDeviceFactory( const char* deviceName )
|
|
{
|
|
strcpy_s( mDeviceName, deviceName );
|
|
}
|
|
|
|
PluginDeviceFactory( const PluginDeviceFactory& ) = delete;
|
|
PluginDeviceFactory& operator=( const PluginDeviceFactory& ) = delete;
|
|
|
|
virtual ~PluginDeviceFactory() = default;
|
|
|
|
const char* DeviceName() const override
|
|
{
|
|
return mDeviceName;
|
|
}
|
|
|
|
private:
|
|
char mDeviceName[255];
|
|
};
|
|
} |