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];
};
}