/*! \file node.cpp
** \brief Template File
**
-** $Id: node.cpp,v 1.5 2005/01/07 03:29:12 darco Exp $
+** $Id$
**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+** Copyright (c) 2007, 2008 Chris Moore
**
** This package is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License as
/* === H E A D E R S ======================================================= */
-#define HASH_MAP_H <ext/hash_map>
-
#ifdef USING_PCH
# include "pch.h"
#else
#endif
#include "node.h"
-#include "proto/nodebase.h"
+#include "nodebase.h"
#ifdef HASH_MAP_H
#include HASH_MAP_H
-using namespace __gnu_cxx;
#else
#include <map>
#endif
/* === G L O B A L S ======================================================= */
#ifdef HASH_MAP_H
-typedef hash_map<GUID,Node*,GUIDHash> GlobalNodeMap;
+typedef HASH_MAP_CLASS<GUID,Node*,GUIDHash> GlobalNodeMap;
#else
typedef map<GUID,Node*> GlobalNodeMap;
#endif
/* === M E T H O D S ======================================================= */
+#ifdef _DEBUG
+const char *
+TimePoint::c_str()const
+{
+ return get_time().get_string().c_str();
+}
+#endif
+
void
TimePoint::absorb(const TimePoint& x)
{
if(get_guid()==x.get_guid())
return;
set_guid(get_guid()^x.get_guid());
-
+
if(get_after()==INTERPOLATION_NIL)
set_after(x.get_after());
if(get_before()==INTERPOLATION_NIL)
set_before(x.get_before());
-
+
if(get_after()!=x.get_after() && x.get_after()!=INTERPOLATION_NIL)
set_after(INTERPOLATION_UNDEFINED);
if(get_before()!=x.get_before() && x.get_before()!=INTERPOLATION_NIL)
- set_before(INTERPOLATION_UNDEFINED);
+ set_before(INTERPOLATION_UNDEFINED);
}
TimePointSet::iterator
Node::Node():
guid_(0),
bchanged(true),
+ time_last_changed_(__sys_clock()),
deleting_(false)
{
#ifndef BE_FRUGAL_WITH_GUIDS
guid_.make_unique();
assert(guid_);
assert(!global_node_map().count(guid_));
- global_node_map()[guid_]=this;
+ global_node_map()[guid_]=this;
#endif
}
const_cast<GUID&>(guid_).make_unique();
assert(guid_);
assert(!global_node_map().count(guid_));
- global_node_map()[guid_]=const_cast<Node*>(this);
+ global_node_map()[guid_]=const_cast<Node*>(this);
}
#endif
-
+
return guid_;
}
{
guid_=x;
assert(!global_node_map().count(guid_));
- global_node_map()[guid_]=this;
+ global_node_map()[guid_]=this;
}
else
#endif
get_times_vfunc(times);
bchanged = false;
}
-
+
//set the output set...
return times;
}