/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef HADOOP_PIPES_TEMPLATE_FACTORY_HH #define HADOOP_PIPES_TEMPLATE_FACTORY_HH namespace HadoopPipes { template class TemplateFactory2: public Factory { public: Mapper* createMapper(MapContext& context) const { return new mapper(context); } Reducer* createReducer(ReduceContext& context) const { return new reducer(context); } }; template class TemplateFactory3: public TemplateFactory2 { public: Partitioner* createPartitioner(MapContext& context) const { return new partitioner(context); } }; template class TemplateFactory3 : public TemplateFactory2 { }; template class TemplateFactory4 : public TemplateFactory3{ public: Reducer* createCombiner(MapContext& context) const { return new combiner(context); } }; template class TemplateFactory4 : public TemplateFactory3{ }; template class TemplateFactory5 : public TemplateFactory4{ public: RecordReader* createRecordReader(MapContext& context) const { return new recordReader(context); } }; template class TemplateFactory5 : public TemplateFactory4{ }; template class TemplateFactory : public TemplateFactory5{ public: RecordWriter* createRecordWriter(ReduceContext& context) const { return new recordWriter(context); } }; template class TemplateFactory : public TemplateFactory5{ }; } #endif