THRIFT-2859 JSON generator: output complete descriptors
Client: JSON
Patch: Stig Bakken <stig@zedge.net>

This closes #290

- add --gen json:merge option, and disable merging by default
- output complete descriptors
- add schema for JSON generator
- indent output
diff --git a/compiler/cpp/src/parse/t_program.h b/compiler/cpp/src/parse/t_program.h
index 386f589..0c3de38 100644
--- a/compiler/cpp/src/parse/t_program.h
+++ b/compiler/cpp/src/parse/t_program.h
@@ -93,13 +93,14 @@
   const std::string& get_include_prefix() const { return include_prefix_; }
 
   // Accessors for program elements
-  const std::vector<t_typedef*>& get_typedefs() const { return typedefs_; }
-  const std::vector<t_enum*>& get_enums() const { return enums_; }
-  const std::vector<t_const*>& get_consts() const { return consts_; }
-  const std::vector<t_struct*>& get_structs() const { return structs_; }
-  const std::vector<t_struct*>& get_xceptions() const { return xceptions_; }
-  const std::vector<t_struct*>& get_objects() const { return objects_; }
-  const std::vector<t_service*>& get_services() const { return services_; }
+  const std::vector<t_typedef*>&           get_typedefs()   const { return typedefs_;   }
+  const std::vector<t_enum*>&              get_enums()      const { return enums_;      }
+  const std::vector<t_const*>&             get_consts()     const { return consts_;     }
+  const std::vector<t_struct*>&            get_structs()    const { return structs_;    }
+  const std::vector<t_struct*>&            get_xceptions()  const { return xceptions_;  }
+  const std::vector<t_struct*>&            get_objects()    const { return objects_;    }
+  const std::vector<t_service*>&           get_services()   const { return services_;   }
+  const std::map<std::string,std::string>& get_namespaces() const { return namespaces_; }
 
   // Program elements
   void add_typedef(t_typedef* td) { typedefs_.push_back(td); }