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 : 20 : #ifndef T_SET_H 21 : #define T_SET_H 22 : 23 : #include "t_container.h" 24 : 25 : /** 26 : * A set is a lightweight container type that just wraps another data type. 27 : * 28 : */ 29 : class t_set : public t_container { 30 : public: 31 110 : t_set(t_type* elem_type) : 32 110 : elem_type_(elem_type) {} 33 : 34 409 : t_type* get_elem_type() const { 35 409 : return elem_type_; 36 : } 37 : 38 523 : bool is_set() const { 39 523 : return true; 40 : } 41 : 42 336 : virtual std::string get_fingerprint_material() const { 43 672 : return "set<" + elem_type_->get_fingerprint_material() + ">"; 44 : } 45 : 46 111 : virtual void generate_fingerprint() { 47 111 : t_type::generate_fingerprint(); 48 111 : elem_type_->generate_fingerprint(); 49 111 : } 50 : 51 : private: 52 : t_type* elem_type_; 53 : }; 54 : 55 : #endif