58 lines
1.4 KiB
C++
58 lines
1.4 KiB
C++
// Copyright (C) 2018-2025 Intel Corporation
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
#pragma once
|
|
|
|
#include <memory>
|
|
#include <type_traits>
|
|
#include <vector>
|
|
|
|
#include "openvino/core/core_visibility.hpp"
|
|
#include "openvino/core/rtti.hpp"
|
|
#include "openvino/core/type.hpp"
|
|
|
|
#define OPENVINO_EXTENSION_C_API OPENVINO_EXTERN_C OPENVINO_CORE_EXPORTS
|
|
#define OPENVINO_EXTENSION_API OPENVINO_CORE_EXPORTS
|
|
|
|
namespace ov {
|
|
|
|
class Extension;
|
|
|
|
/**
|
|
* @brief The class provides the base interface for OpenVINO extensions
|
|
* @ingroup ov_model_cpp_api
|
|
*/
|
|
class OPENVINO_API Extension {
|
|
public:
|
|
OPENVINO_RTTI_BASE("Extension")
|
|
|
|
using Ptr = std::shared_ptr<Extension>;
|
|
|
|
virtual ~Extension();
|
|
};
|
|
} // namespace ov
|
|
|
|
#ifndef OV_CREATE_EXTENSION
|
|
# define OV_CREATE_EXTENSION create_extensions
|
|
#endif
|
|
|
|
/**
|
|
* @brief The entry point for library with OpenVINO extensions
|
|
*
|
|
* @param ext of extensions
|
|
*/
|
|
OPENVINO_EXTENSION_C_API
|
|
void OV_CREATE_EXTENSION(std::vector<ov::Extension::Ptr>& ext);
|
|
|
|
/**
|
|
* @brief Macro generates the entry point for the library
|
|
*
|
|
* @param ext of extensions
|
|
*/
|
|
#define OPENVINO_CREATE_EXTENSIONS(extensions) \
|
|
OPENVINO_EXTENSION_C_API void OV_CREATE_EXTENSION(std::vector<ov::Extension::Ptr>& ext); \
|
|
OPENVINO_EXTENSION_C_API void OV_CREATE_EXTENSION(std::vector<ov::Extension::Ptr>& ext) { \
|
|
ext = extensions; \
|
|
}
|