00001
00002 #ifndef ANAPHE_TUPLEVARIABLEDECSRIPTIONBUILDER_H
00003 #define ANAPHE_TUPLEVARIABLEDECSRIPTIONBUILDER_H 1
00004
00005 #include <vector>
00006 #include <list>
00007 #include <string>
00008
00009 namespace AIDA {
00010 namespace Dev {
00011 class ITupleVariableDescription;
00012 class ITupleHeader;
00013 class IDevTupleFactory;
00014 }
00015 }
00016
00017 namespace Anaphe {
00018 namespace AIDA_Tuple_native {
00019
00020 class TupleVariableDescriptionBuilder
00021 {
00022 public:
00024 TupleVariableDescriptionBuilder( AIDA::Dev::IDevTupleFactory& factory );
00026 ~TupleVariableDescriptionBuilder() {}
00027
00029 bool buildDescription( AIDA::Dev::ITupleHeader& header,
00030 const std::string& descriptionString );
00031
00033 bool buildDescription( AIDA::Dev::ITupleHeader& header,
00034 const std::vector<std::string>& variableNames,
00035 const std::vector<std::string>& variableTypes );
00036
00037
00039 bool buildDescription( AIDA::Dev::ITupleVariableDescription& description,
00040 const std::string& descriptionString );
00041
00043 bool buildDescription( AIDA::Dev::ITupleVariableDescription& description,
00044 const std::vector<std::string>& variableNames,
00045 const std::vector<std::string>& variableTypes );
00046
00048 bool decompose( const std::string& input,
00049 std::vector<std::string>& variableNames,
00050 std::vector<std::string>& variableTypes ) const;
00051
00052 private:
00054 AIDA::Dev::IDevTupleFactory& m_factory;
00055
00057 template< class T > bool buildDescriptionT( T& t,
00058 const std::vector<std::string>& variableNames,
00059 const std::vector<std::string>& variableTypes );
00060 };
00061
00062 }
00063 }
00064
00065 #include "TupleVariableDescriptionBuilder.templ"
00066
00067 #endif