Halide
ExternFuncArgument.h
Go to the documentation of this file.
1 #ifndef HALIDE_EXTERNFUNCARGUMENT_H
2 #define HALIDE_EXTERNFUNCARGUMENT_H
3 
4 /** \file
5  * Defines the internal representation of a halide ExternFuncArgument
6  */
7 
8 #include "Buffer.h"
9 #include "Expr.h"
10 #include "FunctionPtr.h"
11 #include "Parameter.h"
12 
13 namespace Halide {
14 
15 /** An argument to an extern-defined Func. May be a Function, Buffer,
16  * ImageParam or Expr. */
18  enum ArgType { UndefinedArg = 0,
28 
30  : arg_type(FuncArg), func(std::move(f)) {
31  }
32 
33  template<typename T>
35  : arg_type(BufferArg), buffer(b) {
36  }
38  : arg_type(ExprArg), expr(std::move(e)) {
39  }
41  : arg_type(ExprArg), expr(e) {
42  }
44  : arg_type(ExprArg), expr(e) {
45  }
46 
49  // Scalar params come in via the Expr constructor.
51  }
54  }
55 
56  bool is_func() const {
57  return arg_type == FuncArg;
58  }
59  bool is_expr() const {
60  return arg_type == ExprArg;
61  }
62  bool is_buffer() const {
63  return arg_type == BufferArg;
64  }
65  bool is_image_param() const {
66  return arg_type == ImageParamArg;
67  }
68  bool defined() const {
69  return arg_type != UndefinedArg;
70  }
71 };
72 
73 } // namespace Halide
74 
75 #endif // HALIDE_EXTERNFUNCARGUMENT_H
Halide::ExternFuncArgument::is_expr
bool is_expr() const
Definition: ExternFuncArgument.h:59
Halide::ExternFuncArgument::arg_type
ArgType arg_type
Definition: ExternFuncArgument.h:23
Halide::ExternFuncArgument::BufferArg
@ BufferArg
Definition: ExternFuncArgument.h:20
Halide::ExternFuncArgument::defined
bool defined() const
Definition: ExternFuncArgument.h:68
internal_assert
#define internal_assert(c)
Definition: Errors.h:19
Parameter.h
Halide::Internal::Parameter
A reference-counted handle to a parameter to a halide pipeline.
Definition: Parameter.h:28
Halide::ExternFuncArgument::ImageParamArg
@ ImageParamArg
Definition: ExternFuncArgument.h:22
Halide::ExternFuncArgument::buffer
Buffer buffer
Definition: ExternFuncArgument.h:25
Halide::ExternFuncArgument::is_image_param
bool is_image_param() const
Definition: ExternFuncArgument.h:65
Halide::ExternFuncArgument::ExternFuncArgument
ExternFuncArgument(float e)
Definition: ExternFuncArgument.h:43
Halide::ExternFuncArgument::ArgType
ArgType
Definition: ExternFuncArgument.h:18
Halide::ExternFuncArgument::is_func
bool is_func() const
Definition: ExternFuncArgument.h:56
Halide
This file defines the class FunctionDAG, which is our representation of a Halide pipeline,...
Definition: AddAtomicMutex.h:21
Halide::ExternFuncArgument
An argument to an extern-defined Func.
Definition: ExternFuncArgument.h:17
Halide::ExternFuncArgument::ExternFuncArgument
ExternFuncArgument(const Internal::Parameter &p)
Definition: ExternFuncArgument.h:47
Halide::Buffer<>
Halide::ExternFuncArgument::ExternFuncArgument
ExternFuncArgument(int e)
Definition: ExternFuncArgument.h:40
Buffer.h
Halide::ExternFuncArgument::ExprArg
@ ExprArg
Definition: ExternFuncArgument.h:21
Halide::ExternFuncArgument::FuncArg
@ FuncArg
Definition: ExternFuncArgument.h:19
Halide::ExternFuncArgument::ExternFuncArgument
ExternFuncArgument()
Definition: ExternFuncArgument.h:52
Halide::ExternFuncArgument::is_buffer
bool is_buffer() const
Definition: ExternFuncArgument.h:62
Expr.h
Halide::Internal::FunctionPtr
A possibly-weak pointer to a Halide function.
Definition: FunctionPtr.h:27
Halide::ExternFuncArgument::expr
Expr expr
Definition: ExternFuncArgument.h:26
Halide::ExternFuncArgument::UndefinedArg
@ UndefinedArg
Definition: ExternFuncArgument.h:18
Halide::ExternFuncArgument::ExternFuncArgument
ExternFuncArgument(Buffer< T > b)
Definition: ExternFuncArgument.h:34
Halide::ExternFuncArgument::ExternFuncArgument
ExternFuncArgument(Expr e)
Definition: ExternFuncArgument.h:37
FunctionPtr.h
Halide::Expr
A fragment of Halide syntax.
Definition: Expr.h:256
Halide::ExternFuncArgument::func
Internal::FunctionPtr func
Definition: ExternFuncArgument.h:24
Halide::ExternFuncArgument::image_param
Internal::Parameter image_param
Definition: ExternFuncArgument.h:27
Halide::ExternFuncArgument::ExternFuncArgument
ExternFuncArgument(Internal::FunctionPtr f)
Definition: ExternFuncArgument.h:29
Halide::Internal::Parameter::is_buffer
bool is_buffer() const
Does this parameter refer to a buffer/image?