X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Flayout.cpp;h=ac7101dfcf4e49708f8571a0f62bc4a9df292db4;hb=a7e320b46a7d4070613b3210c28e65f579750f37;hp=c23ad38fb1d39969c2463ebab919ea165a3b0895;hpb=b28062f2dc88e082ee5a28b2e1f7c4c8bd989023;p=r2c2.git diff --git a/source/libr2c2/layout.cpp b/source/libr2c2/layout.cpp index c23ad38..ac7101d 100644 --- a/source/libr2c2/layout.cpp +++ b/source/libr2c2/layout.cpp @@ -13,6 +13,7 @@ #include "route.h" #include "signal.h" #include "signaltype.h" +#include "terrain.h" #include "track.h" #include "trackcircuit.h" #include "tracktype.h" @@ -135,6 +136,12 @@ const set &Layout::get_all() const return objects.get(); } +template<> +const set &Layout::get_all() const +{ + return objects.get(); +} + template<> const set &Layout::get_all() const { @@ -414,6 +421,15 @@ void Layout::save(const string &fn) const writer.write(st); } + const set &terrains = objects.get(); + for(set::const_iterator i=terrains.begin(); i!=terrains.end(); ++i) + { + DataFile::Statement st("terrain"); + st.append((*i)->get_type().get_article_number()); + (*i)->save(st.sub); + writer.write(st); + } + const set &gates = objects.get(); for(set::const_iterator i=gates.begin(); i!=gates.end(); ++i) { @@ -447,6 +463,12 @@ void Layout::save_dynamic(const string &fn) const IO::BufferedFile out(fn, IO::M_WRITE); DataFile::Writer writer(out); + { + DataFile::Statement st("clock"); + clock.save(st.sub); + writer.write(st); + } + const set &tracks = objects.get(); for(set::const_iterator i=tracks.begin(); i!=tracks.end(); ++i) if(unsigned taddr = (*i)->get_turnout_address()) @@ -532,8 +554,10 @@ Layout::Loader::Loader(Layout &l): { add("base", &Layout::base); add("beamgate", &Loader::beamgate); + add("clock", &Loader::clock); add("route", &Loader::route); add("signal", &Loader::signal); + add("terrain", &Loader::terrain); add("track", &Loader::track); add("train", &Loader::train); add("turnout", &Loader::turnout); @@ -546,6 +570,11 @@ void Layout::Loader::beamgate() load_sub(*gate); } +void Layout::Loader::clock() +{ + load_sub(obj.clock); +} + void Layout::Loader::route() { Route *rte = new Route(obj); @@ -558,6 +587,12 @@ void Layout::Loader::signal(ArticleNumber art_nr) load_sub(*sig); } +void Layout::Loader::terrain(ArticleNumber art_nr) +{ + Terrain *ter = new Terrain(obj, obj.catalogue.get(art_nr)); + load_sub(*ter); +} + void Layout::Loader::track(ArticleNumber art_nr) { Track *trk = new Track(obj, obj.catalogue.get(art_nr));