From: Marty K. <mrk...@co...> - 2012-12-19 12:20:02
|
The following was a response to a private message I sent to Matej. I thought everyone should see the resonse. Marty On 12/19/2012 02:17 AM, Matej Sekoranja wrote: > On Wed, Dec 19, 2012 at 12:03 AM, Marty Kraimer <mrk...@co...> wrote: >> On 12/18/2012 02:21 PM, Matej Sekoranja wrote: >>> Code of structure equals method in Java for Structure: >>> >>> @Override >>> public boolean equals(Object obj) { >>> if (this == obj) >>> return true; >>> final BaseStructure other = (BaseStructure) obj; >>> if (id == null) { >>> if (other.id != null) >>> return false; >>> } else if (!id.equals(other.id)) >>> return false; >>> if (!Arrays.equals(fieldNames, other.fieldNames)) >>> return false; >>> if (!Arrays.equals(fields, other.fields)) >>> return false; >>> return true; >>> } >> >> Where is the equivalent code in C++? > It's in pvDataCPP/factory/Compare.cpp: > > bool operator==(const Structure& a, const Structure& b) > { > if(&a==&b) > return true; > if (a.getID()!=b.getID()) > return false; > size_t nflds=a.getNumberFields(); > if (b.getNumberFields()!=nflds) > return false; > > // std::equals does not work, since FieldConstPtrArray is an array > of shared_pointers > FieldConstPtrArray af = a.getFields(); > FieldConstPtrArray bf = b.getFields(); > for (size_t i = 0; i < nflds; i++) > if (*(af[i].get()) != *(bf[i].get())) > return false; > > StringArray an = a.getFieldNames(); > StringArray bn = b.getFieldNames(); > return std::equal( an.begin(), an.end(), bn.begin() ); > } > > > Does not look as nice in Java.... > |