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