Program Listing for File abstract.h

Return to documentation for file (include/converter/include/mindapi/ir/abstract.h)

#ifndef MINDSPORE_CORE_MINDAPI_IR_ABSTRACT_H_
#define MINDSPORE_CORE_MINDAPI_IR_ABSTRACT_H_

#include <cstdint>
#include <string>
#include "mindapi/base/base.h"
#include "mindapi/ir/common.h"
#include "mindapi/ir/shape.h"
#include "mindapi/ir/type.h"
#include "mindapi/ir/value.h"

namespace mindspore::api {
class MIND_API AbstractBase : public Base {
 public:
  MIND_API_BASE_MEMBER(AbstractBase);

  AbstractBasePtr Clone() const;

  TypePtr type() const;

  ValuePtr value() const;

  ShapePtr shape() const;

  void set_type(const TypePtr &type);

  void set_value(const ValuePtr &value);

  void set_shape(const ShapePtr &shape);
};

class MIND_API AbstractScalar : public AbstractBase {
 public:
  MIND_API_BASE_MEMBER(AbstractScalar);

  AbstractScalar(const ValuePtr &value, const TypePtr &type);

  explicit AbstractScalar(const TypePtr &type);

  explicit AbstractScalar(const ValuePtr &value);

  explicit AbstractScalar(int64_t value);

  explicit AbstractScalar(float value);

  explicit AbstractScalar(bool value);

  explicit AbstractScalar(const std::string &value);
};

using AbstractScalarPtr = SharedPtr<AbstractScalar>;

class MIND_API AbstractTensor : public AbstractBase {
 public:
  MIND_API_BASE_MEMBER(AbstractTensor);

  AbstractTensor(TypeId type, const ShapeVector &shape);

  AbstractBasePtr element() const;
};

using AbstractTensorPtr = SharedPtr<AbstractTensor>;

class MIND_API AbstractSequence : public AbstractBase {
 public:
  MIND_API_BASE_MEMBER(AbstractSequence);

  AbstractBasePtrList elements() const;
};

using AbstractSequencePtr = SharedPtr<AbstractSequence>;

class MIND_API AbstractTuple : public AbstractSequence {
 public:
  MIND_API_BASE_MEMBER(AbstractTuple);

  explicit AbstractTuple(const AbstractBasePtrList &elements);
};

using AbstractTuplePtr = SharedPtr<AbstractTuple>;
}  // namespace mindspore::api
#endif  // MINDSPORE_CORE_MINDAPI_IR_ABSTRACT_H_