m2etis  0.4
AttributeAccessor.h
Go to the documentation of this file.
1 /*
2  Copyright (2016) Michael Baer, Daniel Bonrath, 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 
22 #ifndef __M2ETIS_PUBSUB_FILTER_ATTRIBUTEACCESSOR_H__
23 #define __M2ETIS_PUBSUB_FILTER_ATTRIBUTEACCESSOR_H__
24 
26 
27 namespace m2etis {
28 namespace pubsub {
29 namespace filter {
30 
31  // maps attribute identifier for event type and attribute type to attribute value
32  template<typename EventType, typename AttributeType>
34  public:
35  // constructor with pointer to EventType attribute member
36  explicit AttributeAccessor(AttributeType EventType::*attribute_accessor_pointer) : attribute_accessor_pointer_(attribute_accessor_pointer) {}
37 
38  // constructor with get-function for EventType attribute member
39  explicit AttributeAccessor(std::function<AttributeType(const EventType &)> attribute_accessor_function) : attribute_accessor_function_(attribute_accessor_function), attribute_accessor_pointer_(nullptr) {}
40 
41  AttributeType getAttributeValue(const EventType & event) {
42  return attribute_accessor_pointer_ ? event.*attribute_accessor_pointer_ : attribute_accessor_function_(event);
43  }
44 
45  private:
46  std::function<AttributeType(const EventType &)> attribute_accessor_function_; // returns Attribute value for attribute id
47 
48  AttributeType EventType::*attribute_accessor_pointer_;
49  };
50 
51 } /* namespace filter */
52 } /* namespace pubsub */
53 } /* namespace m2etis */
54 
55 #endif /* __M2ETIS_PUBSUB_FILTER_ATTRIBUTEACCESSOR_H__ */
56 
AttributeType getAttributeValue(const EventType &event)
AttributeAccessor(AttributeType EventType::*attribute_accessor_pointer)
AttributeAccessor(std::function< AttributeType(const EventType &)> attribute_accessor_function)