00001 #ifndef FIELDFACTORY_H_PROTECTOR
00002 #define FIELDFACTORY_H_PROTECTOR
00003
00004 #include "field.h"
00005 #include "compositefield.h"
00006 #include "xmlparser.h"
00007 #include <string>
00008 #include <vector>
00009
00010 namespace afl
00011 {
00016 class FieldFactory
00017 {
00018 public:
00022 FieldFactory( ) { }
00023
00027 virtual ~FieldFactory( ) { }
00028
00035 Field* load( const std::string& fullPath ) const;
00036
00044 Field* load( const std::string& path, const std::string& name ) const;
00045
00046
00053 Field* loadFieldURI( const std::string& uri, XMLParser* parser = NULL ) const;
00054
00063 void save( const std::string& path, const Field* field,
00064 const std::string& baseURI = "" ) const;
00065
00071 Field* getNewField( const std::string& name, size_t dim ) const;
00072
00080 Field* getNewField( const std::string& name, std::vector<const Field*> fields, std::vector<std::string> functions, size_t columns = 1 );
00081
00082 private:
00083
00084 Field* parseField( const std::string& dir, XMLNode* field ) const;
00085 CompositeField* parseComposite( const std::string& dir, XMLNode* composite ) const;
00086 };
00087
00088 }
00089 #endif
00090