Program Listing for File utils.h
↰ Return to documentation for file (include/converter/include/mindapi/ir/utils.h
)
#ifndef MINDSPORE_CORE_MINDAPI_IR_UTILS_H_
#define MINDSPORE_CORE_MINDAPI_IR_UTILS_H_
#include "mindapi/base/base.h"
#include "mindapi/base/shared_ptr.h"
#include "mindapi/base/type_traits.h"
#include "mindapi/ir/anf.h"
#include "mindapi/ir/value.h"
#include "mindapi/ir/func_graph.h"
namespace mindspore::api::utils {
template <typename T, typename = typename std::enable_if_t<std::is_base_of_v<Base, T> || is_wrapper_ptr<T>::value>>
inline bool isa(const BasePtr &ptr) {
if (ptr == nullptr) {
return false;
}
if constexpr (is_wrapper_ptr<T>::value) {
return ptr->isa<typename T::element_type>();
} else {
return ptr->isa<T>();
}
}
template <typename T, typename U = typename ImmTrait<T>::type::element_type>
inline bool isa(const ValuePtr &ptr) {
if (ptr == nullptr) {
return false;
}
return ptr->isa<U>();
}
template <typename T, typename = typename std::enable_if_t<is_wrapper_ptr<T>::value, T>>
inline T cast(const BasePtr &ptr) {
if (ptr == nullptr) {
return nullptr;
}
return ptr->cast<T>();
}
template <typename T, typename U = typename ImmTrait<T>::type>
inline T cast(const ValuePtr &ptr) {
return GetValue<T>(ptr);
}
MIND_API FuncGraphPtr CloneGraph(const FuncGraphPtr &func_graph);
MIND_API int64_t GetPadMode(const ValuePtr &value, bool is_upper = false);
} // namespace mindspore::api::utils
#endif // MINDSPORE_CORE_MINDAPI_IR_UTILS_H_