Go to Overview over all GrAL packages.
Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

src/IO/control-device.C

Go to the documentation of this file.
00001 
00002 // $LICENSE
00003 
00004 #include <fstream.h>
00005 #include <string>
00006 #include <strstream.h> 
00007 
00008 #include "Utility/safe-file.h"
00009 #include "IO/control-device.h"
00010 #include "IO/istream-control-device.h"
00011 #include "IO/multi-istream-control-device.h"
00012 #include "IO/command-line.h"
00013  
00014 #include "Utility/pre-post-conditions.h" 
00015 
00016 std::string Mutator::description() const { return std::string("");}
00017 
00018 
00019 void ControlDevice::update() { impl->update(); print_unrecognized(cerr);}
00020 
00021 void ControlDevice::print_values(std::ostream& out) const { impl->print_values(out);}
00022 
00023 void ControlDevice::print_unrecognized(std::ostream& out) const { impl->print_unrecognized(out);}
00024 
00025 void ControlDevice::attach_to(std::istream& in) { impl->attach_to(in);}
00026 
00027 void ControlDevice::add(std::string const& name,Mutator* value_ref) 
00028 { impl->add(name,value_ref);}
00029 
00030 void ControlDevice::add(char const*   nm,Mutator* value_ref)
00031 { add(std::string(nm),value_ref);}
00032 
00033 void ControlDevice::register_at(ControlDevice& Ctrl, std::string const& prefix)
00034 { impl->register_at(Ctrl,prefix);}
00035 
00036 std::string ControlDevice::name() const { return impl->name();}
00037 
00038 ControlDevice ControlDevice::getSubDevice(std::string const& nm) 
00039 { 
00040   ControlDevice sub(impl->get_sub_device(nm));
00041   // sub.register_at(*this,"");
00042   return sub;
00043 }
00044 
00045 ControlDevice ControlDevice::getSubDevice(char const*   name) 
00046 { return getSubDevice(std::string(name));}
00047 
00048 
00049 
00050 
00051 
00052 ControlDevice GetStreamDevice(std::istream* in, const std::string& name)
00053 { return ControlDevice( new istream_control_device_impl(in,name));}
00054 
00055 ControlDevice GetFileControlDevice(const std::string& filename, const std::string& name) 
00056 { return GetFileControlDevice(filename.c_str(),name);} 
00057 
00058 ControlDevice GetFileControlDevice(const char* filename, const std::string& name) {
00059  std::ifstream * infile = new std::ifstream;
00060  file_interactive::open(*infile,filename);
00061  return ControlDevice(new istream_control_device_impl(infile, name));
00062 }
00063 
00064 
00065 
00066 
00067 ControlDevice GetDuplexControlDevice(std::istream& in2,
00068                                      const char* filename, const std::string& name) {
00069  std::ifstream * in1 = new std::ifstream(filename);
00070   return ControlDevice(new multi_istream_control_device(in1,&in2,name));
00071 }
00072 
00073 ControlDevice GetDuplexControlDevice(std::istream* in2,
00074                                      const char* filename, const std::string& name) {
00075  std::ifstream * in1 = new std::ifstream(filename);
00076   return ControlDevice(new multi_istream_control_device(in1,in2,name));
00077 }
00078 
00079 ControlDevice GetDuplexControlDevice(std::istream& in2,
00080                                      const std::string& filename, const std::string& name) {
00081   return GetDuplexControlDevice(in2,filename.c_str(),name);
00082 }
00083 
00084 ControlDevice GetCommandlineAndFileControlDevice(int argc, char* argv[],
00085                                                  const std::string& filename, 
00086                                                  const std::string& name) 
00087 {
00088   Commandline cmd(argc,argv);
00089   //  istringstream* in = new istringstream(cmd.get().str());
00090   std::istrstream* in = new std::istrstream(cmd.c_str());
00091   return GetDuplexControlDevice(in,
00092                                 filename.c_str(),
00093                                 name);
00094 }

Copyright (c) Guntram Berti 1997-2002. See the GrAL Homepage for up-to-date information.

Generated at Tue Feb 26 15:57:06 2002 for External control by doxygen 1.2.11-20011104 written by Dimitri van Heesch, © 1997-2000