Listing 1: Class declaration for ipaddr.

struct ipaddr
{
    uint32_t addr;
    // --- Constructors ---
    ipaddr();
    ipaddr(const ipaddr&);
    ipaddr(const std::string&);
    // --- String Representation --
    char* toString() const;
    // --- Binary Operators ---
    ipaddr operator ~ () const;
    ipaddr operator & (const ipaddr&) const;
    ipaddr operator | (const ipaddr&) const;
    // --- Mathematical operators ---
    ipaddr operator ++ ();
    ipaddr operator -- ();
    // --- Assignment Operator ---
    ipaddr& operator = (const ipaddr&);
    ipaddr& operator = (const std::string &);
    // --- Comparison Operators ---
    bool operator == (const ipaddr&) const;
    bool operator != (const ipaddr&) const;
    bool operator <  (const ipaddr&) const;
    bool operator <= (const ipaddr&) const;
    bool operator >  (const ipaddr&) const;
    bool operator >= (const ipaddr&) const;
}; // -- struct ipaddr