1#ifndef FREE_TENSOR_METADATA_H
2#define FREE_TENSOR_METADATA_H
8#include <unordered_set>
29 virtual void print(std::ostream &os,
bool printLocation,
30 int nIndent)
const = 0;
32 virtual size_t hash()
const = 0;
56 std::vector<Metadata> sources_;
60 const std::vector<Metadata>
sources);
66 void print(std::ostream &os,
bool printLocation,
67 int nIndent)
const override;
69 size_t hash()
const override;
72 const std::string &
op()
const {
return op_; }
73 const std::vector<Metadata> &
sources()
const {
return sources_; }
78 const std::vector<Metadata> &sources);
81 std::vector<std::string> labels_;
82 std::unordered_set<std::string> labelsSet_;
83 std::optional<std::pair<std::string, int>> location_;
88 const std::vector<std::string> &
labels,
89 const std::optional<std::pair<std::string, int>> &location,
94 const std::vector<std::string> &
labels()
const {
return labels_; }
95 const std::unordered_set<std::string> &
labelsSet()
const {
102 void print(std::ostream &os,
bool printLocation,
103 int nIndent)
const override;
105 size_t hash()
const override;
112 const std::optional<std::pair<std::string, int>> &location,
123 void print(std::ostream &os,
bool printLocation,
124 int nIndent)
const override;
126 size_t hash()
const override;
Definition: metadata.h:115
bool sameAs(const MetadataContent &other) const override
Definition: metadata.cc:206
MetadataType getType() const override
Definition: metadata.h:121
~AnonymousMetadataContent() override=default
ID id() const
Definition: metadata.h:129
void print(std::ostream &os, bool printLocation, int nIndent) const override
Definition: metadata.cc:189
size_t hash() const override
Definition: metadata.cc:200
bool printByDefault() const override
Definition: metadata.h:122
Definition: metadata.h:23
virtual bool sameAs(const MetadataContent &other) const =0
virtual void print(std::ostream &os, bool printLocation, int nIndent) const =0
virtual MetadataType getType() const =0
virtual size_t hash() const =0
virtual bool printByDefault() const =0
friend bool operator==(const MetadataContent &lhs, const MetadataContent &rhs)
Definition: metadata.h:34
virtual ~MetadataContent()
Definition: metadata.h:25
Definition: func_utils.h:9
Definition: metadata.h:80
size_t hash() const override
Definition: metadata.cc:144
const std::vector< std::string > & labels() const
Definition: metadata.h:94
MetadataType getType() const override
Definition: metadata.h:100
bool printByDefault() const override
Definition: metadata.h:101
bool sameAs(const MetadataContent &other) const override
Definition: metadata.cc:159
const std::unordered_set< std::string > & labelsSet() const
Definition: metadata.h:95
const Metadata & caller() const
Definition: metadata.h:98
void print(std::ostream &os, bool printLocation, int nIndent) const override
Definition: metadata.cc:128
~SourceMetadataContent() override=default
Definition: metadata.h:54
bool sameAs(const MetadataContent &other) const override
Definition: metadata.cc:95
size_t hash() const override
Definition: metadata.cc:86
bool printByDefault() const override
Definition: metadata.h:65
const std::string & op() const
Definition: metadata.h:72
const std::vector< Metadata > & sources() const
Definition: metadata.h:73
void print(std::ostream &os, bool printLocation, int nIndent) const override
Definition: metadata.cc:75
~TransformedMetadataContent() override=default
MetadataType getType() const override
Definition: metadata.h:64
Definition: allocator.h:9
auto && lhs
Definition: const_fold.cc:70
auto makeMetadata(const std::string &op, Srcs &&...sourceStmts)
Definition: ast.h:315
std::ostream & manipMetadataMultiLine(std::ostream &)
Definition: metadata.cc:46
std::ostream & manipMetadataNoId(std::ostream &os)
Definition: metadata.cc:51
std::ostream & manipMetadataSkipLocation(std::ostream &)
Definition: metadata.cc:33
Ref< MetadataContent > Metadata
Definition: metadata.h:39
std::string toString(const AST &op)
Definition: print_ast.cc:784
std::ostream & manipMetadataPrintId(std::ostream &os)
Definition: metadata.cc:55
MetadataType
Definition: metadata.h:17
std::ostream & manipMetadataWithLocation(std::ostream &)
Definition: metadata.cc:37
auto auto && rhs
Definition: const_fold.cc:70
std::ostream & operator<<(std::ostream &os, const Dependence &dep)
Definition: deps.cc:1404
std::ostream & manipMetadataOneLine(std::ostream &)
Definition: metadata.cc:42
size_t operator()(const freetensor::MetadataContent &md) const
Definition: metadata.h:142