CP2PListLibrary 1.0

ip.hpp

00001 /*
00002    Copyright (C) 2004-2005 Cory Nelson
00003 
00004    This software is provided 'as-is', without any express or implied
00005    warranty.  In no event will the authors be held liable for any damages
00006    arising from the use of this software.
00007 
00008    Permission is granted to anyone to use this software for any purpose,
00009    including commercial applications, and to alter it and redistribute it
00010    freely, subject to the following restrictions:
00011 
00012    1. The origin of this software must not be misrepresented; you must not
00013       claim that you wrote the original software. If you use this software
00014       in a product, an acknowledgment in the product documentation would be
00015       appreciated but is not required.
00016    2. Altered source versions must be plainly marked as such, and must not be
00017       misrepresented as being the original software.
00018    3. This notice may not be removed or altered from any source distribution.
00019    
00020    CVS Info :
00021       $Author: phrostbyte $
00022       $Date: 2005/06/30 18:26:00 $
00023       $Revision: 1.5 $
00024 */
00025 
00026 #ifndef __P2P_IP_HPP__
00027 #define __P2P_IP_HPP__
00028 
00029 #include <ostream>
00030 
00031 namespace p2p {
00032    struct ip {
00033       union {
00034          unsigned int ipl;
00035          unsigned char ipb[4];
00036       };
00037 
00038       ip() : ipl(0) {}
00039       ip(unsigned int ip) : ipl(ip) {}
00040       bool operator<(const ip &ip) const { return this->ipl<ip.ipl; }
00041       bool operator>(const ip &ip) const { return this->ipl>ip.ipl; }
00042       bool operator<=(const ip &ip) const { return this->ipl<=ip.ipl; }
00043       bool operator>=(const ip &ip) const { return this->ipl>=ip.ipl; }
00044       bool operator==(const ip &ip) const { return this->ipl==ip.ipl; }
00045       bool operator!=(const ip &ip) const { return this->ipl!=ip.ipl; }
00046 
00047       ip operator+(unsigned int i) const { return this->ipl+i; }
00048       ip operator-(unsigned int i) const { return this->ipl-i; }
00049    };
00050 }
00051 
00052 #endif