Program Listing for File core.idl#
↰ Return to documentation for file (interfaces\core.idl
)
#include "core_types.idl"
#verbatim #include "../support/pointer.h"
#verbatim #include "../support/iterator.h"
#verbatim #include "../support/string.h"
#verbatim #include "../support/sequence.h"
#verbatim #include "../support/any.h"
#verbatim_begin
#if defined(_WIN32) && defined(GetClassInfo)
#undef GetClassinfo
#endif
#ifdef _MSC_VER
#pragma warning(disable: 4190) // Disable C-linkage warning when using C++ objects.
#endif
#verbatim_end
module sdv
{
interface IInterfaceAccess
{
interface_t GetInterface(in interface_id idInterface);
#verbatim_begin
template <typename TInterface>
TInterface* GetInterface()
{
return GetInterface(sdv::GetInterfaceId<TInterface>()).template get<TInterface>();
}
#verbatim_end
};
enum EObjectType : uint32
{
SystemObject = 0,
Device = 10,
BasicService = 20,
ComplexService = 21,
Application = 30,
Proxy = 100,
Stub = 101,
Utility = 1000,
};
enum EObjectFlags : uint32
{
singleton = 256,
};
struct SClassInfo
{
u8string ssModulePath;
u8string ssClassName;
sequence<u8string> seqClassAliases;
u8string ssDefaultObjectName;
EObjectType eType;
uint32 uiFlags;
sequence<u8string> seqDependencies;
};
interface IObjectFactory
{
IInterfaceAccess CreateObject(in u8string ssClassName);
void DestroyObject(in IInterfaceAccess sdvObject);
void DestroyAllObjects();
};
enum EObjectStatus : uint32
{
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 EOperationMode : uint32
{
configuring = 20,
running = 30,
};
interface IObjectControl
{
void Initialize(in u8string ssObjectConfig);
EObjectStatus GetStatus() const;
void SetOperationMode(in EOperationMode eMode);
void Shutdown();
};
interface IObjectDestroy
{
void DestroyObject();
};
interface IObjectLifetime
{
void Increment();
boolean Decrement();
uint32 GetCount() const;
};
enum EAttributeFlags : uint32
{
read_only = 0x100,
};
interface IAttributes
{
sequence<u8string> GetNames() const;
any Get(in u8string ssAttribute) const;
boolean Set(in u8string ssAttribute, in any anyAttribute);
uint32 GetFlags(in u8string ssAttribute) const;
};
}; // module sdv
#verbatim_begin
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();
#verbatim_end
#include "mem.idl"