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


#ifndef FLATBUFFERS_GENERATED_ASSETA_BIGFOOT_FLAT_H_
#define FLATBUFFERS_GENERATED_ASSETA_BIGFOOT_FLAT_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 == 25 &&
              FLATBUFFERS_VERSION_MINOR == 12 &&
              FLATBUFFERS_VERSION_REVISION == 19,
             "Non-compatible flatbuffers version included");

#include "EASTL/unique_ptr.h"
#include "EASTL/string.h"

namespace Bigfoot {
namespace Flat {

struct AssetA;
struct AssetABuilder;
struct AssetAT;

inline const ::flatbuffers::TypeTable *AssetATypeTable();

struct AssetAT : public ::flatbuffers::NativeTable {
  typedef AssetA TableType;
  static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
    return "Bigfoot.Flat.AssetAT";
  }
  uint32_t health = 0;
  uint32_t mana = 0;
};

struct AssetA FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
  typedef AssetAT NativeTableType;
  typedef AssetABuilder Builder;
  struct Traits;
  static const ::flatbuffers::TypeTable *MiniReflectTypeTable() {
    return AssetATypeTable();
  }
  static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
    return "Bigfoot.Flat.AssetA";
  }
  enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
    VT_HEALTH = 4,
    VT_MANA = 6
  };
  uint32_t health() const {
    return GetField<uint32_t>(VT_HEALTH, 0);
  }
  uint32_t mana() const {
    return GetField<uint32_t>(VT_MANA, 0);
  }
  template <bool B = false>
  bool Verify(::flatbuffers::VerifierTemplate<B> &verifier) const {
    return VerifyTableStart(verifier) &&
           VerifyField<uint32_t>(verifier, VT_HEALTH, 4) &&
           VerifyField<uint32_t>(verifier, VT_MANA, 4) &&
           verifier.EndTable();
  }
  AssetAT *UnPack(const ::flatbuffers::resolver_function_t *_resolver = nullptr) const;
  void UnPackTo(AssetAT *_o, const ::flatbuffers::resolver_function_t *_resolver = nullptr) const;
  static ::flatbuffers::Offset<AssetA> Pack(::flatbuffers::FlatBufferBuilder &_fbb, const AssetAT* _o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr);
};

struct AssetABuilder {
  typedef AssetA Table;
  ::flatbuffers::FlatBufferBuilder &fbb_;
  ::flatbuffers::uoffset_t start_;
  void add_health(uint32_t health) {
    fbb_.AddElement<uint32_t>(AssetA::VT_HEALTH, health, 0);
  }
  void add_mana(uint32_t mana) {
    fbb_.AddElement<uint32_t>(AssetA::VT_MANA, mana, 0);
  }
  explicit AssetABuilder(::flatbuffers::FlatBufferBuilder &_fbb)
        : fbb_(_fbb) {
    start_ = fbb_.StartTable();
  }
  ::flatbuffers::Offset<AssetA> Finish() {
    const auto end = fbb_.EndTable(start_);
    auto o = ::flatbuffers::Offset<AssetA>(end);
    return o;
  }
};

inline ::flatbuffers::Offset<AssetA> CreateAssetA(
    ::flatbuffers::FlatBufferBuilder &_fbb,
    uint32_t health = 0,
    uint32_t mana = 0) {
  AssetABuilder builder_(_fbb);
  builder_.add_mana(mana);
  builder_.add_health(health);
  return builder_.Finish();
}

struct AssetA::Traits {
  using type = AssetA;
  static auto constexpr Create = CreateAssetA;
};

::flatbuffers::Offset<AssetA> CreateAssetA(::flatbuffers::FlatBufferBuilder &_fbb, const AssetAT *_o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr);

inline AssetAT *AssetA::UnPack(const ::flatbuffers::resolver_function_t *_resolver) const {
  auto _o = std::make_unique<AssetAT>();
  UnPackTo(_o.get(), _resolver);
  return _o.release();
}

inline void AssetA::UnPackTo(AssetAT *_o, const ::flatbuffers::resolver_function_t *_resolver) const {
  (void)_o;
  (void)_resolver;
  { auto _e = health(); _o->health = _e; }
  { auto _e = mana(); _o->mana = _e; }
}

inline ::flatbuffers::Offset<AssetA> CreateAssetA(::flatbuffers::FlatBufferBuilder &_fbb, const AssetAT *_o, const ::flatbuffers::rehasher_function_t *_rehasher) {
  return AssetA::Pack(_fbb, _o, _rehasher);
}

inline ::flatbuffers::Offset<AssetA> AssetA::Pack(::flatbuffers::FlatBufferBuilder &_fbb, const AssetAT* _o, const ::flatbuffers::rehasher_function_t *_rehasher) {
  (void)_rehasher;
  (void)_o;
  struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const AssetAT* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
  auto _health = _o->health;
  auto _mana = _o->mana;
  return Bigfoot::Flat::CreateAssetA(
      _fbb,
      _health,
      _mana);
}

inline const ::flatbuffers::TypeTable *AssetATypeTable() {
  static const ::flatbuffers::TypeCode type_codes[] = {
    { ::flatbuffers::ET_UINT, 0, -1 },
    { ::flatbuffers::ET_UINT, 0, -1 }
  };
  static const char * const names[] = {
    "health",
    "mana"
  };
  static const ::flatbuffers::TypeTable tt = {
    ::flatbuffers::ST_TABLE, 2, type_codes, nullptr, nullptr, nullptr, names
  };
  return &tt;
}

inline const Bigfoot::Flat::AssetA *GetAssetA(const void *buf) {
  return ::flatbuffers::GetRoot<Bigfoot::Flat::AssetA>(buf);
}

inline const Bigfoot::Flat::AssetA *GetSizePrefixedAssetA(const void *buf) {
  return ::flatbuffers::GetSizePrefixedRoot<Bigfoot::Flat::AssetA>(buf);
}

template <bool B = false>
inline bool VerifyAssetABuffer(
    ::flatbuffers::VerifierTemplate<B> &verifier) {
  return verifier.template VerifyBuffer<Bigfoot::Flat::AssetA>(nullptr);
}

template <bool B = false>
inline bool VerifySizePrefixedAssetABuffer(
    ::flatbuffers::VerifierTemplate<B> &verifier) {
  return verifier.template VerifySizePrefixedBuffer<Bigfoot::Flat::AssetA>(nullptr);
}

inline const char *AssetAExtension() {
  return "bfbs";
}

inline void FinishAssetABuffer(
    ::flatbuffers::FlatBufferBuilder &fbb,
    ::flatbuffers::Offset<Bigfoot::Flat::AssetA> root) {
  fbb.Finish(root);
}

inline void FinishSizePrefixedAssetABuffer(
    ::flatbuffers::FlatBufferBuilder &fbb,
    ::flatbuffers::Offset<Bigfoot::Flat::AssetA> root) {
  fbb.FinishSizePrefixed(root);
}

inline eastl::unique_ptr<Bigfoot::Flat::AssetAT> UnPackAssetA(
    const void *buf,
    const ::flatbuffers::resolver_function_t *res = nullptr) {
  return eastl::unique_ptr<Bigfoot::Flat::AssetAT>(GetAssetA(buf)->UnPack(res));
}

inline eastl::unique_ptr<Bigfoot::Flat::AssetAT> UnPackSizePrefixedAssetA(
    const void *buf,
    const ::flatbuffers::resolver_function_t *res = nullptr) {
  return eastl::unique_ptr<Bigfoot::Flat::AssetAT>(GetSizePrefixedAssetA(buf)->UnPack(res));
}

}  // namespace Flat
}  // namespace Bigfoot

#endif  // FLATBUFFERS_GENERATED_ASSETA_BIGFOOT_FLAT_H_
