THRIFT-1485 Performance: pass large and/or refcounted arguments as "const"
Patch: Jens Geyer

git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1228965 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/delphi/src/Thrift.Protocol.pas b/lib/delphi/src/Thrift.Protocol.pas
index 8fa6008..82c58b1 100644
--- a/lib/delphi/src/Thrift.Protocol.pas
+++ b/lib/delphi/src/Thrift.Protocol.pas
@@ -61,7 +61,7 @@
 

   IProtocolFactory = interface

     ['{7CD64A10-4E9F-4E99-93BF-708A31F4A67B}']

-    function GetProtocol( trans: ITransport): IProtocol;

+    function GetProtocol( const trans: ITransport): IProtocol;

   end;

 

   TThriftStringBuilder = class( TStringBuilder)

@@ -236,25 +236,25 @@
   IProtocol = interface

     ['{FD95C151-1527-4C96-8134-B902BFC4B4FC}']

     function GetTransport: ITransport;

-    procedure WriteMessageBegin( message: IMessage);

+    procedure WriteMessageBegin( const msg: IMessage);

     procedure WriteMessageEnd;

-    procedure WriteStructBegin(struc: IStruct);

+    procedure WriteStructBegin( const struc: IStruct);

     procedure WriteStructEnd;

-    procedure WriteFieldBegin(field: IField);

+    procedure WriteFieldBegin( const field: IField);

     procedure WriteFieldEnd;

     procedure WriteFieldStop;

-    procedure WriteMapBegin(map: IMap);

+    procedure WriteMapBegin( const map: IMap);

     procedure WriteMapEnd;

-    procedure WriteListBegin( list: IList);

+    procedure WriteListBegin( const list: IList);

     procedure WriteListEnd();

-    procedure WriteSetBegin( set_: ISet );

+    procedure WriteSetBegin( const set_: ISet );

     procedure WriteSetEnd();

     procedure WriteBool( b: Boolean);

     procedure WriteByte( b: ShortInt);

     procedure WriteI16( i16: SmallInt);

     procedure WriteI32( i32: Integer);

-    procedure WriteI64( i64: Int64);

-    procedure WriteDouble( d: Double);

+    procedure WriteI64( const i64: Int64);

+    procedure WriteDouble( const d: Double);

     procedure WriteString( const s: string );

     procedure WriteAnsiString( const s: AnsiString);

     procedure WriteBinary( const b: TBytes);

@@ -288,25 +288,25 @@
     FTrans : ITransport;

     function GetTransport: ITransport;

   public

-    procedure WriteMessageBegin( message: IMessage); virtual; abstract;

+    procedure WriteMessageBegin( const msg: IMessage); virtual; abstract;

     procedure WriteMessageEnd; virtual; abstract;

-    procedure WriteStructBegin(struc: IStruct); virtual; abstract;

+    procedure WriteStructBegin( const struc: IStruct); virtual; abstract;

     procedure WriteStructEnd; virtual; abstract;

-    procedure WriteFieldBegin(field: IField); virtual; abstract;

+    procedure WriteFieldBegin( const field: IField); virtual; abstract;

     procedure WriteFieldEnd; virtual; abstract;

     procedure WriteFieldStop; virtual; abstract;

-    procedure WriteMapBegin(map: IMap); virtual; abstract;

+    procedure WriteMapBegin( const map: IMap); virtual; abstract;

     procedure WriteMapEnd; virtual; abstract;

-    procedure WriteListBegin( list: IList); virtual; abstract;

+    procedure WriteListBegin( const list: IList); virtual; abstract;

     procedure WriteListEnd(); virtual; abstract;

-    procedure WriteSetBegin( set_: ISet ); virtual; abstract;

+    procedure WriteSetBegin( const set_: ISet ); virtual; abstract;

     procedure WriteSetEnd(); virtual; abstract;

     procedure WriteBool( b: Boolean); virtual; abstract;

     procedure WriteByte( b: ShortInt); virtual; abstract;

     procedure WriteI16( i16: SmallInt); virtual; abstract;

     procedure WriteI32( i32: Integer); virtual; abstract;

-    procedure WriteI64( i64: Int64); virtual; abstract;

-    procedure WriteDouble( d: Double); virtual; abstract;

+    procedure WriteI64( const i64: Int64); virtual; abstract;

+    procedure WriteDouble( const d: Double); virtual; abstract;

     procedure WriteString( const s: string ); virtual;

     procedure WriteAnsiString( const s: AnsiString); virtual;

     procedure WriteBinary( const b: TBytes); virtual; abstract;

@@ -341,8 +341,8 @@
   IBase = interface

     ['{08D9BAA8-5EAA-410F-B50B-AC2E6E5E4155}']

     function ToString: string;

-    procedure Read( iprot: IProtocol);

-    procedure Write( iprot: IProtocol);

+    procedure Read( const iprot: IProtocol);

+    procedure Write( const iprot: IProtocol);

   end;

 

   IStruct = interface

@@ -385,33 +385,33 @@
         FStrictRead : Boolean;

         FStrictWrite : Boolean;

       public

-        function GetProtocol(trans: ITransport): IProtocol;

+        function GetProtocol( const trans: ITransport): IProtocol;

         constructor Create( AStrictRead, AStrictWrite: Boolean ); overload;

         constructor Create; overload;

       end;

 

-    constructor Create( trans: ITransport); overload;

-    constructor Create( trans: ITransport; strictRead: Boolean; strictWrite: Boolean); overload;

+    constructor Create( const trans: ITransport); overload;

+    constructor Create( const trans: ITransport; strictRead: Boolean; strictWrite: Boolean); overload;

 

-    procedure WriteMessageBegin( message: IMessage); override;

+    procedure WriteMessageBegin( const msg: IMessage); override;

     procedure WriteMessageEnd; override;

-    procedure WriteStructBegin(struc: IStruct); override;

+    procedure WriteStructBegin( const struc: IStruct); override;

     procedure WriteStructEnd; override;

-    procedure WriteFieldBegin(field: IField); override;

+    procedure WriteFieldBegin( const field: IField); override;

     procedure WriteFieldEnd; override;

     procedure WriteFieldStop; override;

-    procedure WriteMapBegin(map: IMap); override;

+    procedure WriteMapBegin( const map: IMap); override;

     procedure WriteMapEnd; override;

-    procedure WriteListBegin( list: IList); override;

+    procedure WriteListBegin( const list: IList); override;

     procedure WriteListEnd(); override;

-    procedure WriteSetBegin( set_: ISet ); override;

+    procedure WriteSetBegin( const set_: ISet ); override;

     procedure WriteSetEnd(); override;

     procedure WriteBool( b: Boolean); override;

     procedure WriteByte( b: ShortInt); override;

     procedure WriteI16( i16: SmallInt); override;

     procedure WriteI32( i32: Integer); override;

-    procedure WriteI64( i64: Int64); override;

-    procedure WriteDouble( d: Double); override;

+    procedure WriteI64( const i64: Int64); override;

+    procedure WriteDouble( const d: Double); override;

     procedure WriteBinary( const b: TBytes); override;

 

     function ReadMessageBegin: IMessage; override;

@@ -439,13 +439,13 @@
 

 implementation

 

-function ConvertInt64ToDouble( n: Int64): Double;

+function ConvertInt64ToDouble( const n: Int64): Double;

 begin

   ASSERT( SizeOf(n) = SizeOf(Result));

   System.Move( n, Result, SizeOf(Result));

 end;

 

-function ConvertDoubleToInt64( d: Double): Int64;

+function ConvertDoubleToInt64( const d: Double): Int64;

 begin

   ASSERT( SizeOf(d) = SizeOf(Result));

   System.Move( d, Result, SizeOf(Result));

@@ -739,7 +739,7 @@
 

 { TBinaryProtocolImpl }

 

-constructor TBinaryProtocolImpl.Create( trans: ITransport);

+constructor TBinaryProtocolImpl.Create( const trans: ITransport);

 begin

   Create( trans, False, True);

 end;

@@ -756,7 +756,7 @@
   end;

 end;

 

-constructor TBinaryProtocolImpl.Create(trans: ITransport; strictRead,

+constructor TBinaryProtocolImpl.Create( const trans: ITransport; strictRead,

   strictWrite: Boolean);

 begin

   inherited Create( trans );

@@ -997,12 +997,12 @@
   FTrans.Write( a, 0, 1 );

 end;

 

-procedure TBinaryProtocolImpl.WriteDouble(d: Double);

+procedure TBinaryProtocolImpl.WriteDouble( const d: Double);

 begin

   WriteI64(ConvertDoubleToInt64(d));

 end;

 

-procedure TBinaryProtocolImpl.WriteFieldBegin(field: IField);

+procedure TBinaryProtocolImpl.WriteFieldBegin( const field: IField);

 begin

   WriteByte(ShortInt(field.Type_));

   WriteI16(field.ID);

@@ -1040,7 +1040,7 @@
   FTrans.Write( i32out, 0, 4);

 end;

 

-procedure TBinaryProtocolImpl.WriteI64(i64: Int64);

+procedure TBinaryProtocolImpl.WriteI64( const i64: Int64);

 var

   i64out : TBytes;

 begin

@@ -1056,7 +1056,7 @@
   FTrans.Write( i64out, 0, 8);

 end;

 

-procedure TBinaryProtocolImpl.WriteListBegin(list: IList);

+procedure TBinaryProtocolImpl.WriteListBegin( const list: IList);

 begin

   WriteByte(ShortInt(list.ElementType));

   WriteI32(list.Count);

@@ -1067,7 +1067,7 @@
 

 end;

 

-procedure TBinaryProtocolImpl.WriteMapBegin(map: IMap);

+procedure TBinaryProtocolImpl.WriteMapBegin( const map: IMap);

 begin

   WriteByte(ShortInt(map.KeyType));

   WriteByte(ShortInt(map.ValueType));

@@ -1079,21 +1079,21 @@
 

 end;

 

-procedure TBinaryProtocolImpl.WriteMessageBegin( message: IMessage);

+procedure TBinaryProtocolImpl.WriteMessageBegin( const msg: IMessage);

 var

   version : Cardinal;

 begin

   if FStrictWrite then

   begin

-    version := VERSION_1 or Cardinal( message.Type_);

+    version := VERSION_1 or Cardinal( msg.Type_);

     WriteI32( Integer( version) );

-    WriteString( message.Name);

-  	WriteI32(message.SeqID);

+    WriteString( msg.Name);

+  	WriteI32( msg.SeqID);

   end else

   begin

-    WriteString(message.Name);

-    WriteByte(ShortInt(message.Type_));

-    WriteI32(message.SeqID);

+    WriteString( msg.Name);

+    WriteByte(ShortInt( msg.Type_));

+    WriteI32( msg.SeqID);

   end;

 end;

 

@@ -1102,7 +1102,7 @@
 

 end;

 

-procedure TBinaryProtocolImpl.WriteSetBegin(set_: ISet);

+procedure TBinaryProtocolImpl.WriteSetBegin( const set_: ISet);

 begin

   WriteByte(ShortInt(set_.ElementType));

   WriteI32(set_.Count);

@@ -1113,7 +1113,7 @@
 

 end;

 

-procedure TBinaryProtocolImpl.WriteStructBegin(struc: IStruct);

+procedure TBinaryProtocolImpl.WriteStructBegin( const struc: IStruct);

 begin

 

 end;

@@ -1169,7 +1169,7 @@
   Create( False, True )

 end;

 

-function TBinaryProtocolImpl.TFactory.GetProtocol(trans: ITransport): IProtocol;

+function TBinaryProtocolImpl.TFactory.GetProtocol( const trans: ITransport): IProtocol;

 begin

   Result := TBinaryProtocolImpl.Create( trans );

 end;