Line data Source code
1 : /* 2 : * Licensed to the Apache Software Foundation (ASF) under one 3 : * or more contributor license agreements. See the NOTICE file 4 : * distributed with this work for additional information 5 : * regarding copyright ownership. The ASF licenses this file 6 : * to you under the Apache License, Version 2.0 (the 7 : * "License"); you may not use this file except in compliance 8 : * with the License. You may obtain a copy of the License at 9 : * 10 : * http://www.apache.org/licenses/LICENSE-2.0 11 : * 12 : * Unless required by applicable law or agreed to in writing, 13 : * software distributed under the License is distributed on an 14 : * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 : * KIND, either express or implied. See the License for the 16 : * specific language governing permissions and limitations 17 : * under the License. 18 : * 19 : * Modifications Copyright (c) Juniper Networks, Inc. 20 : * Copyright Contributors to the OpenSDN project 21 : */ 22 : 23 : #ifndef T_SET_H 24 : #define T_SET_H 25 : 26 : #include "t_container.h" 27 : 28 : /** 29 : * A set is a lightweight container type that just wraps another data type. 30 : * 31 : */ 32 : class t_set : public t_container { 33 : public: 34 110 : t_set(t_type* elem_type) : 35 110 : elem_type_(elem_type) {} 36 : 37 409 : t_type* get_elem_type() const { 38 409 : return elem_type_; 39 : } 40 : 41 523 : bool is_set() const { 42 523 : return true; 43 : } 44 : 45 336 : virtual std::string get_fingerprint_material() const { 46 672 : return "set<" + elem_type_->get_fingerprint_material() + ">"; 47 : } 48 : 49 111 : virtual void generate_fingerprint() { 50 111 : t_type::generate_fingerprint(); 51 111 : elem_type_->generate_fingerprint(); 52 111 : } 53 : 54 : private: 55 : t_type* elem_type_; 56 : }; 57 : 58 : #endif