FreeTensor
Loading...
Searching...
No Matches
Public Member Functions | Protected Types | Protected Attributes | List of all members
freetensor::ScheduleLogItemImpl< TYPE, _Invocable, _Params, _Result > Class Template Reference

#include <schedule_log.h>

Inheritance diagram for freetensor::ScheduleLogItemImpl< TYPE, _Invocable, _Params, _Result >:
Inheritance graph
[legend]
Collaboration diagram for freetensor::ScheduleLogItemImpl< TYPE, _Invocable, _Params, _Result >:
Collaboration graph
[legend]

Public Member Functions

 ScheduleLogItemImpl (const Invocable &doSchedule, const Params &params)
 
ScheduleType type () const override
 
std::string toString () const override
 
std::string toPrettyString () const override
 
size_t hash () const override
 
bool equals (const ScheduleLogItem &other) const override
 
void run () override
 
Result getResult () const
 
Stmt resultAST () const override final
 
- Public Member Functions inherited from freetensor::ScheduleLogItem
virtual ~ScheduleLogItem ()
 
virtual ScheduleType type () const =0
 
virtual std::string toString () const =0
 
virtual std::string toPrettyString () const =0
 
virtual size_t hash () const =0
 
virtual bool equals (const ScheduleLogItem &other) const =0
 
virtual void run ()=0
 
virtual Stmt resultAST () const =0
 

Protected Types

typedef _Invocable Invocable
 
typedef _Params Params
 
typedef _Result Result
 

Protected Attributes

Invocable doSchedule_
 
Params params_
 
std::variant< std::nullopt_t, Result, std::exception_ptr > result_
 
std::mutex lock_
 

Detailed Description

template<ScheduleType TYPE, class _Invocable, class _Params, class _Result>
class freetensor::ScheduleLogItemImpl< TYPE, _Invocable, _Params, _Result >

Template of a specialized ScheduleLogItem of a particular type of schedule

Assuming return type (_Result) from each schedule function is either an AST, or a tuple whose first item is an AST

Member Typedef Documentation

◆ Invocable

template<ScheduleType TYPE, class _Invocable , class _Params , class _Result >
typedef _Invocable freetensor::ScheduleLogItemImpl< TYPE, _Invocable, _Params, _Result >::Invocable
protected

◆ Params

template<ScheduleType TYPE, class _Invocable , class _Params , class _Result >
typedef _Params freetensor::ScheduleLogItemImpl< TYPE, _Invocable, _Params, _Result >::Params
protected

◆ Result

template<ScheduleType TYPE, class _Invocable , class _Params , class _Result >
typedef _Result freetensor::ScheduleLogItemImpl< TYPE, _Invocable, _Params, _Result >::Result
protected

Constructor & Destructor Documentation

◆ ScheduleLogItemImpl()

template<ScheduleType TYPE, class _Invocable , class _Params , class _Result >
freetensor::ScheduleLogItemImpl< TYPE, _Invocable, _Params, _Result >::ScheduleLogItemImpl ( const Invocable doSchedule,
const Params params 
)
inline

Member Function Documentation

◆ equals()

template<ScheduleType TYPE, class _Invocable , class _Params , class _Result >
bool freetensor::ScheduleLogItemImpl< TYPE, _Invocable, _Params, _Result >::equals ( const ScheduleLogItem other) const
inlineoverridevirtual

◆ getResult()

template<ScheduleType TYPE, class _Invocable , class _Params , class _Result >
Result freetensor::ScheduleLogItemImpl< TYPE, _Invocable, _Params, _Result >::getResult ( ) const
inline

Get a saved result or re-throw an exception

◆ hash()

template<ScheduleType TYPE, class _Invocable , class _Params , class _Result >
size_t freetensor::ScheduleLogItemImpl< TYPE, _Invocable, _Params, _Result >::hash ( ) const
inlineoverridevirtual

◆ resultAST()

template<ScheduleType TYPE, class _Invocable , class _Params , class _Result >
Stmt freetensor::ScheduleLogItemImpl< TYPE, _Invocable, _Params, _Result >::resultAST ( ) const
inlinefinaloverridevirtual

◆ run()

template<ScheduleType TYPE, class _Invocable , class _Params , class _Result >
void freetensor::ScheduleLogItemImpl< TYPE, _Invocable, _Params, _Result >::run ( )
inlineoverridevirtual

Run a schedule and save its result or its exception

Implements freetensor::ScheduleLogItem.

◆ toPrettyString()

template<ScheduleType TYPE, class _Invocable , class _Params , class _Result >
std::string freetensor::ScheduleLogItemImpl< TYPE, _Invocable, _Params, _Result >::toPrettyString ( ) const
inlineoverridevirtual

◆ toString()

template<ScheduleType TYPE, class _Invocable , class _Params , class _Result >
std::string freetensor::ScheduleLogItemImpl< TYPE, _Invocable, _Params, _Result >::toString ( ) const
inlineoverridevirtual

◆ type()

template<ScheduleType TYPE, class _Invocable , class _Params , class _Result >
ScheduleType freetensor::ScheduleLogItemImpl< TYPE, _Invocable, _Params, _Result >::type ( ) const
inlineoverridevirtual

Member Data Documentation

◆ doSchedule_

template<ScheduleType TYPE, class _Invocable , class _Params , class _Result >
Invocable freetensor::ScheduleLogItemImpl< TYPE, _Invocable, _Params, _Result >::doSchedule_
protected

◆ lock_

template<ScheduleType TYPE, class _Invocable , class _Params , class _Result >
std::mutex freetensor::ScheduleLogItemImpl< TYPE, _Invocable, _Params, _Result >::lock_
protected

◆ params_

template<ScheduleType TYPE, class _Invocable , class _Params , class _Result >
Params freetensor::ScheduleLogItemImpl< TYPE, _Invocable, _Params, _Result >::params_
protected

◆ result_

template<ScheduleType TYPE, class _Invocable , class _Params , class _Result >
std::variant<std::nullopt_t, Result, std::exception_ptr> freetensor::ScheduleLogItemImpl< TYPE, _Invocable, _Params, _Result >::result_
protected
Initial value:
=
std::nullopt

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