blob: 20a32bedecefcfeb78916d614e01f82b95a88aa1 [file] [log] [blame]
Mark Sleee9ce01c2007-05-16 02:29:53 +00001// Copyright (c) 2006- Facebook
2// Distributed under the Thrift Software License
3//
4// See accompanying file LICENSE or visit the Thrift site at:
5// http://developers.facebook.com/thrift/
6
Mark Sleee8540632006-05-30 09:24:40 +00007#ifndef T_MAP_H
8#define T_MAP_H
9
Mark Slee4f8da1d2006-10-12 02:47:27 +000010#include "t_container.h"
11
Mark Sleef5377b32006-10-10 01:42:59 +000012/**
13 * A map is a lightweight container type that just wraps another two data
14 * types.
15 *
Mark Sleef5377b32006-10-10 01:42:59 +000016 */
Mark Slee4f8da1d2006-10-12 02:47:27 +000017class t_map : public t_container {
Mark Sleee8540632006-05-30 09:24:40 +000018 public:
19 t_map(t_type* key_type, t_type* val_type) :
Mark Sleef5377b32006-10-10 01:42:59 +000020 key_type_(key_type),
21 val_type_(val_type) {}
Mark Sleee8540632006-05-30 09:24:40 +000022
Mark Sleef5377b32006-10-10 01:42:59 +000023 t_type* get_key_type() const {
24 return key_type_;
25 }
26
27 t_type* get_val_type() const {
28 return val_type_;
29 }
30
31 bool is_map() const {
32 return true;
33 }
Mark Sleee8540632006-05-30 09:24:40 +000034
David Reiss18bf22d2007-08-28 20:49:17 +000035 virtual std::string get_fingerprint_material() const {
36 return "map<" + key_type_->get_fingerprint_material() +
37 "," + val_type_->get_fingerprint_material() + ">";
38 }
39
David Reiss9885c682007-08-30 23:12:37 +000040 virtual void generate_fingerprint() {
41 t_type::generate_fingerprint();
42 key_type_->generate_fingerprint();
43 val_type_->generate_fingerprint();
44 }
45
Mark Sleee8540632006-05-30 09:24:40 +000046 private:
47 t_type* key_type_;
48 t_type* val_type_;
49};
50
51#endif