Halide 19.0.0
Halide compiler and libraries
Loading...
Searching...
No Matches
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>

Inheritance diagram for Halide::Internal::GIOBase:
Halide::Internal::GeneratorInputBase Halide::Internal::GeneratorOutputBase Halide::Internal::GeneratorInputImpl< T, Func > Halide::Internal::GeneratorInputImpl< T, Expr > Halide::Internal::GeneratorInputImpl< T, ValueType > Halide::Internal::GeneratorOutputImpl< T > Halide::Internal::GeneratorInput_Buffer< T2 > Halide::Internal::GeneratorInput_Func< T > Halide::Internal::GeneratorInput_DynamicScalar< T > Halide::Internal::GeneratorInput_Scalar< T > Halide::Internal::GeneratorOutput_Arithmetic< T > Halide::Internal::GeneratorOutput_Buffer< T > Halide::Internal::GeneratorOutput_Func< T > Halide::Internal::GeneratorInput_Arithmetic< T >

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 1443 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()

◆ name()

const std::string & Halide::Internal::GIOBase::name ( ) const
protected

◆ 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

Referenced by get_values().

◆ exprs()

const std::vector< Expr > & Halide::Internal::GIOBase::exprs ( ) const
protected

Referenced by get_values().

◆ 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]

◆ check_gio_access()

◆ 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 1529 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 1534 of file Generator.h.

References funcs().

Member Data Documentation

◆ array_size_

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

Definition at line 1480 of file Generator.h.

◆ name_

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

Definition at line 1483 of file Generator.h.

◆ kind_

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

Definition at line 1484 of file Generator.h.

◆ types_

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

Definition at line 1485 of file Generator.h.

◆ dims_

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

Definition at line 1486 of file Generator.h.

◆ funcs_

std::vector<Func> Halide::Internal::GIOBase::funcs_
protected

Definition at line 1489 of file Generator.h.

◆ exprs_

std::vector<Expr> Halide::Internal::GIOBase::exprs_
protected

Definition at line 1490 of file Generator.h.

◆ generator

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

Definition at line 1497 of file Generator.h.


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