[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pingus-CVS] r2646 - branches/pingus_sdl/src
From: |
grumbel at BerliOS |
Subject: |
[Pingus-CVS] r2646 - branches/pingus_sdl/src |
Date: |
Sun, 14 Jan 2007 11:10:11 +0100 |
Author: grumbel
Date: 2007-01-14 11:10:10 +0100 (Sun, 14 Jan 2007)
New Revision: 2646
Modified:
branches/pingus_sdl/src/file_reader.cxx
branches/pingus_sdl/src/file_reader.hxx
branches/pingus_sdl/src/file_reader_impl.hxx
branches/pingus_sdl/src/pingus_level.cxx
branches/pingus_sdl/src/pingus_level.hxx
branches/pingus_sdl/src/pingus_main.cxx
branches/pingus_sdl/src/sexpr_file_reader.cpp
Log:
- implemented some more FileReader functions
Modified: branches/pingus_sdl/src/file_reader.cxx
===================================================================
--- branches/pingus_sdl/src/file_reader.cxx 2007-01-14 06:25:22 UTC (rev
2645)
+++ branches/pingus_sdl/src/file_reader.cxx 2007-01-14 10:10:10 UTC (rev
2646)
@@ -78,7 +78,7 @@
}
bool
-FileReader::read_vector(const char* name, Vector& value) const
+FileReader::read_vector(const char* name, Vector3f& value) const
{
if (impl.get())
return impl->read_vector(name, value);
Modified: branches/pingus_sdl/src/file_reader.hxx
===================================================================
--- branches/pingus_sdl/src/file_reader.hxx 2007-01-14 06:25:22 UTC (rev
2645)
+++ branches/pingus_sdl/src/file_reader.hxx 2007-01-14 10:10:10 UTC (rev
2646)
@@ -24,14 +24,13 @@
#include <vector>
#include "shared_ptr.hxx"
-class CL_Size;
-class CL_Sizef;
+class Size;
class Color;
+class Vector3f;
namespace Pingus {
class ResDescriptor;
-class Vector;
class FileReaderImpl;
/** Interface to read name/value pairs out of some kind of file or
@@ -50,7 +49,7 @@
bool read_float (const char* name, float&) const;
bool read_bool (const char* name, bool&) const;
bool read_string(const char* name, std::string&) const;
- bool read_vector(const char* name, Vector&) const;
+ bool read_vector(const char* name, Vector3f&) const;
bool read_color (const char* name, Color&) const;
//// bool read_size (const char* name, CL_Size&) const;
bool read_desc (const char* name, ResDescriptor&) const;
Modified: branches/pingus_sdl/src/file_reader_impl.hxx
===================================================================
--- branches/pingus_sdl/src/file_reader_impl.hxx 2007-01-14 06:25:22 UTC
(rev 2645)
+++ branches/pingus_sdl/src/file_reader_impl.hxx 2007-01-14 10:10:10 UTC
(rev 2646)
@@ -23,14 +23,13 @@
#include <vector>
#include <string>
-class CL_Size;
-class CL_Sizef;
+class Size;
class Color;
+class Vector3f;
namespace Pingus {
class FileReader;
-class Vector;
class ResDescriptor;
/** */
@@ -45,7 +44,7 @@
virtual bool read_float (const char* name, float&) const =0;
virtual bool read_bool (const char* name, bool&) const =0;
virtual bool read_string(const char* name, std::string&) const =0;
- virtual bool read_vector(const char* name, Vector&) const =0;
+ virtual bool read_vector(const char* name, Vector3f&) const =0;
virtual bool read_color (const char* name, Color&) const =0;
virtual bool read_desc (const char* name, ResDescriptor&) const =0;
//// virtual bool read_size (const char* name, CL_Size&) const =0;
Modified: branches/pingus_sdl/src/pingus_level.cxx
===================================================================
--- branches/pingus_sdl/src/pingus_level.cxx 2007-01-14 06:25:22 UTC (rev
2645)
+++ branches/pingus_sdl/src/pingus_level.cxx 2007-01-14 10:10:10 UTC (rev
2646)
@@ -41,7 +41,7 @@
return impl->description;
}
-const CL_Size&
+const Size&
PingusLevel::get_size() const
{
return impl->size;
Modified: branches/pingus_sdl/src/pingus_level.hxx
===================================================================
--- branches/pingus_sdl/src/pingus_level.hxx 2007-01-14 06:25:22 UTC (rev
2645)
+++ branches/pingus_sdl/src/pingus_level.hxx 2007-01-14 10:10:10 UTC (rev
2646)
@@ -46,7 +46,7 @@
const std::string& get_description() const;
/** Returns the width of the level */
- const CL_Size& get_size() const;
+ const Size& get_size() const;
/** Returns the number of Pingus, which are going to be released in
this level. */
Modified: branches/pingus_sdl/src/pingus_main.cxx
===================================================================
--- branches/pingus_sdl/src/pingus_main.cxx 2007-01-14 06:25:22 UTC (rev
2645)
+++ branches/pingus_sdl/src/pingus_main.cxx 2007-01-14 10:10:10 UTC (rev
2646)
@@ -694,9 +694,11 @@
SExprFileReader reader(sexpr);
int t = 0;
+ std::string str;
reader.read_int("test", t);
+ reader.read_string("teststr", str);
- std::cout << reader.get_name() << ": t == " << t << std::endl;
+ std::cout << reader.get_name() << ": t == " << t << " str: " << str <<
std::endl;
}
else
{
Modified: branches/pingus_sdl/src/sexpr_file_reader.cpp
===================================================================
--- branches/pingus_sdl/src/sexpr_file_reader.cpp 2007-01-14 06:25:22 UTC
(rev 2645)
+++ branches/pingus_sdl/src/sexpr_file_reader.cpp 2007-01-14 10:10:10 UTC
(rev 2646)
@@ -24,6 +24,9 @@
*/
#include <assert.h>
+#include "math/vector3f.hpp"
+#include "math/color.hpp"
+#include "math/size.hpp"
#include "file_reader_impl.hxx"
#include "sexpr_file_reader.hpp"
@@ -58,69 +61,136 @@
bool read_int (const char* name, int& v) const
{
- lisp::Lisp* sub = get_subsection(name);
- if (sub && sub->get_list_size() == 2)
+ lisp::Lisp* item = get_subsection_item(name);
+ if (item && item->get_type() == lisp::Lisp::TYPE_INT)
{
- if (sub->get_list_elem(1)->get_type() == lisp::Lisp::TYPE_INT)
- {
- v = sub->get_list_elem(1)->get_int();
- return true;
- }
+ v = item->get_int();
+ return true;
}
return false;
}
- bool read_float (const char* name, float&) const
+ bool read_float (const char* name, float& v) const
{
+ lisp::Lisp* item = get_subsection_item(name);
+ if (item && item->get_type() == lisp::Lisp::TYPE_FLOAT)
+ {
+ v = item->get_float();
+ return true;
+ }
return false;
}
- bool read_bool (const char* name, bool&) const
+ bool read_bool (const char* name, bool& v) const
{
+ lisp::Lisp* item = get_subsection_item(name);
+ if (item && item->get_type() == lisp::Lisp::TYPE_BOOL)
+ {
+ v = item->get_bool();
+ return true;
+ }
return false;
}
- bool read_string(const char* name, std::string&) const
+ bool read_string(const char* name, std::string& v) const
{
+ lisp::Lisp* item = get_subsection_item(name);
+ if (item)
+ {
+ if (item->get_type() == lisp::Lisp::TYPE_STRING)
+ {
+ v = item->get_string();
+ return true;
+ }
+ else if (item->get_type() == lisp::Lisp::TYPE_SYMBOL)
+ {
+ v = item->get_symbol();
+ return true;
+ }
+ }
return false;
}
- bool read_vector(const char* name, Vector&) const
+ bool read_vector(const char* name, Vector3f& v) const
{
+ lisp::Lisp* sub = get_subsection_item(name);
+ if (sub && sub->get_list_size() == 4)
+ {
+ v = Vector3f(sub->get_list_elem(1)->get_float(),
+ sub->get_list_elem(2)->get_float(),
+ sub->get_list_elem(3)->get_float());
+ return true;
+ }
return false;
}
- bool read_color (const char* name, Color&) const
+ bool read_color (const char* name, Color& v) const
{
+ lisp::Lisp* sub = get_subsection_item(name);
+ if (sub && sub->get_list_size() == 5)
+ {
+ v = Color(int(sub->get_list_elem(1)->get_float() * 255),
+ int(sub->get_list_elem(2)->get_float() * 255),
+ int(sub->get_list_elem(3)->get_float() * 255),
+ int(sub->get_list_elem(4)->get_float() * 255));
+ return true;
+ }
return false;
}
- bool read_desc (const char* name, ResDescriptor&) const
+ bool read_desc (const char* name, ResDescriptor& v) const
{
return false;
}
- bool read_size (const char* name, CL_Size&) const
+ bool read_size (const char* name, Size& v) const
{
+ lisp::Lisp* sub = get_subsection_item(name);
+ if (sub && sub->get_list_size() == 3)
+ {
+ v = Size(int(sub->get_list_elem(1)->get_int()),
+ int(sub->get_list_elem(2)->get_int()));
+ return true;
+ }
return false;
}
- bool read_section(const char* name, FileReader&) const
+ bool read_section(const char* name, FileReader& v) const
{
+ lisp::Lisp* cur = get_subsection(name);
+ if (cur)
+ {
+ v = SExprFileReader(cur);
+ return true;
+ }
return false;
}
std::vector<FileReader> get_sections() const
{
- return std::vector<FileReader>();
+ std::vector<FileReader> lst;
+ for(size_t i = 1; i < sexpr->get_list_size(); ++i)
+ { // iterate over subsections
+ lst.push_back(SExprFileReader(sexpr->get_list_elem(i)));
+ }
+ return lst;
}
std::vector<std::string> get_section_names() const
{
return std::vector<std::string>();
}
+private:
+ lisp::Lisp* get_subsection_item(const char* name) const
+ {
+ lisp::Lisp* sub = get_subsection(name);
+ if (sub && sub->get_list_size() == 2)
+ {
+ return sub->get_list_elem(1);
+ }
+ return 0;
+ }
-private:
lisp::Lisp* get_subsection(const char* name) const
{
for(size_t i = 1; i < sexpr->get_list_size(); ++i)
@@ -130,8 +200,8 @@
return sub;
}
return 0;
- }
-
+ }
+
};
SExprFileReader::SExprFileReader(lisp::Lisp* lisp)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pingus-CVS] r2646 - branches/pingus_sdl/src,
grumbel at BerliOS <=