/** * Copyright 2019-2020 Huawei Technologies Co., Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef INC_EXTERNAL_GRAPH_ATTR_VALUE_H_ #define INC_EXTERNAL_GRAPH_ATTR_VALUE_H_ #include #include #include #include #include "./ge_error_codes.h" using std::make_shared; using std::map; using std::pair; using std::string; using std::to_string; using std::unique_ptr; using std::vector; namespace ge { class AttrValueImpl; class GE_FUNC_DEV_VISIBILITY GE_FUNC_HOST_VISIBILITY AttrValue { public: using INT = int64_t; using FLOAT = float; using STR = std::string; AttrValue(); ~AttrValue() = default; // GetValue, not list type template graphStatus GetValue(DT &val) const { T valGet; auto status = GetValue(valGet); if (status != GRAPH_SUCCESS) { return status; } val = DT(valGet); return GRAPH_SUCCESS; } template static T CreateFrom(DT &&val) { return val; } std::shared_ptr impl; private: #define VALUE_SET_GET_DEC(DT) graphStatus GetValue(DT &val) const; VALUE_SET_GET_DEC(AttrValue::STR) VALUE_SET_GET_DEC(AttrValue::INT) VALUE_SET_GET_DEC(AttrValue::FLOAT) #undef VALUE_SET_GET_DEC }; } // namespace ge #endif // INC_EXTERNAL_GRAPH_ATTR_VALUE_H_