namespace ov::op::ShapeInferRange

namespace ShapeInferRange {

// global functions

template <class T>
bool get_data_as_double(
    size_t idx,
    const ov::Node \* op,
    std::vector<double>& axes_value,
    const std::map<size_t, std::shared_ptr<ngraph::runtime::HostTensor>>& constant_data = {}
    );

bool get_data_as_double< ov::PartialShape >(
    size_t idx,
    const ov::Node \* op,
    std::vector<double>& axes_value,
    const std::map<size_t, std::shared_ptr<ngraph::runtime::HostTensor>>& constant_data
    );

template <class T>
void range_shape_infer(
    const Node \* op,
    const std::vector<T>& input_shapes,
    std::vector<T>& output_shapes,
    bool output_is_integral,
    bool step_allows_zero,
    const std::map<size_t, std::shared_ptr<ngraph::runtime::HostTensor>>& constant_data
    );

} // namespace ShapeInferRange