--- /dev/null
+// ANNA - Anna is Not Nothingness Anymore //
+// //
+// (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
+// //
+// See project site at http://redmine.teslayout.com/projects/anna-suite //
+// See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
+
+
+#include "Abstract.hpp"
+
+using namespace std;
+using namespace anna;
+using namespace workdir;
+
+filesystem::Abstract::Abstract (const Abstract::ClassType::_v classType, const std::string& name) :
+ a_classType (classType),
+ a_name (name), a_parent (NULL)
+{
+ a_path = name;
+}
+
+filesystem::Abstract::Abstract (const Abstract::ClassType::_v classType, filesystem::Abstract* parent, const std::string& name) :
+ a_classType (classType),
+ a_name (name),
+ a_parent (parent)
+{
+ a_parent->a_children.push_back (this);
+ a_path = calculePath (parent, name);
+}
+
+/*virtual*/
+filesystem::Abstract::~Abstract ()
+{
+ for (child_iterator ii = child_begin (), maxii = child_end (); ii != maxii; ii ++)
+ delete child (ii);
+
+ a_children.clear ();
+}
+
+/* static */
+string filesystem::Abstract::calculePath (const filesystem::Abstract* parent, const std::string& shortPath)
+ throw ()
+{
+ string result;
+
+ if (parent!= NULL) {
+ result = parent->a_path;
+ result += '/';
+ }
+
+ return result += shortPath;
+}