Program Listing for File core.h#
↰ Return to documentation for file (interfaces\core.h)
#ifndef __IDL_GENERATED__CORE_H__20251106_105035_670__
#define __IDL_GENERATED__CORE_H__20251106_105035_670__
#ifdef _MSC_VER
// Prevent bogus warnings about uninitialized members during static code analysis.
#pragma warning(push)
#pragma warning(disable : 26495)
#endif
// Provide fixed width integer types.
#include <cstdint>
#include "core_types.h"
#include "../support/pointer.h"
#include "../support/iterator.h"
#include "../support/string.h"
#include "../support/sequence.h"
#include "../support/any.h"
#if defined(_WIN32) && defined(GetClassInfo)
#undef GetClassinfo
#endif
#ifdef _MSC_VER
#pragma warning(disable: 4190) // Disable C-linkage warning when using C++ objects.
#endif
namespace sdv
{
interface IInterfaceAccess
{
static constexpr ::sdv::interface_id _id = 0x9D93731520AD52C8;
virtual sdv::interface_t GetInterface(/*in*/ sdv::interface_id idInterface) = 0;
template <typename TInterface>
TInterface* GetInterface()
{
return GetInterface(sdv::GetInterfaceId<TInterface>()).template get<TInterface>();
}
};
enum class EObjectType : uint32_t
{
SystemObject = 0,
Device = 10,
BasicService = 20,
ComplexService = 21,
Application = 30,
Proxy = 100,
Stub = 101,
Utility = 1000,
};
enum class EObjectFlags : uint32_t
{
singleton = 256,
};
struct SClassInfo
{
sdv::u8string ssModulePath;
sdv::u8string ssClassName;
sdv::sequence<sdv::u8string> seqClassAliases;
sdv::u8string ssDefaultObjectName;
EObjectType eType;
uint32_t uiFlags;
sdv::sequence<sdv::u8string> seqDependencies;
};
interface IObjectFactory
{
static constexpr ::sdv::interface_id _id = 0xD44C24E971FFB2F0;
virtual IInterfaceAccess* CreateObject(/*in*/ const sdv::u8string& ssClassName) = 0;
virtual void DestroyObject(/*in*/ IInterfaceAccess* sdvObject) = 0;
virtual void DestroyAllObjects() = 0;
};
enum class EObjectStatus : uint32_t
{
initialization_pending = 0,
initializing = 10,
initialization_failure = 11,
initialized = 12,
configuring = 20,
config_error = 21,
running = 30,
runtime_error = 31,
shutdown_in_progress = 90,
destruction_pending = 99,
};
enum class EOperationMode : uint32_t
{
configuring = 20,
running = 30,
};
interface IObjectControl
{
static constexpr ::sdv::interface_id _id = 0xD8AE1C98934FBA73;
virtual void Initialize(/*in*/ const sdv::u8string& ssObjectConfig) = 0;
virtual EObjectStatus GetStatus() const = 0;
virtual void SetOperationMode(/*in*/ EOperationMode eMode) = 0;
virtual void Shutdown() = 0;
};
interface IObjectDestroy
{
static constexpr ::sdv::interface_id _id = 0xBCE042046AED46D7;
virtual void DestroyObject() = 0;
};
interface IObjectLifetime
{
static constexpr ::sdv::interface_id _id = 0x8E5315B6428769CA;
virtual void Increment() = 0;
virtual bool Decrement() = 0;
virtual uint32_t GetCount() const = 0;
};
enum class EAttributeFlags : uint32_t
{
read_only = 0x100,
};
interface IAttributes
{
static constexpr ::sdv::interface_id _id = 0x57C6485BC65354B3;
virtual sdv::sequence<sdv::u8string> GetNames() const = 0;
virtual sdv::any_t Get(/*in*/ const sdv::u8string& ssAttribute) const = 0;
virtual bool Set(/*in*/ const sdv::u8string& ssAttribute, /*in*/ sdv::any_t anyAttribute) = 0;
virtual uint32_t GetFlags(/*in*/ const sdv::u8string& ssAttribute) const = 0;
};
}
extern "C" SDV_SYMBOL_PUBLIC bool HasActiveObjects();
extern "C" SDV_SYMBOL_PUBLIC sdv::IInterfaceAccess* GetModuleFactory(uint32_t interfaceVersion);
extern "C" SDV_SYMBOL_PUBLIC const char* GetManifest();
#include "mem.h"
#ifdef _MSC_VER
#pragma warning(pop)
#endif
#endif // !defined(__IDL_GENERATED__CORE_H__20251106_105035_685__)