view usr/src/cmd/man/src/util/nsgmls.src/include/OwnerTable.cxx @ 0:c9caec207d52 b86

Initial porting based on b86
author Koji Uno <koji.uno@sun.com>
date Tue, 02 Jun 2009 18:56:50 +0900
parents
children 1a15d5aaf794
line wrap: on
line source

/*
 * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

/*
 * Copyright 1994 James Clark
 * See the file COPYING for copying permission.
 */

#pragma ident	"@(#)OwnerTable.cxx	1.5	05/08/22 SMI"

#ifndef OwnerTable_DEF_INCLUDED
#define	OwnerTable_DEF_INCLUDED 1

#ifdef SP_NAMESPACE
namespace SP_NAMESPACE {
#endif

template < class T, class K, class HF, class KF >
OwnerTable < T, K, HF, KF > ::~OwnerTable()
{
	for (size_t i = 0; i < this->vec_.size(); i++)
		delete this->vec_[i];
}

template < class T, class K, class HF, class KF >
void OwnerTable < T, K, HF, KF > ::clear()
{
	for (size_t i = 0; i < this->vec_.size(); i++)
		delete this->vec_[i];
	PointerTable < T *, K, HF, KF > ::clear();
}

template < class T, class K, class HF, class KF >
void
CopyOwnerTable < T, K, HF, KF > ::operator = (
	const CopyOwnerTable < T, K, HF, KF > &t)
{
	this->clear();
	PointerTable < T *, K, HF, KF > ::operator = (t);
	// FIXME This isn't exception safe.
	for (size_t i = 0; i < this->vec_.size(); i++)
		if (this->vec_[i])
			this->vec_[i] = this->vec_[i]->copy();
}

#ifdef SP_NAMESPACE
}
#endif

#endif /* not OwnerTable_DEF_INCLUDED */