/*====================================================================*
 *
 *   NODE * xmlfree (NODE * node);
 *
 *   node.h
 *
 *   recursively free child nodes; minimize recursion by following
 *   node->after at each level;
 *
 *   the caller must free the root node; this allows that the root
 *   to be statically declared, if desired;
 *
 *   Motley Tools by Charles Maier <cmaier@cmassoc.net>;
 *   Copyright (c) 2001-2006 by Charles Maier Associates;
 *   Licensed under the Internet Software Consortium License;
 *
 *--------------------------------------------------------------------*/

#ifndef XMLFREE_SOURCE
#define XMLFREE_SOURCE

#include <stdlib.h>
#include <memory.h>

#include "../nodes/node.h"

void xmlfree (NODE * node)

{
	if (node)
	{
		node = node->below;
	}
	while (node)
	{
		NODE * temp = node;
		if (node->above)
		{
			node->above->below = (NODE *)(0);
		}
		if (node->prior)
		{
			node->prior->after = (NODE *)(0);
		}
		xmlfree (node);
		node = node->after;
		free (temp);
	}
	return;
}

#endif