1/* Copyright 2021 The TensorFlow Authors. All Rights Reserved.
2
3Licensed under the Apache License, Version 2.0 (the "License");
4you may not use this file except in compliance with the License.
5You may obtain a copy of the License at
6
7 http://www.apache.org/licenses/LICENSE-2.0
8
9Unless required by applicable law or agreed to in writing, software
10distributed under the License is distributed on an "AS IS" BASIS,
11WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12See the License for the specific language governing permissions and
13limitations under the License.
14==============================================================================*/
15#ifndef TENSORFLOW_C_EAGER_GRAPH_FUNCTION_H_
16#define TENSORFLOW_C_EAGER_GRAPH_FUNCTION_H_
17
18#include "tensorflow/c/eager/abstract_function.h"
19namespace tensorflow {
20namespace tracing {
21namespace graph {
22using tensorflow::AbstractFunction;
23// Thin wrapper around a FunctionDef.
24class GraphFunction : public AbstractFunction {
25 public:
26 explicit GraphFunction(FunctionDef fdef);
27 ~GraphFunction() override;
28
29 // GraphFunction maybe stay alive for the duration of the returned
30 // FunctionDef.
31 Status GetFunctionDef(FunctionDef** fdef) override;
32
33 // For LLVM style RTTI.
34 static bool classof(const AbstractFunction* ptr) {
35 return ptr->getKind() == kGraph;
36 }
37
38 private:
39 FunctionDef fdef_;
40};
41} // namespace graph
42} // namespace tracing
43} // namespace tensorflow
44
45#endif // TENSORFLOW_C_EAGER_GRAPH_FUNCTION_H_
46