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

virtual ~GIOBase ()=default
 
void set_type (const Type &type)
 
void set_dimensions (int dims)
 
void set_array_size (int size)
 
 GIOBase (const GIOBase &)=delete
 
GIOBaseoperator= (const GIOBase &)=delete
 
 GIOBase (GIOBase &&)=delete
 
GIOBaseoperator= (GIOBase &&)=delete
 

Protected Member Functions

bool array_size_defined () const
 
size_t array_size () const
 
virtual bool is_array () const
 
const std::string & name () const
 
ArgInfoKind kind () const
 
bool gio_types_defined () const
 
const std::vector< Type > & gio_types () const
 
Type gio_type () const
 
bool dims_defined () const
 
int dims () const
 
const std::vector< Func > & funcs () const
 
const std::vector< Expr > & exprs () const
 
 GIOBase (size_t array_size, const std::string &name, ArgInfoKind 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 ArgInfoKind 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 1440 of file Generator.h.

Constructor & Destructor Documentation

◆ ~GIOBase()

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

◆ GIOBase() [1/3]

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

◆ GIOBase() [2/3]

Halide::Internal::GIOBase::GIOBase ( const GIOBase )
delete

◆ GIOBase() [3/3]

Halide::Internal::GIOBase::GIOBase ( GIOBase &&  )
delete

Member Function Documentation

◆ set_type()

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

◆ set_dimensions()

void Halide::Internal::GIOBase::set_dimensions ( int  dims)

◆ set_array_size()

void Halide::Internal::GIOBase::set_array_size ( int  size)

◆ array_size_defined()

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

◆ array_size()

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

◆ is_array()

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

◆ name()

◆ kind()

ArgInfoKind Halide::Internal::GIOBase::kind ( ) const
protected

◆ gio_types_defined()

bool Halide::Internal::GIOBase::gio_types_defined ( ) const
protected

◆ gio_types()

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

◆ gio_type()

Type Halide::Internal::GIOBase::gio_type ( ) const
protected

◆ dims_defined()

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

◆ dims()

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

◆ funcs()

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

◆ 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_DynamicScalar< T >::operator Expr(), Halide::Internal::GeneratorInput_Scalar< T >::operator Expr(), Halide::Internal::GeneratorInput_Func< T >::operator ExternFuncArgument(), Halide::Internal::GeneratorInput_DynamicScalar< 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::GeneratorInputImpl< T, Func >::operator[](), Halide::Internal::GeneratorOutputImpl< T >::operator[](), Halide::Internal::GeneratorOutput_Buffer< T >::operator[](), Halide::Internal::GeneratorOutputImpl< T >::resize(), Halide::Internal::GeneratorInput_Func< T >::set_estimate(), Halide::Internal::GeneratorInput_DynamicScalar< T >::set_estimate(), Halide::Internal::GeneratorInput_Scalar< T >::set_estimate(), Halide::Internal::GeneratorInput_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

◆ operator=() [1/2]

GIOBase& Halide::Internal::GIOBase::operator= ( const GIOBase )
delete

◆ operator=() [2/2]

GIOBase& Halide::Internal::GIOBase::operator= ( GIOBase &&  )
delete

◆ get_values() [2/3]

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

Definition at line 1526 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 1531 of file Generator.h.

References funcs().

Member Data Documentation

◆ array_size_

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

Definition at line 1477 of file Generator.h.

◆ name_

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

Definition at line 1480 of file Generator.h.

◆ kind_

const ArgInfoKind Halide::Internal::GIOBase::kind_
protected

Definition at line 1481 of file Generator.h.

◆ types_

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

Definition at line 1482 of file Generator.h.

◆ dims_

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

Definition at line 1483 of file Generator.h.

◆ funcs_

◆ exprs_

◆ generator

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

Definition at line 1494 of file Generator.h.


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