annotate src/Support/ModuleTree.h @ 121:3cdaa81c3aca

- Massive refactoring to make module tree stuff work. In theory we now support configuration files again. The graphics stuff is untested as yet.
author tomwalters
date Mon, 18 Oct 2010 04:42:28 +0000
parents 89e4facffd93
children 0db637cac96b
rev   line source
tomwalters@84 1 // Copyright 2010, Thomas Walters
tomwalters@84 2 //
tomwalters@84 3 // AIM-C: A C++ implementation of the Auditory Image Model
tomwalters@84 4 // http://www.acousticscale.org/AIMC
tomwalters@84 5 //
tomwalters@84 6 // Licensed under the Apache License, Version 2.0 (the "License");
tomwalters@84 7 // you may not use this file except in compliance with the License.
tomwalters@84 8 // You may obtain a copy of the License at
tomwalters@84 9 //
tomwalters@84 10 // http://www.apache.org/licenses/LICENSE-2.0
tomwalters@84 11 //
tomwalters@84 12 // Unless required by applicable law or agreed to in writing, software
tomwalters@84 13 // distributed under the License is distributed on an "AS IS" BASIS,
tomwalters@84 14 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
tomwalters@84 15 // See the License for the specific language governing permissions and
tomwalters@84 16 // limitations under the License.
tomwalters@84 17
tomwalters@84 18 /*! \file
tomwalters@84 19 * \brief Parse a configuration file to generate a tree of modules.
tomwalters@84 20 */
tomwalters@84 21
tomwalters@84 22 /*! \author: Thomas Walters <tom@acousticscale.org>
tomwalters@84 23 * \date 2010/08/08
tomwalters@84 24 * \version \$Id: $
tomwalters@84 25 */
tomwalters@84 26
tomwalters@121 27 #include <iostream>
tomwalters@121 28 #include <map>
tomwalters@84 29 #include <string>
tomwalters@84 30
tomwalters@121 31 #include "Support/Common.h"
tomwalters@121 32 #include "Support/Module.h"
tomwalters@121 33 #include "Support/Parameters.h"
tomwalters@121 34 #include "Support/SignalBank.h"
tomwalters@121 35 #include "Support/linked_ptr.h"
tomwalters@121 36
tomwalters@84 37 namespace aimc {
tomwalters@84 38 using std::string;
tomwalters@121 39 using std::map;
tomwalters@121 40 using std::ostream;
tomwalters@120 41
tomwalters@84 42 class ModuleTree {
tomwalters@84 43 public:
tomwalters@121 44 ModuleTree();
tomwalters@121 45 bool LoadConfigFile(const string &filename);
tomwalters@121 46 bool LoadConfigText(const string &config_text);
tomwalters@121 47 string GetFullConfig();
tomwalters@121 48 bool Initialize(Parameters *global_parameters);
tomwalters@121 49 void Reset();
tomwalters@121 50 void PrintConfiguration(ostream &out);
tomwalters@121 51 void Process();
tomwalters@121 52 void MakeDotGraph(ostream &out);
tomwalters@114 53 void set_output_filename_prefix(const string &prefix) {
tomwalters@114 54 output_filename_prefix_ = prefix;
tomwalters@121 55 };
tomwalters@84 56 string output_filename_prefix() {
tomwalters@84 57 return output_filename_prefix_;
tomwalters@121 58 };
tomwalters@84 59 private:
tomwalters@121 60 bool ConstructTree();
tomwalters@121 61 Parameters config_;
tomwalters@121 62 SignalBank s_;
tomwalters@84 63 string output_filename_prefix_;
tomwalters@121 64 map<string, linked_ptr<Module> > modules_;
tomwalters@121 65 Module *root_module_;
tomwalters@121 66 map<string, linked_ptr<Parameters> > parameters_;
tomwalters@121 67 bool initialized_;
tomwalters@84 68 DISALLOW_COPY_AND_ASSIGN(ModuleTree);
tomwalters@84 69 };
tomwalters@84 70 } // namespace aimc