THRIFT-129. csharp: Make all Thrift structures extend TBase
authorDavid Reiss <dreiss@apache.org>
Tue, 6 Jan 2009 19:49:33 +0000 (19:49 +0000)
committerDavid Reiss <dreiss@apache.org>
Tue, 6 Jan 2009 19:49:33 +0000 (19:49 +0000)
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@732081 13f79535-47bb-0310-9956-ffa450edef68

compiler/cpp/src/generate/t_csharp_generator.cc
lib/csharp/src/Protocol/TBase.cs [new file with mode: 0644]
lib/csharp/src/Thrift.csproj

index a5c4bd1..088a025 100644 (file)
@@ -387,18 +387,18 @@ void t_csharp_generator::generate_csharp_struct(t_struct* tstruct, bool is_excep
 
 void t_csharp_generator::generate_csharp_struct_definition(ofstream &out, t_struct* tstruct, bool is_exception, bool in_class, bool is_result) {
 
-  if (!in_class)
-  {
+  if (!in_class) {
     start_csharp_namespace(out);
   }
 
   out << endl;
   indent(out) << "[Serializable]" << endl;
-  indent(out) << "public class " << tstruct->get_name() << " ";
+  indent(out) << "public class " << tstruct->get_name() << " ";
 
   if (is_exception) {
-    out << ": Exception ";
+    out << "Exception, ";
   }
+  out << "TBase";
 
   out << endl;
 
diff --git a/lib/csharp/src/Protocol/TBase.cs b/lib/csharp/src/Protocol/TBase.cs
new file mode 100644 (file)
index 0000000..46c5e2a
--- /dev/null
@@ -0,0 +1,23 @@
+//
+//  TBase.cs
+//
+//  Distributed under the Thrift Software License
+//
+//  See accompanying file LICENSE or visit the Thrift site at:
+//  http://developers.facebook.com/thrift/using
+
+namespace Thrift.Protocol
+{
+       public interface TBase
+       {
+               ///
+               /// Reads the TObject from the given input protocol.
+               ///
+               void Read(TProtocol tProtocol);
+
+               ///
+               /// Writes the objects out to the protocol
+               ///
+               void Write(TProtocol tProtocol);
+       }
+}
index 1a1a332..9f3f620 100644 (file)
@@ -46,6 +46,7 @@
     <Reference Include="System.Xml.Linq" />
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="Protocol\TBase.cs" />
     <Compile Include="Protocol\TBinaryProtocol.cs" />
     <Compile Include="Protocol\TField.cs" />
     <Compile Include="Protocol\TList.cs" />