From 56cc59cf44ec64440ba4d1c0d005196195c758e6 Mon Sep 17 00:00:00 2001 From: hugues Date: Sat, 25 Mar 2006 15:07:51 +0000 Subject: Nettoyage du repository glagen git-svn-id: file:///usr/local/opt/svn/repos/glagen@12 0f7e0d06-a6f9-0310-a55f-d5f984f55e4c --- trunk/glagen/dll/libraryloader.cc | 322 -------------------------------------- 1 file changed, 322 deletions(-) delete mode 100644 trunk/glagen/dll/libraryloader.cc (limited to 'trunk/glagen/dll/libraryloader.cc') diff --git a/trunk/glagen/dll/libraryloader.cc b/trunk/glagen/dll/libraryloader.cc deleted file mode 100644 index 9e8b67a..0000000 --- a/trunk/glagen/dll/libraryloader.cc +++ /dev/null @@ -1,322 +0,0 @@ -//============================================================================= -// -// Glagen : a planet sized landscape generator -// Copyright (C) 2002 Julien Guertault, Hugues Hiegel, Meng-Tih Lam -// -// This program 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. -// -// This program 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. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -// -//============================================================================= -// -// Glagen : GPL LAndscape GENerator -// -// libraryloader.cc for Glagen : made by Hugues HIEGEL -// -// www.glagen.org -// -//============================================================================= - -#include -#include -#include - -#include "includes/errors.hh" -#include "classes/libclass.hh" -#include "libraryloader.hh" - -#include "classes/node.hh" -#include "classes/matrix.hh" -#include "classes/Data_string.hh" - - -using std::cout; -using std::cerr; -using std::endl; - -int -getLibID(const std::list* libids, - const string& name) -{ - // Searchs for an ID of the given library name - - if (libids->empty()) - return (-1); - - int libid = 0; - std::list::const_iterator libids_i = NULL; - - for (libids_i = libids->begin(); - (libids_i != libids->end()) && ((libids_i->getName()) != name); - libids_i++) - libid++; - - if (libid == (signed)libids->size()) - return (-1); - - return libid; - -} - - -void -RecursiveAddNode(const Node* Root, - Matrix* Adj, - const int size) -{ - int curr_node = 0; - const int nb_childs = Root->get_nb_childs(); - - if (nb_childs) - { - for (curr_node = 0; curr_node < nb_childs; curr_node++) - { - Node node = Root->get_child(curr_node); - - // Which library is a potentially dependancy ? - int curr_lib = node.get_data(); - - // Which libraries need it ? - for (int i_ = 0; i_ < size; i_++) - if ((*Adj)(i_, curr_lib) == 1) - { - node.add_child(i_); - (*Adj)(i_, curr_lib) = 2; - } - RecursiveAddNode(&node, Adj, size); - } - } - - return; - -} - -void -Int2Datanode(Node* Root, - Node* Final, - list* list_libs) -{ - int curr_node = 0; - const int nb_childs = Root->get_nb_childs(); - std::list::const_iterator libid_i; - int i; - int I; - - if (nb_childs) - { - for (curr_node = 0; curr_node < nb_childs; curr_node++) - { - Node node = Root->get_child(curr_node); - I = node.get_data(); - - libid_i = list_libs->begin(); - for (i = 0; i < I; i++) - libid_i++; - - Final->add_child(Data_string(libid_i->getFilename())); - Node TotoMesCouilles = - Final->get_child(Final->get_nb_childs() - 1); - Int2Datanode(&node, &TotoMesCouilles, list_libs); - } - } - - return; - -} - -// -// # -// # #### ## ##### ###### ##### -// # # # # # # # # # # -// # # # # # # # ##### # # -// # # # ###### # # # ##### ### ### -// # # # # # # # # # # ### ### -// ####### #### # # ##### ###### # # ### ### -// - - -Node -LibraryLoader(const list& LibFiles) -{ - - /**************************************************************/ - /* Opens all selected libraries and sort them by dependancies */ - /**************************************************************/ - - /*\****************\* Declarations *\***************\*/ - - /* Pointer needed to manipulate libraries */ - Library* current_loading (NULL); - string libname; - - /* List of loaded libraries needed to construct the deps tree */ - std::list libids; - libids.clear(); - int libid; - - /***********************************/ - /* Loads libraries and stores them */ - /***********************************/ - for (std::list::const_iterator libfile_i = LibFiles.begin(); - libfile_i != LibFiles.end(); - libfile_i++) - { - current_loading = new Library (*libfile_i); // Creates new class - - if (! current_loading->LoadLib()) - { - - /********************************************** - ** just for test purposes ** - ** it has nothing to do there ** - ** if it isn't commented.. comment it ! ** - **********************************************/ - //current_loading->Initialize(); -apao - if (getLibID(&libids, current_loading->getName()) == -1) - libids.push_back(*current_loading); // Stores the lib - else - { - cerr << "Library " - << current_loading->getName() - << " is already loaded !" << endl; - delete current_loading; - } - } - else - delete current_loading; - - } - - - - /*\****************\* Declarations *\***************\*/ - - int size = libids.size(); - - /* Matrix of dependancies */ - Matrix adjacence (size, size); - int i_ = 0, j_ = 0; - - /* List needed to manipulate dependancies of current lib */ - std::list deps; - deps.clear(); - - /* Lists iterators to iterate lists ;o) */ - std::list::const_iterator libid_i; - std::list::const_iterator dep_i; - - /**************************************/ - /* Second parsing to get dependancies */ - /**************************************/ - - for (libid_i = libids.begin(); libid_i != libids.end(); libid_i++) - { - deps = libid_i->getDependancies(); - - if (! deps.empty()) - for (dep_i = deps.begin(); - dep_i != deps.end(); - dep_i++) - { - libid = getLibID(&libids, *dep_i); - if (!(libid < 0)) - adjacence(i_, libid) = 1; - else - { - cerr - << "#ERR " << ERR_LIBMISSING - << ": Missing library: " - << *dep_i << "" << endl; - exit(ERR_LIBMISSING); - } - } - - i_++; - - } - - cout << "-- " << endl << adjacence << "-- " << endl; - - - /*\****************\* Declarations *\***************\*/ - /* The root node of sorted libraries tree */ - Node root (-1); - - int n_deps; - - /***************************************/ - /* Search for potential root libraries */ - /***************************************/ - - for (i_ = 0; - i_ < size; - i_++) - { - n_deps = 0; - for (j_ = 0; j_ < size; j_++) - if (adjacence(i_, j_)) - n_deps += 1; - - cout << i_ << " : " << n_deps; - - if (n_deps == 0) /* This is a root library */ - { - root.add_child(i_); - cout << " Added in Root tree !"; - } - cout << "" << endl; - } - - cout << endl << "Root has " << root.get_nb_childs() << " childs.." - << endl << endl; - - if (!root.get_nb_childs()) /* No independant library found.. */ - { - cerr << "#ERR " << ERR_NOROOTLIB - << ": No independant library found.." << endl; - exit(ERR_NOROOTLIB); - } - - /***********************************/ - /* Recursive addition of each node */ - /***********************************/ - - RecursiveAddNode(&root, &adjacence, size); - - cout << "-- " << endl << adjacence << "-- " << endl; - - /******************************************************/ - /* Checks if every Library has been added in the tree */ - /******************************************************/ - - for (i_ = 0; - i_ < size; - i_++) - for (j_ = 0; - j_ < size; - j_++) - if (adjacence(i_, j_) == 1) - { - cerr << "#Err " << ERR_NOROOTLIB - << ": Infinite loop in library dependancies;" << endl; - exit(ERR_NOROOTLIB); - } - - Node FinalResult (Data_string("")); - Int2Datanode(&root, &FinalResult, &libids); - - // WHEEEE !! IT'S THE END !!! I CAN'T BELIEVE IT !! - return FinalResult; -} - -- cgit v1.2.3