Added copyright lines for files I've edited this year.
[synfig.git] / synfig-core / trunk / src / synfig / node.cpp
index fdd2bfe..083afe7 100644 (file)
@@ -1,28 +1,28 @@
-/* === 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, 2008 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
@@ -46,7 +45,7 @@ using namespace __gnu_cxx;
 
 using namespace std;
 using namespace etl;
-using namespace sinfg;
+using namespace synfig;
 
 /* === M A C R O S ========================================================= */
 
@@ -82,7 +81,7 @@ extern clock_t _clock();
 /* === 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
@@ -98,8 +97,8 @@ static GlobalNodeMap& global_node_map()
 
 /* === 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;
@@ -107,7 +106,7 @@ sinfg::find_node(const GUID& guid)
 }
 
 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);
@@ -117,22 +116,30 @@ refresh_node(sinfg::Node* node, GUID 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
@@ -164,13 +171,14 @@ TimePointSet::insert(const TimePoint& x)
 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
 }
 
@@ -201,13 +209,13 @@ Node::get_guid()const
 #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_;
 }
 
@@ -222,7 +230,7 @@ Node::set_guid(const GUID& x)
        {
                guid_=x;
                assert(!global_node_map().count(guid_));
-               global_node_map()[guid_]=this;  
+               global_node_map()[guid_]=this;
        }
        else
 #endif
@@ -268,7 +276,7 @@ Node::get_times() const
                get_times_vfunc(times);
                bchanged = false;
        }
-       
+
        //set the output set...
        return times;
 }