-/* === S I N F G =========================================================== */
+/* === S Y N F I G ========================================================= */
/*! \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 Robert B. Quattlebaum Jr.
+** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+** Copyright (c) 2007 Chris Moore
**
-** This software and associated documentation
-** are CONFIDENTIAL and PROPRIETARY property of
-** the above-mentioned copyright holder.
+** This package is free software; you can redistribute it and/or
+** modify it under the terms of the GNU General Public License as
+** published by the Free Software Foundation; either version 2 of
+** the License, or (at your option) any later version.
**
-** You may not copy, print, publish, or in any
-** other way distribute this software without
-** a prior written agreement with
-** the copyright holder.
+** This package is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+** General Public License for more details.
** \endlegal
*/
/* ========================================================================= */
/* === 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
using namespace std;
using namespace etl;
-using namespace sinfg;
+using namespace synfig;
/* === M A C R O S ========================================================= */
/* === 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
/* === P R O C E D U R E S ================================================= */
-sinfg::Node*
-sinfg::find_node(const GUID& guid)
+synfig::Node*
+synfig::find_node(const GUID& guid)
{
if(global_node_map().count(guid)==0)
return 0;
}
static void
-refresh_node(sinfg::Node* node, GUID old_guid)
+refresh_node(synfig::Node* node, GUID old_guid)
{
assert(global_node_map().count(old_guid));
global_node_map().erase(old_guid);
/* === 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
}
#ifdef BE_FRUGAL_WITH_GUIDS
if(!guid_)
{
- guid_.make_unique();
+ const_cast<GUID&>(guid_).make_unique();
assert(guid_);
assert(!global_node_map().count(guid_));
- global_node_map()[guid_]=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;
}