| Time |
Nick |
Message |
| 00:04 |
|
Taoki joined #minetest-dev |
| 00:28 |
|
Fritigern joined #minetest-dev |
| 00:47 |
|
paramat joined #minetest-dev |
| 01:11 |
|
Sokomine joined #minetest-dev |
| 01:30 |
|
Cornelia joined #minetest-dev |
| 02:26 |
|
Miner_48er joined #minetest-dev |
| 04:09 |
|
paramat joined #minetest-dev |
| 04:53 |
|
reductum joined #minetest-dev |
| 07:15 |
|
paramat joined #minetest-dev |
| 08:28 |
|
pyrollo joined #minetest-dev |
| 08:42 |
ANAND |
Hi. Is there a way to compare to ItemStacks in C++? |
| 08:42 |
|
ensonic joined #minetest-dev |
| 08:42 |
ANAND |
I could do stack1.serialize() == stack2.serialize(), but I was wondering if there's a more straightforward way to do this. |
| 08:46 |
nerzhul |
you must implemented == operator |
| 08:51 |
|
Fixer joined #minetest-dev |
| 08:51 |
ANAND |
Will do |
| 08:51 |
ANAND |
What properties should it compare? |
| 08:52 |
ANAND |
I can think of name, count, and meta |
| 08:52 |
ANAND |
Anything else? |
| 08:53 |
ANAND |
Oh yeah, wear |
| 08:55 |
ANAND |
Why is ItemStack a struct instead of a class, btw? |
| 09:17 |
|
pyrollo joined #minetest-dev |
| 10:02 |
nerzhul |
attribtes are public ? |
| 10:18 |
ANAND |
Yes, but why? |
| 10:54 |
|
fwhcat joined #minetest-dev |
| 11:02 |
nerzhul |
historical and not refactored if needed ? |
| 11:04 |
sfan5 |
ANAND: https://github.com/minetest/minetest/blob/master/src/inventory.cpp#L515-L516 |
| 11:04 |
sfan5 |
this is what it should compare |
| 11:05 |
|
Wuzzy joined #minetest-dev |
| 13:19 |
|
fwhcat joined #minetest-dev |
| 13:39 |
ANAND |
sfan5: Thanks |
| 13:39 |
ANAND |
It compares meta directly? |
| 13:40 |
ANAND |
I thought only the serialized versions can be compared |
| 13:44 |
rubenwardy |
that really should be in an operator== |
| 13:45 |
rubenwardy |
an operator== will be inlined anyway |
| 13:54 |
|
Fritigern joined #minetest-dev |
| 13:57 |
ANAND |
rubenwardy: That's what I'm in the process of implementing |
| 14:03 |
ANAND |
Wha... operators == and != have been defined for comparing ItemStacks in around 15 files |
| 14:05 |
rubenwardy |
lool |
| 14:13 |
ANAND |
And multiple definitions warnings pop up for each file that defines the operator, since the header has declared it's own version now |
| 14:13 |
ANAND |
https://gist.github.com/ClobberXD/b87cd0b41baa4220747f699c1cb00939 |
| 14:13 |
ANAND |
15 is an understatement |
| 14:13 |
ANAND |
That's probably around 30 |
| 14:13 |
rubenwardy |
I think you've defined it wrong |
| 14:13 |
rubenwardy |
those files all include the ItemStack file |
| 14:14 |
ANAND |
exactly, but they've also declared and defined their own versions of the operators |
| 14:14 |
sfan5 |
no |
| 14:14 |
sfan5 |
you forgot to make the method inline |
| 14:14 |
rubenwardy |
or as part of the class |
| 14:14 |
rubenwardy |
if you don't define a method as inline, extern, or static in a header then you will get multiple redefinitions |
| 14:15 |
rubenwardy |
*global method |
| 14:15 |
rubenwardy |
in this case, I'd suggest moving into the class like |
| 14:15 |
ANAND |
Wait... The errors are only for != operator, which I've defined in the header itself, using !(s1 == s2) |
| 14:15 |
rubenwardy |
bool operator==(const ItemStack &other) const { |
| 14:15 |
rubenwardy |
basically, #include is a copy and paste of another file |
| 14:15 |
ANAND |
Alright |
| 14:15 |
ANAND |
Yea |
| 14:16 |
rubenwardy |
to the compile, it's as if you have that code directly in the C++ file |
| 14:16 |
rubenwardy |
and so each cpp file has a definition of that operator |
| 14:16 |
ANAND |
:facepalm: |
| 14:17 |
ANAND |
Should it be defined inline or in the .cpp file if it's a member of the class? |
| 14:18 |
rubenwardy |
as a member of the class |
| 14:18 |
rubenwardy |
bool operator==(const ItemStack &other) const { |
| 14:18 |
ANAND |
Yes, but in .h within class decl. or in the .cpp file? |
| 14:18 |
rubenwardy |
.h |
| 14:19 |
ANAND |
Okie |
| 14:19 |
rubenwardy |
the .h, because the definition is trivial and it allows inlining |
| 14:22 |
ANAND |
Understood, thanks :) |
| 15:46 |
|
fwhcat joined #minetest-dev |
| 16:10 |
|
calcul0n_ joined #minetest-dev |
| 16:31 |
|
Lia joined #minetest-dev |
| 18:09 |
|
Cornelia joined #minetest-dev |
| 18:32 |
|
fwhcat joined #minetest-dev |
| 18:52 |
|
proller joined #minetest-dev |
| 19:04 |
|
reductum joined #minetest-dev |
| 19:39 |
|
Owner_ joined #minetest-dev |
| 19:54 |
|
fwhcat_ joined #minetest-dev |
| 20:14 |
|
fwhcat_ joined #minetest-dev |
| 20:28 |
|
Ruslan1 joined #minetest-dev |
| 20:29 |
|
Owner__ joined #minetest-dev |
| 20:47 |
|
proller joined #minetest-dev |
| 20:54 |
|
pyrollo joined #minetest-dev |
| 20:57 |
|
paramat joined #minetest-dev |
| 21:42 |
|
Miner_48er joined #minetest-dev |
| 23:48 |
|
calcul0n_ joined #minetest-dev |