aboutsummaryrefslogtreecommitdiff
path: root/cores/arduino/IPAddress.cpp
AgeCommit message (Collapse)Author
2017-01-08Remove old TODOs for non-standard ipv4 format supportPatrick Roncagliolo
Signed-off-by: Patrick Roncagliolo <ronca.pat@gmail.com>
2015-09-09Added IPAddress::fromString(....) functionCristian Maglie
2014-02-19Use a union in IPAddress for uint8_t[] <-> uint32_t conversionMatthijs Kooijman
Previously, pointer casting was used, but this resulted in strict-aliasing warnings: IPAddress.h: In member function ‘IPAddress::operator uint32_t() const’: IPAddress.h:46:61: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] operator uint32_t() const { return *((uint32_t*)_address); }; ^ IPAddress.h: In member function ‘bool IPAddress::operator==(const IPAddress&) const’: IPAddress.h:47:81: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] bool operator==(const IPAddress& addr) const { return (*((uint32_t*)_address)) == (*((uint32_t*)addr._address)); }; ^ IPAddress.h:47:114: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] bool operator==(const IPAddress& addr) const { return (*((uint32_t*)_address)) == (*((uint32_t*)addr._address)); }; Converting between unrelated types like this is commonly done using a union, which do not break the strict-aliasing rules. Using that union, inside IPAddress there is now an attribute _address.bytes for the raw byte arra, or _address.dword for the uint32_t version. Since we now have easy access to the uint32_t version, this also removes two memcpy invocations that can just become assignments. This patch does not change the generated code in any way, the compiler already optimized away the memcpy calls and the previous casts mean exactly the same. This is a different implementation of a part of #1399 and it helps toward fixing #1728.
2014-02-10Added license for Client, IPAddressm and ServerCristian Maglie
See #1847
2014-01-15Make some operators in IPAddress constMatthijs Kooijman
These functions do not modify the IPAddress object, but were not marked as const. This meant that you could not do: void set_ip(const IPAddress& ip) { uint32_t copy = ip; } Since calling operator uint32_t() on ip would discard the constness of the reference.
2011-08-28Merge branch 'master' into wifly_integrationamcewen
2011-03-28Pulled out Client API into a base class to allow multiple derived classes to ↵amcewen
use it, and moved it (plus IPAddress) out of the Ethernet library so that other libraries can find it. First steps in integrating the WiFly code so it's easier to switch between that and Ethernet