// automatically generated by the FlatBuffers compiler, do not modify


#ifndef FLATBUFFERS_GENERATED_MATMULATTRIBUTES_HIPDNN_FLATBUFFERS_SDK_DATA_OBJECTS_H_
#define FLATBUFFERS_GENERATED_MATMULATTRIBUTES_HIPDNN_FLATBUFFERS_SDK_DATA_OBJECTS_H_

#include "flatbuffers/flatbuffers.h"

// Ensure the included flatbuffers.h is the same version as when this file was
// generated, otherwise it may not be compatible.
static_assert(FLATBUFFERS_VERSION_MAJOR == 24 &&
              FLATBUFFERS_VERSION_MINOR == 12 &&
              FLATBUFFERS_VERSION_REVISION == 23,
             "Non-compatible flatbuffers version included");

namespace hipdnn_flatbuffers_sdk {
namespace data_objects {

struct MatmulAttributes;
struct MatmulAttributesBuilder;
struct MatmulAttributesT;

bool operator==(const MatmulAttributesT &lhs, const MatmulAttributesT &rhs);
bool operator!=(const MatmulAttributesT &lhs, const MatmulAttributesT &rhs);

struct MatmulAttributesT : public ::flatbuffers::NativeTable {
  typedef MatmulAttributes TableType;
  int64_t a_tensor_uid = 0;
  int64_t b_tensor_uid = 0;
  int64_t c_tensor_uid = 0;
};

struct MatmulAttributes FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
  typedef MatmulAttributesT NativeTableType;
  typedef MatmulAttributesBuilder Builder;
  enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
    VT_A_TENSOR_UID = 4,
    VT_B_TENSOR_UID = 6,
    VT_C_TENSOR_UID = 8
  };
  int64_t a_tensor_uid() const {
    return GetField<int64_t>(VT_A_TENSOR_UID, 0);
  }
  bool mutate_a_tensor_uid(int64_t _a_tensor_uid = 0) {
    return SetField<int64_t>(VT_A_TENSOR_UID, _a_tensor_uid, 0);
  }
  int64_t b_tensor_uid() const {
    return GetField<int64_t>(VT_B_TENSOR_UID, 0);
  }
  bool mutate_b_tensor_uid(int64_t _b_tensor_uid = 0) {
    return SetField<int64_t>(VT_B_TENSOR_UID, _b_tensor_uid, 0);
  }
  int64_t c_tensor_uid() const {
    return GetField<int64_t>(VT_C_TENSOR_UID, 0);
  }
  bool mutate_c_tensor_uid(int64_t _c_tensor_uid = 0) {
    return SetField<int64_t>(VT_C_TENSOR_UID, _c_tensor_uid, 0);
  }
  bool Verify(::flatbuffers::Verifier &verifier) const {
    return VerifyTableStart(verifier) &&
           VerifyField<int64_t>(verifier, VT_A_TENSOR_UID, 8) &&
           VerifyField<int64_t>(verifier, VT_B_TENSOR_UID, 8) &&
           VerifyField<int64_t>(verifier, VT_C_TENSOR_UID, 8) &&
           verifier.EndTable();
  }
  MatmulAttributesT *UnPack(const ::flatbuffers::resolver_function_t *_resolver = nullptr) const;
  void UnPackTo(MatmulAttributesT *_o, const ::flatbuffers::resolver_function_t *_resolver = nullptr) const;
  static ::flatbuffers::Offset<MatmulAttributes> Pack(::flatbuffers::FlatBufferBuilder &_fbb, const MatmulAttributesT* _o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr);
};

struct MatmulAttributesBuilder {
  typedef MatmulAttributes Table;
  ::flatbuffers::FlatBufferBuilder &fbb_;
  ::flatbuffers::uoffset_t start_;
  void add_a_tensor_uid(int64_t a_tensor_uid) {
    fbb_.AddElement<int64_t>(MatmulAttributes::VT_A_TENSOR_UID, a_tensor_uid, 0);
  }
  void add_b_tensor_uid(int64_t b_tensor_uid) {
    fbb_.AddElement<int64_t>(MatmulAttributes::VT_B_TENSOR_UID, b_tensor_uid, 0);
  }
  void add_c_tensor_uid(int64_t c_tensor_uid) {
    fbb_.AddElement<int64_t>(MatmulAttributes::VT_C_TENSOR_UID, c_tensor_uid, 0);
  }
  explicit MatmulAttributesBuilder(::flatbuffers::FlatBufferBuilder &_fbb)
        : fbb_(_fbb) {
    start_ = fbb_.StartTable();
  }
  ::flatbuffers::Offset<MatmulAttributes> Finish() {
    const auto end = fbb_.EndTable(start_);
    auto o = ::flatbuffers::Offset<MatmulAttributes>(end);
    return o;
  }
};

inline ::flatbuffers::Offset<MatmulAttributes> CreateMatmulAttributes(
    ::flatbuffers::FlatBufferBuilder &_fbb,
    int64_t a_tensor_uid = 0,
    int64_t b_tensor_uid = 0,
    int64_t c_tensor_uid = 0) {
  MatmulAttributesBuilder builder_(_fbb);
  builder_.add_c_tensor_uid(c_tensor_uid);
  builder_.add_b_tensor_uid(b_tensor_uid);
  builder_.add_a_tensor_uid(a_tensor_uid);
  return builder_.Finish();
}

::flatbuffers::Offset<MatmulAttributes> CreateMatmulAttributes(::flatbuffers::FlatBufferBuilder &_fbb, const MatmulAttributesT *_o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr);


inline bool operator==(const MatmulAttributesT &lhs, const MatmulAttributesT &rhs) {
  return
      (lhs.a_tensor_uid == rhs.a_tensor_uid) &&
      (lhs.b_tensor_uid == rhs.b_tensor_uid) &&
      (lhs.c_tensor_uid == rhs.c_tensor_uid);
}

inline bool operator!=(const MatmulAttributesT &lhs, const MatmulAttributesT &rhs) {
    return !(lhs == rhs);
}


inline MatmulAttributesT *MatmulAttributes::UnPack(const ::flatbuffers::resolver_function_t *_resolver) const {
  auto _o = std::unique_ptr<MatmulAttributesT>(new MatmulAttributesT());
  UnPackTo(_o.get(), _resolver);
  return _o.release();
}

inline void MatmulAttributes::UnPackTo(MatmulAttributesT *_o, const ::flatbuffers::resolver_function_t *_resolver) const {
  (void)_o;
  (void)_resolver;
  { auto _e = a_tensor_uid(); _o->a_tensor_uid = _e; }
  { auto _e = b_tensor_uid(); _o->b_tensor_uid = _e; }
  { auto _e = c_tensor_uid(); _o->c_tensor_uid = _e; }
}

inline ::flatbuffers::Offset<MatmulAttributes> MatmulAttributes::Pack(::flatbuffers::FlatBufferBuilder &_fbb, const MatmulAttributesT* _o, const ::flatbuffers::rehasher_function_t *_rehasher) {
  return CreateMatmulAttributes(_fbb, _o, _rehasher);
}

inline ::flatbuffers::Offset<MatmulAttributes> CreateMatmulAttributes(::flatbuffers::FlatBufferBuilder &_fbb, const MatmulAttributesT *_o, const ::flatbuffers::rehasher_function_t *_rehasher) {
  (void)_rehasher;
  (void)_o;
  struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const MatmulAttributesT* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
  auto _a_tensor_uid = _o->a_tensor_uid;
  auto _b_tensor_uid = _o->b_tensor_uid;
  auto _c_tensor_uid = _o->c_tensor_uid;
  return hipdnn_flatbuffers_sdk::data_objects::CreateMatmulAttributes(
      _fbb,
      _a_tensor_uid,
      _b_tensor_uid,
      _c_tensor_uid);
}

}  // namespace data_objects
}  // namespace hipdnn_flatbuffers_sdk

#endif  // FLATBUFFERS_GENERATED_MATMULATTRIBUTES_HIPDNN_FLATBUFFERS_SDK_DATA_OBJECTS_H_
