IPAddress.h
Go to the documentation of this file.
1 /*
2  IPAddress.h - Base class that provides IPAddress
3  Copyright (c) 2011 Adrian McEwen. All right reserved.
4 
5  This library is free software; you can redistribute it and/or
6  modify it under the terms of the GNU Lesser General Public
7  License as published by the Free Software Foundation; either
8  version 2.1 of the License, or (at your option) any later version.
9 
10  This library is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public
16  License along with this library; if not, write to the Free Software
17  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19 
20 #ifndef IPAddress_h
21 #define IPAddress_h
22 
23 #include <stdint.h>
24 #include "Printable.h"
25 #include "WString.h"
26 
27 // A class to make it easier to handle and pass around IP addresses
28 
29 class IPAddress : public Printable {
30 private:
31  union {
32  uint8_t bytes[4]; // IPv4 address
34  } _address;
35 
36  // Access the raw byte array containing the address. Because this returns a pointer
37  // to the internal structure rather than a copy of the address this function should only
38  // be used when you know that the usage of the returned uint8_t* will be transient and not
39  // stored.
40  uint8_t* raw_address() { return _address.bytes; };
41 
42 public:
43  // Constructors
44  IPAddress();
45  IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet);
47  IPAddress(const uint8_t *address);
48 
49  bool fromString(const char *address);
50  bool fromString(const String &address) { return fromString(address.c_str()); }
51 
52  // Overloaded cast operator to allow IPAddress objects to be used where a pointer
53  // to a four-byte uint8_t array is expected
54  operator uint32_t() const { return _address.dword; };
55  bool operator==(const IPAddress& addr) const { return _address.dword == addr._address.dword; };
56  bool operator==(const uint8_t* addr) const;
57 
58  // Overloaded index operator to allow getting and setting individual octets of the address
59  uint8_t operator[](int index) const { return _address.bytes[index]; };
60  uint8_t& operator[](int index) { return _address.bytes[index]; };
61 
62  // Overloaded copy operators to allow initialisation of IPAddress objects from other types
63  IPAddress& operator=(const uint8_t *address);
64  IPAddress& operator=(uint32_t address);
65 
66  virtual size_t printTo(Print& p) const;
67 
68  friend class EthernetClass;
69  friend class UDP;
70  friend class Client;
71  friend class Server;
72  friend class DhcpClass;
73  friend class DNSClient;
74 };
75 
76 const IPAddress INADDR_NONE(0,0,0,0);
77 
78 #endif
uint8_t bytes[4]
Definition: IPAddress.h:32
friend class DhcpClass
Definition: IPAddress.h:72
Definition: Server.h:25
union IPAddress::@0 _address
bool operator==(const IPAddress &addr) const
Definition: IPAddress.h:55
Definition: Udp.h:41
unsigned int uint32_t
uint8_t operator[](int index) const
Definition: IPAddress.h:59
bool fromString(const char *address)
Definition: IPAddress.cpp:46
uint32_t dword
Definition: IPAddress.h:33
Definition: Print.h:37
GLenum GLvoid * addr
virtual size_t printTo(Print &p) const
Definition: IPAddress.cpp:103
bool fromString(const String &address)
Definition: IPAddress.h:50
friend class DNSClient
Definition: IPAddress.h:73
GLfloat GLfloat p
GLuint address
Definition: Client.h:26
GLuint index
IPAddress & operator=(const uint8_t *address)
Definition: IPAddress.cpp:86
uint8_t & operator[](int index)
Definition: IPAddress.h:60
friend class EthernetClass
Definition: IPAddress.h:68
uint8_t * raw_address()
Definition: IPAddress.h:40
const IPAddress INADDR_NONE(0, 0, 0, 0)


arduino_daq
Author(s):
autogenerated on Mon Jun 10 2019 12:46:03