.. _program_listing_file_src_graph_chainable.h: Program Listing for File chainable.h ==================================== |exhale_lsh| :ref:`Return to documentation for file ` (``src/graph/chainable.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include "common/definitions.h" #include #include #include namespace marian { #define NodeOp(op) [=]() { op; } typedef std::vector> NodeOps; class AutoTunerRecorder; template class Chainable; typedef IPtr> Expr; typedef IWeak> WExpr; class ExpressionGraph; template class Chainable { private: ENABLE_INTRUSIVE_PTR(Chainable) public: Chainable() {} virtual ~Chainable(){}; virtual void forward() = 0; virtual void backward() = 0; virtual NodeOps forwardOps() = 0; virtual NodeOps backwardOps() = 0; virtual void allocate() = 0; virtual void free() = 0; virtual void init() = 0; virtual void init_dependent() {} virtual void set_zero_adjoint() {} virtual bool trainable() = 0; virtual void setTrainable(bool) = 0; virtual bool memoize() = 0; virtual void setMemoize(bool) = 0; virtual void setId(size_t) = 0; virtual size_t getId() = 0; // virtual const std::string& type() = 0; virtual Ptr graph() = 0; virtual const Shape& shape() = 0; virtual const Type& value_type() = 0; virtual std::vector& children() = 0; virtual Expr child(size_t) = 0; virtual DataType& val() = 0; virtual DataType& grad() = 0; virtual float scalar() = 0; virtual const std::string type() = 0; virtual const std::string color() = 0; virtual const std::string form() = 0; virtual const std::string label() = 0; virtual std::string graphviz() = 0; virtual void set_name(const std::string&) = 0; virtual const std::string& name() const = 0; virtual void debug(const std::string& message) = 0; virtual bool marked_for_debug() = 0; virtual const std::string& debug_message() = 0; virtual size_t hash() = 0; virtual bool equal(Expr) = 0; virtual void record(Ptr, size_t, bool) = 0; virtual void markCheckpoint() = 0; virtual bool isCheckpoint() const = 0; virtual void setSubtape(Ptr>) = 0; virtual Ptr> getSubtape() = 0; }; } // namespace marian