Skip to content

Commit

Permalink
More efficient enum flag checking
Browse files Browse the repository at this point in the history
  • Loading branch information
roji committed Jan 17, 2019
1 parent 1f5699e commit 38d5615
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions NetTopologySuite.IO.PostGis/PostGisReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -221,22 +221,27 @@ protected ICoordinateSequence ReadCoordinateSequence(BinaryReader reader, ICoord

var sequence = factory.Create(numPoints, outputOrdinates);

var receivedZ = receivedOrdinates.HasFlag(Ordinates.Z);
var receivedM = receivedOrdinates.HasFlag(Ordinates.M);
var outputtingZ = outputOrdinates.HasFlag(Ordinates.Z);
var outputtingM = outputOrdinates.HasFlag(Ordinates.M);

for (int i = 0; i < numPoints; i++)
{
sequence.SetOrdinate(i, Ordinate.X, precisionModel.MakePrecise(reader.ReadDouble()));
sequence.SetOrdinate(i, Ordinate.Y, precisionModel.MakePrecise(reader.ReadDouble()));

if (receivedOrdinates.HasFlag(Ordinates.Z))
if (receivedZ)
{
var z = reader.ReadDouble();
if (outputOrdinates.HasFlag(Ordinates.Z))
if (outputtingZ)
sequence.SetOrdinate(i, Ordinate.Z, z);
}

if (receivedOrdinates.HasFlag(Ordinates.M))
if (receivedM)
{
var m = reader.ReadDouble();
if (outputOrdinates.HasFlag(Ordinates.M))
if (outputtingM)
sequence.SetOrdinate(i, Ordinate.M, m);
}
}
Expand Down

0 comments on commit 38d5615

Please sign in to comment.