xref: /aosp_15_r20/external/tensorflow/tensorflow/c/experimental/ops/gen/model/arg_spec.h (revision b6fb3261f9314811a0f4371741dbb8839866f948)
1 /* Copyright 2021 The TensorFlow Authors. All Rights Reserved.
2 
3 Licensed under the Apache License, Version 2.0 (the "License");
4 you may not use this file except in compliance with the License.
5 You may obtain a copy of the License at
6 
7     http://www.apache.org/licenses/LICENSE-2.0
8 
9 Unless required by applicable law or agreed to in writing, software
10 distributed under the License is distributed on an "AS IS" BASIS,
11 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 See the License for the specific language governing permissions and
13 limitations under the License.
14 ==============================================================================*/
15 #ifndef TENSORFLOW_C_EXPERIMENTAL_OPS_GEN_MODEL_ARG_SPEC_H_
16 #define TENSORFLOW_C_EXPERIMENTAL_OPS_GEN_MODEL_ARG_SPEC_H_
17 
18 #include "tensorflow/c/experimental/ops/gen/model/arg_type.h"
19 #include "tensorflow/core/framework/op_def.pb.h"
20 #include "tensorflow/core/platform/types.h"
21 
22 namespace tensorflow {
23 namespace generator {
24 
25 // An input or output argument to an Op.
26 //
27 // Essentially, this represents an OpDef::ArgDef and its context within the Op.
28 class ArgSpec {
29  public:
30   ArgSpec() = default;
31   ArgSpec(const ArgSpec& other) = default;
32   static ArgSpec CreateInput(const OpDef::ArgDef& arg_def, int position);
33   static ArgSpec CreateOutput(const OpDef::ArgDef& arg_def, int position);
34 
name()35   const string& name() const { return name_; }
description()36   const string& description() const { return description_; }
arg_type()37   const ArgType arg_type() const { return arg_type_; }
position()38   const int position() const { return position_; }
39 
40  private:
41   explicit ArgSpec(const OpDef::ArgDef& arg_def, ArgType arg_type,
42                    int position);
43 
44   string name_;
45   string description_;
46   ArgType arg_type_;
47   int position_;
48 };
49 
50 }  // namespace generator
51 }  // namespace tensorflow
52 
53 #endif  // TENSORFLOW_C_EXPERIMENTAL_OPS_GEN_MODEL_ARG_SPEC_H_
54