00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef uripp_ip_address_h
00023 #define uripp_ip_address_h
00024 #include "apidefs.h"
00025 #include <string>
00026 #include <iostream>
00027 namespace uripp {
00028 class ipv6_address;
00041 class URIPP_API ip_address {
00042 public:
00043 ip_address();
00044
00045
00046
00047 ip_address(const std::string& v);
00049 bool is_null() const {return !octets_[0] && !octets_[1] && !octets_[2] && !octets_[3];}
00050 std::string string() const;
00051 std::ostream& operator <<(std::ostream& os) const;
00052 static const char SEPARATOR_CHAR;
00053 private:
00054 friend bool URIPP_API parse(std::string::const_iterator& first, std::string::const_iterator last, ip_address& v);
00055 friend bool URIPP_API parse(std::string::const_iterator& first, std::string::const_iterator last, ipv6_address& v);
00056 unsigned char octets_[4];
00057 };
00059 inline std::ostream& operator <<(std::ostream& os, const ip_address& v) {return v.operator <<(os);}
00063 bool URIPP_API parse(std::string::const_iterator& first, std::string::const_iterator last, ip_address& v);
00064 }
00065 #endif