diff options
Diffstat (limited to 'Swiften/Entity/GenericPayloadPersister.h')
| -rw-r--r-- | Swiften/Entity/GenericPayloadPersister.h | 36 | 
1 files changed, 36 insertions, 0 deletions
| diff --git a/Swiften/Entity/GenericPayloadPersister.h b/Swiften/Entity/GenericPayloadPersister.h new file mode 100644 index 0000000..63553de --- /dev/null +++ b/Swiften/Entity/GenericPayloadPersister.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2011 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +#include <Swiften/Entity/PayloadPersister.h> +#include <Swiften/Parser/GenericPayloadParserFactory.h> + +namespace Swift { +	template<typename PAYLOAD, typename PARSER, typename SERIALIZER> +	class GenericPayloadPersister : public PayloadPersister { +		public: +			GenericPayloadPersister() { +			} + +		public: +			boost::shared_ptr<PAYLOAD> loadPayloadGeneric(const boost::filesystem::path& path) { +				return boost::dynamic_pointer_cast<PAYLOAD>(loadPayload(path)); +			} + +		protected: +			virtual const PayloadSerializer* getSerializer() const { +				return &serializer; +			} + +			virtual PayloadParser* createParser() const { +				return new PARSER(); +			} + +		private: +			SERIALIZER serializer; +	}; +} | 
 Swift
 Swift