Git Init
[profile/ivi/wrt-plugins-tizen.git] / src / platform / API / Filter / CompositeFilter.h
1 /*
2  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 /**
18  * @file       CompositeFilter.h
19  * @author     Kisub Song (kisubs.song@samsung.com)
20  * @version    0.1
21  * @brief
22  */
23
24 #ifndef _API_COMPOSITE_FILTER_H_
25 #define _API_COMPOSITE_FILTER_H_
26
27 #include <string>
28 #include <dpl/shared_ptr.h>
29 #include "IFilter.h"
30 #include "FilterTypes.h"
31
32 namespace TizenApis {
33 namespace Api {
34 namespace Tizen {
35
36 class CompositeFilter : public IFilter
37 {
38 private: // fields
39         /**
40          * filter type. UNION_FILTER(OR) or INTERSECTION_FILTER(AND)
41          */
42         FilterType              m_type;
43
44         /**
45          * filter array.
46          */
47         FilterArrayPtr  m_filters;
48
49 protected:
50
51 public: // methods
52         /**
53          * constructor of abstraction filter
54          * @param[in] filterType - type of filter according to FilterType
55          */
56         explicit CompositeFilter(const FilterType& type, const FilterArrayPtr& filters);
57
58         virtual ~CompositeFilter();
59
60         /**
61          * method used to identify filter type
62          */
63         virtual FilterType getFilterType() const;
64
65         virtual bool setFilterType(const FilterType& filterType);
66
67         virtual bool validate(FilterValidatorPtr& validator, int depth = 0);
68
69         virtual void travel(IFilterVisitorPtr& visitor, int depth = 0);
70
71         FilterArrayPtr getFilters() const;
72         void setFilters(const FilterArrayPtr& value);
73 };
74
75 typedef DPL::SharedPtr<CompositeFilter> CompositeFilterPtr;
76
77 } // Tizen
78 } // Api
79 } // TizenApis
80
81 #endif // _API_COMPOSITE_FILTER_H_