Commit b5e5634a authored by Kenton Varda's avatar Kenton Varda

Actually, hold off on the fixed lists for now, needs more thought.

parent cfbe1abe
......@@ -196,19 +196,6 @@ struct Field {
typeId @7 :Id;
# The ID of the group's node.
}
fixedList :group {
# A fixed list stored inline within the struct.
startOffset @10 :UInt32;
# Offset of the first element, measured in the same way as for slot fields.
count @11 :UInt8;
# Number of elements.
elementType @12 :Type;
# Type of each element.
}
}
ordinal :union {
......
......@@ -762,77 +762,70 @@ const ::capnp::_::RawSchema s_ec1619d4400a0290 = {
0xec1619d4400a0290, b_ec1619d4400a0290.words, 214, d_ec1619d4400a0290, m_ec1619d4400a0290,
2, 13, i_ec1619d4400a0290, nullptr, nullptr
};
static const ::capnp::_::AlignedData<113> b_9aad50a41f4af45f = {
static const ::capnp::_::AlignedData<104> b_9aad50a41f4af45f = {
{ 0, 0, 0, 0, 5, 0, 5, 0,
95, 244, 74, 31, 164, 80, 173, 154,
0, 0, 0, 0, 1, 0, 3, 0,
217, 114, 76, 98, 9, 197, 63, 169,
4, 0, 7, 0, 0, 0, 3, 0,
4, 0, 7, 0, 0, 0, 2, 0,
4, 0, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 202, 0, 0, 0,
29, 0, 0, 0, 7, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 199, 1, 0, 0,
25, 0, 0, 0, 143, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
99, 97, 112, 110, 112, 47, 115, 99,
104, 101, 109, 97, 46, 99, 97, 112,
110, 112, 58, 70, 105, 101, 108, 100,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 1, 0,
32, 0, 0, 0, 3, 0, 4, 0,
28, 0, 0, 0, 3, 0, 4, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
209, 0, 0, 0, 42, 0, 0, 0,
181, 0, 0, 0, 42, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
204, 0, 0, 0, 2, 0, 1, 0,
212, 0, 0, 0, 2, 0, 1, 0,
176, 0, 0, 0, 2, 0, 1, 0,
184, 0, 0, 0, 2, 0, 1, 0,
1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
209, 0, 0, 0, 82, 0, 0, 0,
181, 0, 0, 0, 82, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
208, 0, 0, 0, 2, 0, 1, 0,
216, 0, 0, 0, 2, 0, 1, 0,
180, 0, 0, 0, 2, 0, 1, 0,
188, 0, 0, 0, 2, 0, 1, 0,
2, 0, 0, 0, 1, 0, 0, 0,
0, 0, 1, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
213, 0, 0, 0, 98, 0, 0, 0,
185, 0, 0, 0, 98, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
212, 0, 0, 0, 2, 0, 1, 0,
232, 0, 0, 0, 2, 0, 1, 0,
184, 0, 0, 0, 2, 0, 1, 0,
204, 0, 0, 0, 2, 0, 1, 0,
3, 0, 0, 0, 1, 0, 0, 0,
0, 0, 1, 0, 3, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
229, 0, 0, 0, 146, 0, 0, 0,
201, 0, 0, 0, 146, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
232, 0, 0, 0, 2, 0, 1, 0,
240, 0, 0, 0, 2, 0, 1, 0,
204, 0, 0, 0, 2, 0, 1, 0,
212, 0, 0, 0, 2, 0, 1, 0,
4, 0, 255, 255, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0,
111, 116, 180, 107, 71, 5, 35, 196,
237, 0, 0, 0, 42, 0, 0, 0,
209, 0, 0, 0, 42, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
5, 0, 254, 255, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0,
17, 29, 219, 104, 219, 205, 252, 202,
213, 0, 0, 0, 50, 0, 0, 0,
185, 0, 0, 0, 50, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
7, 0, 0, 0, 0, 0, 0, 0,
6, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0,
230, 11, 135, 135, 194, 213, 144, 187,
189, 0, 0, 0, 66, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
6, 0, 253, 255, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0,
1, 119, 253, 46, 116, 0, 209, 144,
165, 0, 0, 0, 82, 0, 0, 0,
161, 0, 0, 0, 66, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
......@@ -873,22 +866,19 @@ static const ::capnp::_::AlignedData<113> b_9aad50a41f4af45f = {
0, 0, 0, 0, 0, 0, 0, 0,
115, 108, 111, 116, 0, 0, 0, 0,
103, 114, 111, 117, 112, 0, 0, 0,
111, 114, 100, 105, 110, 97, 108, 0,
102, 105, 120, 101, 100, 76, 105, 115,
116, 0, 0, 0, 0, 0, 0, 0, }
111, 114, 100, 105, 110, 97, 108, 0, }
};
static const ::capnp::_::RawSchema* const d_9aad50a41f4af45f[] = {
&s_90d100742efd7701,
&s_bb90d5c287870be6,
&s_c42305476bb4746f,
&s_cafccddb68db1d11,
&s_f1c8950dab257542,
};
static const uint16_t m_9aad50a41f4af45f[] = {2, 1, 3, 7, 5, 0, 6, 4};
static const uint16_t i_9aad50a41f4af45f[] = {4, 5, 7, 0, 1, 2, 3, 6};
static const uint16_t m_9aad50a41f4af45f[] = {2, 1, 3, 5, 0, 6, 4};
static const uint16_t i_9aad50a41f4af45f[] = {4, 5, 0, 1, 2, 3, 6};
const ::capnp::_::RawSchema s_9aad50a41f4af45f = {
0x9aad50a41f4af45f, b_9aad50a41f4af45f.words, 113, d_9aad50a41f4af45f, m_9aad50a41f4af45f,
5, 8, i_9aad50a41f4af45f, nullptr, nullptr
0x9aad50a41f4af45f, b_9aad50a41f4af45f.words, 104, d_9aad50a41f4af45f, m_9aad50a41f4af45f,
4, 7, i_9aad50a41f4af45f, nullptr, nullptr
};
static const ::capnp::_::AlignedData<59> b_c42305476bb4746f = {
{ 0, 0, 0, 0, 5, 0, 5, 0,
......@@ -1061,79 +1051,6 @@ const ::capnp::_::RawSchema s_bb90d5c287870be6 = {
0xbb90d5c287870be6, b_bb90d5c287870be6.words, 47, d_bb90d5c287870be6, m_bb90d5c287870be6,
1, 2, i_bb90d5c287870be6, nullptr, nullptr
};
static const ::capnp::_::AlignedData<61> b_90d100742efd7701 = {
{ 0, 0, 0, 0, 5, 0, 5, 0,
1, 119, 253, 46, 116, 0, 209, 144,
25, 0, 0, 0, 1, 0, 3, 0,
95, 244, 74, 31, 164, 80, 173, 154,
4, 0, 7, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
17, 0, 0, 0, 26, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
25, 0, 0, 0, 175, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
99, 97, 112, 110, 112, 47, 115, 99,
104, 101, 109, 97, 46, 99, 97, 112,
110, 112, 58, 70, 105, 101, 108, 100,
46, 102, 105, 120, 101, 100, 76, 105,
115, 116, 0, 0, 0, 0, 0, 0,
12, 0, 0, 0, 3, 0, 4, 0,
0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 1, 0, 10, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
69, 0, 0, 0, 98, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
68, 0, 0, 0, 2, 0, 1, 0,
76, 0, 0, 0, 2, 0, 1, 0,
1, 0, 0, 0, 16, 0, 0, 0,
0, 0, 1, 0, 11, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
73, 0, 0, 0, 50, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
68, 0, 0, 0, 2, 0, 1, 0,
76, 0, 0, 0, 2, 0, 1, 0,
2, 0, 0, 0, 2, 0, 0, 0,
0, 0, 1, 0, 12, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
73, 0, 0, 0, 98, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
72, 0, 0, 0, 2, 0, 1, 0,
80, 0, 0, 0, 2, 0, 1, 0,
115, 116, 97, 114, 116, 79, 102, 102,
115, 101, 116, 0, 0, 0, 0, 0,
8, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
8, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
99, 111, 117, 110, 116, 0, 0, 0,
6, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
6, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
101, 108, 101, 109, 101, 110, 116, 84,
121, 112, 101, 0, 0, 0, 0, 0,
16, 0, 0, 0, 0, 0, 0, 0,
96, 204, 249, 225, 237, 120, 115, 208,
0, 0, 0, 0, 0, 0, 0, 0,
16, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, }
};
static const ::capnp::_::RawSchema* const d_90d100742efd7701[] = {
&s_9aad50a41f4af45f,
&s_d07378ede1f9cc60,
};
static const uint16_t m_90d100742efd7701[] = {1, 2, 0};
static const uint16_t i_90d100742efd7701[] = {0, 1, 2};
const ::capnp::_::RawSchema s_90d100742efd7701 = {
0x90d100742efd7701, b_90d100742efd7701.words, 61, d_90d100742efd7701, m_90d100742efd7701,
2, 3, i_90d100742efd7701, nullptr, nullptr
};
static const ::capnp::_::AlignedData<64> b_978a7cebdc549a4d = {
{ 0, 0, 0, 0, 5, 0, 5, 0,
77, 154, 84, 220, 235, 124, 138, 151,
......@@ -2512,8 +2429,6 @@ CAPNP_DEFINE_STRUCT(
::capnp::schema::Field::Group);
CAPNP_DEFINE_STRUCT(
::capnp::schema::Field::Ordinal);
CAPNP_DEFINE_STRUCT(
::capnp::schema::Field::FixedList);
CAPNP_DEFINE_STRUCT(
::capnp::schema::Enumerant);
CAPNP_DEFINE_STRUCT(
......
......@@ -85,12 +85,10 @@ struct Field {
enum Which: uint16_t {
SLOT,
GROUP,
FIXED_LIST,
};
struct Slot;
struct Group;
struct Ordinal;
struct FixedList;
};
struct Field::Slot {
......@@ -118,13 +116,6 @@ struct Field::Ordinal {
};
};
struct Field::FixedList {
FixedList() = delete;
class Reader;
class Builder;
};
struct Enumerant {
Enumerant() = delete;
......@@ -295,7 +286,6 @@ extern const ::capnp::_::RawSchema s_9aad50a41f4af45f;
extern const ::capnp::_::RawSchema s_c42305476bb4746f;
extern const ::capnp::_::RawSchema s_cafccddb68db1d11;
extern const ::capnp::_::RawSchema s_bb90d5c287870be6;
extern const ::capnp::_::RawSchema s_90d100742efd7701;
extern const ::capnp::_::RawSchema s_978a7cebdc549a4d;
extern const ::capnp::_::RawSchema s_9500cce23b334d80;
extern const ::capnp::_::RawSchema s_cbc0c86dae91fcf6;
......@@ -347,9 +337,6 @@ CAPNP_DECLARE_STRUCT(
CAPNP_DECLARE_STRUCT(
::capnp::schema::Field::Ordinal, bb90d5c287870be6,
3, 4, INLINE_COMPOSITE);
CAPNP_DECLARE_STRUCT(
::capnp::schema::Field::FixedList, 90d100742efd7701,
3, 4, INLINE_COMPOSITE);
CAPNP_DECLARE_STRUCT(
::capnp::schema::Enumerant, 978a7cebdc549a4d,
1, 2, INLINE_COMPOSITE);
......@@ -1102,10 +1089,6 @@ public:
inline bool hasOrdinal() const;
inline Ordinal::Reader getOrdinal() const;
inline bool isFixedList() const;
inline bool hasFixedList() const;
inline FixedList::Reader getFixedList() const;
private:
::capnp::_::StructReader _reader;
template <typename T, ::capnp::Kind k>
......@@ -1171,11 +1154,6 @@ public:
inline Ordinal::Builder getOrdinal();
inline Ordinal::Builder initOrdinal();
inline bool isFixedList();
inline bool hasFixedList();
inline FixedList::Builder getFixedList();
inline FixedList::Builder initFixedList();
private:
::capnp::_::StructBuilder _builder;
template <typename T, ::capnp::Kind k>
......@@ -1395,81 +1373,6 @@ inline ::kj::StringTree KJ_STRINGIFY(Field::Ordinal::Builder builder) {
return ::capnp::_::structString<Field::Ordinal>(builder._builder.asReader());
}
class Field::FixedList::Reader {
public:
typedef FixedList Reads;
Reader() = default;
inline explicit Reader(::capnp::_::StructReader base): _reader(base) {}
inline size_t totalSizeInWords() const {
return _reader.totalSize() / ::capnp::WORDS;
}
inline bool hasStartOffset() const;
inline ::uint32_t getStartOffset() const;
inline bool hasCount() const;
inline ::uint8_t getCount() const;
inline bool hasElementType() const;
inline ::capnp::schema::Type::Reader getElementType() const;
private:
::capnp::_::StructReader _reader;
template <typename T, ::capnp::Kind k>
friend struct ::capnp::ToDynamic_;
template <typename T, ::capnp::Kind k>
friend struct ::capnp::_::PointerHelpers;
template <typename T, ::capnp::Kind k>
friend struct ::capnp::List;
friend class ::capnp::MessageBuilder;
friend class ::capnp::Orphanage;
friend ::kj::StringTree KJ_STRINGIFY(Field::FixedList::Reader reader);
};
inline ::kj::StringTree KJ_STRINGIFY(Field::FixedList::Reader reader) {
return ::capnp::_::structString<Field::FixedList>(reader._reader);
}
class Field::FixedList::Builder {
public:
typedef FixedList Builds;
Builder() = default;
inline explicit Builder(::capnp::_::StructBuilder base): _builder(base) {}
inline operator Reader() const { return Reader(_builder.asReader()); }
inline Reader asReader() const { return *this; }
inline size_t totalSizeInWords() { return asReader().totalSizeInWords(); }
inline bool hasStartOffset();
inline ::uint32_t getStartOffset();
inline void setStartOffset( ::uint32_t value);
inline bool hasCount();
inline ::uint8_t getCount();
inline void setCount( ::uint8_t value);
inline bool hasElementType();
inline ::capnp::schema::Type::Builder getElementType();
inline void setElementType( ::capnp::schema::Type::Reader value);
inline ::capnp::schema::Type::Builder initElementType();
inline void adoptElementType(::capnp::Orphan< ::capnp::schema::Type>&& value);
inline ::capnp::Orphan< ::capnp::schema::Type> disownElementType();
private:
::capnp::_::StructBuilder _builder;
template <typename T, ::capnp::Kind k>
friend struct ::capnp::ToDynamic_;
friend class ::capnp::Orphanage;
friend ::kj::StringTree KJ_STRINGIFY(Field::FixedList::Builder builder);
};
inline ::kj::StringTree KJ_STRINGIFY(Field::FixedList::Builder builder) {
return ::capnp::_::structString<Field::FixedList>(builder._builder.asReader());
}
class Enumerant::Reader {
public:
typedef Enumerant Reads;
......@@ -3991,42 +3894,6 @@ inline Field::Ordinal::Builder Field::Builder::initOrdinal() {
_builder.setDataField< ::uint16_t>(6 * ::capnp::ELEMENTS, 0);
return Field::Ordinal::Builder(_builder);
}
inline bool Field::Reader::isFixedList() const {
return which() == Field::FIXED_LIST;
}
inline bool Field::Builder::isFixedList() {
return which() == Field::FIXED_LIST;
}
inline bool Field::Reader::hasFixedList() const {
if (which() != Field::FIXED_LIST) return false;
return _reader.getDataField< ::uint32_t>(1 * ::capnp::ELEMENTS) != 0
|| _reader.getDataField< ::uint8_t>(16 * ::capnp::ELEMENTS) != 0
|| !_reader.isPointerFieldNull(2 * ::capnp::POINTERS);
}
inline bool Field::Builder::hasFixedList() {
if (which() != Field::FIXED_LIST) return false;
return _builder.getDataField< ::uint32_t>(1 * ::capnp::ELEMENTS) != 0
|| _builder.getDataField< ::uint8_t>(16 * ::capnp::ELEMENTS) != 0
|| !_builder.isPointerFieldNull(2 * ::capnp::POINTERS);
}
inline Field::FixedList::Reader Field::Reader::getFixedList() const {
KJ_IREQUIRE(which() == Field::FIXED_LIST,
"Must check which() before get()ing a union member.");
return Field::FixedList::Reader(_reader);
}
inline Field::FixedList::Builder Field::Builder::getFixedList() {
KJ_IREQUIRE(which() == Field::FIXED_LIST,
"Must check which() before get()ing a union member.");
return Field::FixedList::Builder(_builder);
}
inline Field::FixedList::Builder Field::Builder::initFixedList() {
_builder.setDataField<Field::Which>(
4 * ::capnp::ELEMENTS, Field::FIXED_LIST);
_builder.setDataField< ::uint32_t>(1 * ::capnp::ELEMENTS, 0);
_builder.setDataField< ::uint8_t>(16 * ::capnp::ELEMENTS, 0);
_builder.clearPointer(2 * ::capnp::POINTERS);
return Field::FixedList::Builder(_builder);
}
inline bool Field::Slot::Reader::hasOffset() const {
return _reader.hasDataField< ::uint32_t>(1 * ::capnp::ELEMENTS);
}
......@@ -4210,80 +4077,6 @@ inline void Field::Ordinal::Builder::setExplicit( ::uint16_t value) {
6 * ::capnp::ELEMENTS, value);
}
inline bool Field::FixedList::Reader::hasStartOffset() const {
return _reader.hasDataField< ::uint32_t>(1 * ::capnp::ELEMENTS);
}
inline bool Field::FixedList::Builder::hasStartOffset() {
return _builder.hasDataField< ::uint32_t>(1 * ::capnp::ELEMENTS);
}
inline ::uint32_t Field::FixedList::Reader::getStartOffset() const {
return _reader.getDataField< ::uint32_t>(
1 * ::capnp::ELEMENTS);
}
inline ::uint32_t Field::FixedList::Builder::getStartOffset() {
return _builder.getDataField< ::uint32_t>(
1 * ::capnp::ELEMENTS);
}
inline void Field::FixedList::Builder::setStartOffset( ::uint32_t value) {
_builder.setDataField< ::uint32_t>(
1 * ::capnp::ELEMENTS, value);
}
inline bool Field::FixedList::Reader::hasCount() const {
return _reader.hasDataField< ::uint8_t>(16 * ::capnp::ELEMENTS);
}
inline bool Field::FixedList::Builder::hasCount() {
return _builder.hasDataField< ::uint8_t>(16 * ::capnp::ELEMENTS);
}
inline ::uint8_t Field::FixedList::Reader::getCount() const {
return _reader.getDataField< ::uint8_t>(
16 * ::capnp::ELEMENTS);
}
inline ::uint8_t Field::FixedList::Builder::getCount() {
return _builder.getDataField< ::uint8_t>(
16 * ::capnp::ELEMENTS);
}
inline void Field::FixedList::Builder::setCount( ::uint8_t value) {
_builder.setDataField< ::uint8_t>(
16 * ::capnp::ELEMENTS, value);
}
inline bool Field::FixedList::Reader::hasElementType() const {
return !_reader.isPointerFieldNull(2 * ::capnp::POINTERS);
}
inline bool Field::FixedList::Builder::hasElementType() {
return !_builder.isPointerFieldNull(2 * ::capnp::POINTERS);
}
inline ::capnp::schema::Type::Reader Field::FixedList::Reader::getElementType() const {
return ::capnp::_::PointerHelpers< ::capnp::schema::Type>::get(
_reader, 2 * ::capnp::POINTERS);
}
inline ::capnp::schema::Type::Builder Field::FixedList::Builder::getElementType() {
return ::capnp::_::PointerHelpers< ::capnp::schema::Type>::get(
_builder, 2 * ::capnp::POINTERS);
}
inline void Field::FixedList::Builder::setElementType( ::capnp::schema::Type::Reader value) {
::capnp::_::PointerHelpers< ::capnp::schema::Type>::set(
_builder, 2 * ::capnp::POINTERS, value);
}
inline ::capnp::schema::Type::Builder Field::FixedList::Builder::initElementType() {
return ::capnp::_::PointerHelpers< ::capnp::schema::Type>::init(
_builder, 2 * ::capnp::POINTERS);
}
inline void Field::FixedList::Builder::adoptElementType(
::capnp::Orphan< ::capnp::schema::Type>&& value) {
::capnp::_::PointerHelpers< ::capnp::schema::Type>::adopt(
_builder, 2 * ::capnp::POINTERS, kj::mv(value));
}
inline ::capnp::Orphan< ::capnp::schema::Type> Field::FixedList::Builder::disownElementType() {
return ::capnp::_::PointerHelpers< ::capnp::schema::Type>::disown(
_builder, 2 * ::capnp::POINTERS);
}
inline bool Enumerant::Reader::hasName() const {
return !_reader.isPointerFieldNull(0 * ::capnp::POINTERS);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment