Halide
Halide::Internal::GIOBase Class Referenceabstract

GIOBase is the base class for all GeneratorInput<> and GeneratorOutput<> instantiations; it is not part of the public API and should never be used directly by user code. More...

#include <Generator.h>

Inherited by Halide::Internal::GeneratorInputBase, and Halide::Internal::GeneratorOutputBase.

Public Member Functions

bool array_size_defined () const
 
size_t array_size () const
 
virtual bool is_array () const
 
const std::string & name () const
 
IOKind kind () const
 
bool types_defined () const
 
const std::vector< Type > & types () const
 
Type type () const
 
bool dims_defined () const
 
int dims () const
 
const std::vector< Func > & funcs () const
 
const std::vector< Expr > & exprs () const
 
virtual ~GIOBase ()
 

Protected Member Functions

 GIOBase (size_t array_size, const std::string &name, IOKind kind, const std::vector< Type > &types, int dims)
 
std::string array_name (size_t i) const
 
virtual void verify_internals ()
 
void check_matching_array_size (size_t size) const
 
void check_matching_types (const std::vector< Type > &t) const
 
void check_matching_dims (int d) const
 
template<typename ElemType >
const std::vector< ElemType > & get_values () const
 
void check_gio_access () const
 
virtual void check_value_writable () const =0
 
virtual const char * input_or_output () const =0
 
template<>
const std::vector< Expr > & get_values () const
 
template<>
const std::vector< Func > & get_values () const
 

Protected Attributes

int array_size_
 
const std::string name_
 
const IOKind kind_
 
std::vector< Typetypes_
 
int dims_
 
std::vector< Funcfuncs_
 
std::vector< Exprexprs_
 
GeneratorBasegenerator {nullptr}
 

Detailed Description

GIOBase is the base class for all GeneratorInput<> and GeneratorOutput<> instantiations; it is not part of the public API and should never be used directly by user code.

Every GIOBase instance can be either a single value or an array-of-values; each of these values can be an Expr or a Func. (Note that for an array-of-values, the types/dimensions of all values in the array must match.)

A GIOBase can have multiple Types, in which case it represents a Tuple. (Note that Tuples are currently only supported for GeneratorOutput, but it is likely that GeneratorInput will be extended to support Tuple as well.)

The array-size, type(s), and dimensions can all be left "unspecified" at creation time, in which case they may assume values provided by a Stub. (It is important to note that attempting to use a GIOBase with unspecified values will assert-fail; you must ensure that all unspecified values are filled in prior to use.)

Definition at line 1430 of file Generator.h.

Constructor & Destructor Documentation

◆ ~GIOBase()

virtual Halide::Internal::GIOBase::~GIOBase ( )
virtual

◆ GIOBase()

Halide::Internal::GIOBase::GIOBase ( size_t  array_size,
const std::string &  name,
IOKind  kind,
const std::vector< Type > &  types,
int  dims 
)
protected

Member Function Documentation

◆ array_size_defined()

bool Halide::Internal::GIOBase::array_size_defined ( ) const

◆ array_size()

size_t Halide::Internal::GIOBase::array_size ( ) const

◆ is_array()

virtual bool Halide::Internal::GIOBase::is_array ( ) const
virtual

◆ name()

◆ kind()

IOKind Halide::Internal::GIOBase::kind ( ) const

◆ types_defined()

bool Halide::Internal::GIOBase::types_defined ( ) const

◆ types()

const std::vector<Type>& Halide::Internal::GIOBase::types ( ) const

◆ type()

Type Halide::Internal::GIOBase::type ( ) const

◆ dims_defined()

bool Halide::Internal::GIOBase::dims_defined ( ) const

◆ dims()

int Halide::Internal::GIOBase::dims ( ) const

◆ funcs()

const std::vector<Func>& Halide::Internal::GIOBase::funcs ( ) const

◆ exprs()

◆ array_name()

std::string Halide::Internal::GIOBase::array_name ( size_t  i) const
protected

◆ verify_internals()

virtual void Halide::Internal::GIOBase::verify_internals ( )
protectedvirtual

◆ check_matching_array_size()

void Halide::Internal::GIOBase::check_matching_array_size ( size_t  size) const
protected

◆ check_matching_types()

void Halide::Internal::GIOBase::check_matching_types ( const std::vector< Type > &  t) const
protected

◆ check_matching_dims()

void Halide::Internal::GIOBase::check_matching_dims ( int  d) const
protected

◆ get_values() [1/3]

template<typename ElemType >
const std::vector<ElemType>& Halide::Internal::GIOBase::get_values ( ) const
protected

◆ check_gio_access()

void Halide::Internal::GIOBase::check_gio_access ( ) const
protected

Referenced by Halide::Internal::GeneratorInputImpl< T, Func >::at(), Halide::Internal::GeneratorOutputImpl< T >::at(), Halide::Internal::GeneratorInputImpl< T, Func >::begin(), Halide::Internal::GeneratorOutputImpl< T >::begin(), Halide::Internal::GeneratorInputImpl< T, Func >::end(), Halide::Internal::GeneratorOutputImpl< T >::end(), Halide::Internal::GeneratorInput_Func< T >::in(), Halide::Internal::GeneratorInput_Scalar< T >::operator Expr(), Halide::Internal::GeneratorInput_Func< T >::operator ExternFuncArgument(), Halide::Internal::GeneratorInput_Scalar< T >::operator ExternFuncArgument(), Halide::Internal::GeneratorInput_Func< T >::operator Func(), Halide::Internal::GeneratorOutputImpl< T >::operator Func(), Halide::Internal::GeneratorOutput_Buffer< T >::operator OutputImageParam(), Halide::Internal::GeneratorOutputImpl< T >::operator Stage(), Halide::Internal::GeneratorInput_Func< T >::operator()(), Halide::Internal::GeneratorOutputImpl< T >::operator()(), Halide::Internal::GeneratorOutput_Buffer< T >::operator=(), Halide::Internal::GeneratorOutput_Func< T >::operator=(), Halide::Internal::GeneratorInputImpl< T, Func >::operator[](), Halide::Internal::GeneratorOutputImpl< T >::operator[](), Halide::Internal::GeneratorOutput_Func< T >::operator[](), Halide::Internal::GeneratorOutputImpl< T >::resize(), Halide::Internal::GeneratorInput_Func< T >::set_estimate(), Halide::Internal::GeneratorInput_Scalar< T >::set_estimate(), Halide::Internal::GeneratorOutput_Func< T >::set_estimate(), Halide::Internal::GeneratorInput_Func< T >::set_estimates(), Halide::Internal::GeneratorOutput_Func< T >::set_estimates(), Halide::Internal::GeneratorInputImpl< T, Func >::size(), and Halide::Internal::GeneratorOutputImpl< T >::size().

◆ check_value_writable()

virtual void Halide::Internal::GIOBase::check_value_writable ( ) const
protectedpure virtual

◆ input_or_output()

virtual const char* Halide::Internal::GIOBase::input_or_output ( ) const
protectedpure virtual

◆ get_values() [2/3]

template<>
const std::vector<Expr>& Halide::Internal::GIOBase::get_values ( ) const
inlineprotected

Definition at line 1510 of file Generator.h.

References exprs().

◆ get_values() [3/3]

template<>
const std::vector<Func>& Halide::Internal::GIOBase::get_values ( ) const
inlineprotected

Definition at line 1515 of file Generator.h.

References funcs().

Member Data Documentation

◆ array_size_

int Halide::Internal::GIOBase::array_size_
mutableprotected

Definition at line 1461 of file Generator.h.

◆ name_

const std::string Halide::Internal::GIOBase::name_
protected

Definition at line 1464 of file Generator.h.

◆ kind_

const IOKind Halide::Internal::GIOBase::kind_
protected

Definition at line 1465 of file Generator.h.

◆ types_

std::vector<Type> Halide::Internal::GIOBase::types_
mutableprotected

Definition at line 1466 of file Generator.h.

◆ dims_

int Halide::Internal::GIOBase::dims_
mutableprotected

Definition at line 1467 of file Generator.h.

◆ funcs_

◆ exprs_

◆ generator

GeneratorBase* Halide::Internal::GIOBase::generator {nullptr}
protected

Definition at line 1478 of file Generator.h.


The documentation for this class was generated from the following file: