#ifndef BUILDER_ATTRIBUTE_H_ #define BUILDER_ATTRIBUTE_H_ #include #include namespace builder { class PrimitiveType { public: static PrimitiveType PRED(); static PrimitiveType S8(); static PrimitiveType S16(); static PrimitiveType F32(); static PrimitiveType S32(); static PrimitiveType S64(); inline bool operator==(const PrimitiveType& pt); class Impl; std::shared_ptr GetImpl() { return impl_; } PrimitiveType(std::shared_ptr); private: std::shared_ptr impl_; // PrimitiveType(const PrimitiveType&) = default; }; class Shape { public: Shape(std::vector dims); class Impl; std::shared_ptr GetImpl() { return impl_; } private: std::shared_ptr impl_; }; class Integer { public: Integer(int value); Integer(int64_t value); class Impl; std::shared_ptr GetImpl() { return impl_; } private: std::shared_ptr impl_; }; class Float { public: Float(float value); Float(double value); class Impl; std::shared_ptr GetImpl() { return impl_; } private: std::shared_ptr impl_; }; class Array { public: Array(std::vector value); Array(std::vector value); Array(std::vector value); int64_t GetSize(); PrimitiveType GetType(); class Impl; std::shared_ptr GetImpl() { return impl_; } private: std::shared_ptr impl_; }; class Tensor { public: Tensor(Shape& shape, PrimitiveType& primitiveType); Tensor(std::vector value); Tensor(std::vector value); Tensor(std::vector value); Shape GetShape(); PrimitiveType GetType(); class Impl; std::shared_ptr GetImpl() { return impl_; } private: std::shared_ptr impl_; }; class TensorInt { public: TensorInt(Shape& shape, PrimitiveType& primitiveType); Shape GetShape(); PrimitiveType GetType(); class Impl; std::shared_ptr GetImpl() { return impl_; } private: std::shared_ptr impl_; }; class Type { public: Type(Shape& shape, PrimitiveType& primitiveType); class Impl; std::shared_ptr GetImpl() { return impl_; } private: std::shared_ptr impl_; }; class ChannelHandle { public: ChannelHandle(); class Impl; std::shared_ptr GetImpl() { return impl_; } private: std::shared_ptr impl_; }; class ConvDimensionNumbers { public: ConvDimensionNumbers(); class Impl; std::shared_ptr GetImpl() { return impl_; } private: std::shared_ptr impl_; }; class DotDimensionNumbers { public: DotDimensionNumbers(); class Impl; std::shared_ptr GetImpl() { return impl_; } private: std::shared_ptr impl_; }; class GatherDimensionNumbers { public: GatherDimensionNumbers(); class Impl; std::shared_ptr GetImpl() { return impl_; } private: std::shared_ptr impl_; }; class ScatterDimensionNumbers { public: ScatterDimensionNumbers(); class Impl; std::shared_ptr GetImpl() { return impl_; } private: std::shared_ptr impl_; }; } // namespace builder #endif