// Copyright (c) 2002 David Muse
// See the COPYING file for more information

#include <rudiments/inetsocketutil.h>
#include <rudiments/rawbuffer.h>

// for NULL
#include <stdlib.h>

#ifdef RUDIMENTS_NAMESPACE
namespace rudiments {
#endif

class inetsocketutilprivate {
	friend class inetsocketutil;
	private:
		const char	*_address;
		unsigned short	_port;
		sockaddr_in	_sin;
};

inetsocketutil::inetsocketutil() {
	pvt=new inetsocketutilprivate;
	initialize(NULL,0);
}

inetsocketutil::inetsocketutil(const inetsocketutil &i) {
	pvt=new inetsocketutilprivate;
	initialize(i.pvt->_address,i.pvt->_port);
}

inetsocketutil &inetsocketutil::operator=(const inetsocketutil &i) {
	if (this!=&i) {
		initialize(i.pvt->_address,i.pvt->_port);
	}
	return *this;
}

inetsocketutil::~inetsocketutil() {
	delete pvt;
}

void inetsocketutil::initialize(const char *address, unsigned short port) {
	pvt->_address=address;
	pvt->_port=port;
	rawbuffer::zero(&pvt->_sin,sizeof(pvt->_sin));
}

const char *inetsocketutil::_address() {
	return pvt->_address;
}

unsigned short *inetsocketutil::_port() {
	return &pvt->_port;
}

sockaddr_in *inetsocketutil::_sin() {
	return &pvt->_sin;
};

#ifdef RUDIMENTS_NAMESPACE
}
#endif


syntax highlighted by Code2HTML, v. 0.9.1