Program Listing for File core.h#

Return to documentation for file (interfaces\core.h)

#ifndef __IDL_GENERATED__CORE_H__20260404_121548_451__
#define __IDL_GENERATED__CORE_H__20260404_121548_451__

#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
    {
        undefined = 0,

        system_object = 1,

        device = 10,

        platform_abstraction = 11,

        vehicle_bus = 12,

        basic_service = 20,

        sensor = 21,

        actuator = 22,

        complex_service = 30,

        vehicle_function = 31,

        application = 50,

        proxy = 100,

        stub = 101,

        utility = 1000,
    };

    enum class EObjectFlags : uint32_t
    {
        singleton = 256,
    };

    struct SClassInfo
    {
        sdv::u8string ssModulePath;

        sdv::u8string ssName;

        sdv::sequence<sdv::u8string> seqClassAliases;

        sdv::u8string ssDefaultObjectName;

        sdv::u8string ssDefaultConfig;

        EObjectType eType;

        uint32_t uiFlags;

        sdv::sequence<sdv::u8string> seqDependencies;
    };

    interface IObjectFactory
    {
        static constexpr ::sdv::interface_id _id = 0x7C840B3236DD6933;

        virtual sdv::sequence<sdv::u8string> GetClassNames() const = 0;

        virtual SClassInfo GetClassInfo(/*in*/ const sdv::u8string& ssClassName) const = 0;

        virtual IInterfaceAccess* CreateObject(/*in*/ const sdv::u8string& ssClassName) = 0;

        virtual void DestroyObject(/*in*/ IInterfaceAccess* sdvObject) = 0;

        virtual void DestroyAllObjects() = 0;
    };

    enum class EObjectState : 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 = 0x42C63A3374DB3813;

        virtual void Initialize(/*in*/ const sdv::u8string& ssObjectConfig) = 0;

        virtual EObjectState GetObjectState() const = 0;

        virtual void SetOperationMode(/*in*/ EOperationMode eMode) = 0;

        virtual sdv::u8string GetObjectConfig() const = 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__20260404_121548_456__)