37 ::collection::index m_iItem;
38 ::collection::index m_iSubItem;
39 ::collection::index m_iListItem;
43 constexpr item_t(const ::e_element & eelement = e_element_none, ::collection::index iItem = -1, ::collection::index iSubItem = -1, ::collection::index iListItem = -1) :
52 inline item_t(const ::item_t &
item) =
default;
54 inline item_t(const ::item * pitem);
56 constexpr bool operator == (const ::item_t &
item)
const
60 m_eelement ==
item.m_eelement
61 && m_iItem ==
item.m_iItem
62 && m_iSubItem ==
item.m_iSubItem
63 && m_iListItem ==
item.m_iListItem;
67 constexpr bool is_item_set()
const
70 return m_iItem >= 0 ||
72 m_eelement != e_element_none
73 && m_eelement != e_element_item
79 operator hash32()
const {
return { (
const void *)
this,
sizeof(item_t) }; }
91class CLASS_DECL_ACME item :
92 virtual public ::matter
99 ::e_item_flag m_eitemflag;
111 item(::enum_item_flag eitemflag, const ::e_element & eelement, ::collection::index iItem = -1, ::collection::index iSubItem = -1, ::collection::index iListItem = -1, const ::atom &
atom = ::atom::e_type_null) :
112 item(eelement, iItem, iSubItem, iListItem,
atom, eitemflag)
120 item(const ::e_element & eelement, const ::atom &
atom)
127 item(const ::e_element & eelement, enum_id eid)
128 : item(eelement, -1, -1, -1, (const ::atom &) eid)
134 item(const ::e_element & eelement = ::e_element_none, ::collection::index iItem = -1, ::collection::index iSubItem = -1, ::collection::index iListItem = -1, const ::atom &
atom = ::atom::e_type_null, ::enum_item_flag eitemflag = ::e_item_flag_none) :
135 m_item(eelement, iItem, iSubItem, iListItem),
136 m_eitem(e_item_none),
137 m_eitemflag(eitemflag)
143 item(const ::item_t & item, ::enum_item_flag eitemflag = ::e_item_flag_none) :
145 m_eitem(e_item_none),
146 m_eitemflag(eitemflag)
163 item(
const item & item) :
167 m_eitem(item.m_eitem),
168 m_eitemflag(item.m_eitemflag),
180 particle(::transfer(item)),
181 m_item(::transfer(item.m_item)),
182 m_eitem(::transfer(item.m_eitem)),
183 m_eitemflag(::transfer(item.m_eitemflag)),
187 matter(::transfer(item))
193 void get_debug_title(char_pointer sz, character_count c)
const override;
195 bool _is_set()
const override;
197 bool is_item_set()
const {
return m_atomMatterId.is_set() || m_item.m_eelement != ::e_element_none; }
199 explicit operator bool()
const {
return is_item_set(); }
208 virtual ::string get_item_text(::user::item_base * puseritembase, ::collection::index iSubItem = 0);
209 virtual ::collection::index get_item_image(::user::item_base * puseritembase, ::collection::index iSubItem = 0);
210 virtual ::image::image_list * get_item_image_list(::user::item_base * puseritembase, ::collection::index iSubItem = 0);
269 item & operator = (
const item & item)
272 m_item = item.m_item;
273 m_eitem = item.m_eitem;
274 m_eitemflag = item.m_eitemflag;
285 bool operator == (
const item & item)
const {
return m_item == item.m_item; }
294 item& operator = (
const e_element& eelement);
296 bool operator == (
const e_element & eelement)
const {
return m_item.m_eelement == eelement; }
299 item & operator = (::collection::index iItem);
301 bool operator == (::collection::index iItem)
const {
return m_item.m_iItem == iItem; }
304 std::strong_ordering operator <= (::collection::index iItem)
const {
return m_item.m_iItem <=> iItem; }
310 ::collection::index operator + (::i32 iItemAdd) {
return (::collection::index) (m_item.m_iItem + iItemAdd); }
311 ::collection::index operator - (::i32 iItemSub) {
return (::collection::index) (m_item.m_iItem - iItemSub); }
313 ::collection::index operator + (::i64 iItemAdd) {
return (::collection::index) (m_item.m_iItem + iItemAdd); }
314 ::collection::index operator - (::i64 iItemSub) {
return (::collection::index) (m_item.m_iItem - iItemSub); }
317 bool in_element_range(const ::e_element & eelement, ::i32 iCount)
const {
return m_item.m_eelement >= eelement && m_item.m_eelement < eelement + iCount; }
Definition subparticle.h:78