THRIFT-2471 Make cpp.ref annotation language agnostic
Client: compiler general
Patch: Dave Watson

This closes #113

commit 52b99af4ee1574253dcb77933d76a7ebb2d830df
 Author: Dave Watson <davejwatson@fb.com>
 Date: 2014-04-23T20:05:56Z

change cpp.ref to &

commit 3f9d31cc6140367529fd8f7b1b67056ec321786f
 Author: Dave Watson <davejwatson@fb.com>
 Date: 2014-04-23T21:50:29Z

Recursion depth limit

commit 61468e4534ce9e6a4f4f643bfd00542d13600d83
 Author: Dave Watson <davejwatson@fb.com>
 Date: 2014-04-25T19:59:18Z

shared_ptr for reference type
diff --git a/compiler/cpp/src/parse/t_field.h b/compiler/cpp/src/parse/t_field.h
index 7bbcc0f..c05fdf3 100644
--- a/compiler/cpp/src/parse/t_field.h
+++ b/compiler/cpp/src/parse/t_field.h
@@ -42,7 +42,8 @@
     value_(NULL),
     xsd_optional_(false),
     xsd_nillable_(false),
-    xsd_attrs_(NULL) {}
+    xsd_attrs_(NULL),
+    reference_(false) {}
 
   t_field(t_type* type, std::string name, int32_t key) :
     type_(type),
@@ -52,7 +53,8 @@
     value_(NULL),
     xsd_optional_(false),
     xsd_nillable_(false),
-    xsd_attrs_(NULL) {}
+    xsd_attrs_(NULL),
+    reference_(false) {}
 
   ~t_field() {}
 
@@ -137,6 +139,14 @@
 
   std::map<std::string, std::string> annotations_;
 
+  bool get_reference() {
+    return reference_;
+  }
+
+  void set_reference(bool reference) {
+    reference_ = reference;
+  }
+
  private:
   t_type* type_;
   std::string name_;
@@ -147,7 +157,7 @@
   bool xsd_optional_;
   bool xsd_nillable_;
   t_struct* xsd_attrs_;
-
+  bool reference_;
 };
 
 /**