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_MAP_H 21 : #define T_MAP_H 22 : 23 : #include "t_container.h" 24 : 25 : /** 26 : * A map is a lightweight container type that just wraps another two data 27 : * types. 28 : * 29 : */ 30 : class t_map : public t_container { 31 : public: 32 2404 : t_map(t_type* key_type, t_type* val_type) : 33 2404 : key_type_(key_type), 34 2404 : val_type_(val_type) {} 35 : 36 11993 : t_type* get_key_type() const { 37 11993 : return key_type_; 38 : } 39 : 40 12647 : t_type* get_val_type() const { 41 12647 : return val_type_; 42 : } 43 : 44 9008 : bool is_map() const { 45 9008 : return true; 46 : } 47 : 48 3351 : virtual std::string get_fingerprint_material() const { 49 6702 : return "map<" + key_type_->get_fingerprint_material() + 50 13404 : "," + val_type_->get_fingerprint_material() + ">"; 51 : } 52 : 53 1111 : virtual void generate_fingerprint() { 54 1111 : t_type::generate_fingerprint(); 55 1111 : key_type_->generate_fingerprint(); 56 1111 : val_type_->generate_fingerprint(); 57 1111 : } 58 : 59 : private: 60 : t_type* key_type_; 61 : t_type* val_type_; 62 : }; 63 : 64 : #endif