2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 * @file CompositeFilter.h
19 * @author Kisub Song (kisubs.song@samsung.com)
24 #ifndef _API_COMPOSITE_FILTER_H_
25 #define _API_COMPOSITE_FILTER_H_
28 #include <dpl/shared_ptr.h>
30 #include "FilterTypes.h"
36 class CompositeFilter : public IFilter
40 * filter type. UNION_FILTER(OR) or INTERSECTION_FILTER(AND)
47 FilterArrayPtr m_filters;
53 * constructor of abstraction filter
54 * @param[in] filterType - type of filter according to FilterType
56 explicit CompositeFilter(const FilterType& type, const FilterArrayPtr& filters);
58 virtual ~CompositeFilter();
61 * method used to identify filter type
63 virtual FilterType getFilterType() const;
65 virtual bool setFilterType(const FilterType& filterType);
67 virtual bool validate(FilterValidatorPtr& validator, int depth = 0);
69 virtual void travel(IFilterVisitorPtr& visitor, int depth = 0);
71 FilterArrayPtr getFilters() const;
72 void setFilters(const FilterArrayPtr& value);
75 typedef DPL::SharedPtr<CompositeFilter> CompositeFilterPtr;
81 #endif // _API_COMPOSITE_FILTER_H_