So where are we going from here with the Otp.Net code? First off, if we bring the codebase into .Net 2.0 from its '04-'06 vintage, and make all the data classes in the Otp.Erlang
namespace immutable -- returning ReadOnlyConnection(of T)
rather than arrays as needed -- we can get rid of the ICloneable
support. That lets us make Otp.Erlang.Object
into an interface containing just the encode
method(dropping the decode
method, or making it an extension method as per C# 3.0).
Then we can use some subset of the fields used in equality tests to do GetHashCode
properly, and replace arrays with growable collections.
Next, fix the range check on Double
's floatValue
method, and make it return a nullable value:
public float? floatValue() { if (d > Single.MaxValue || d < Single.MinValue) return null; return (float) d; }
and rename Long
as Integer
, kill both their derived classes and make Integer
carry a BigInteger
to which we can delegate conversions returning nullables.
That will mean some fixing up of input and output, but we need that anyway to handle new-style float values encoded as 8-byte big-endian blobs (and the change of tense means that this is where we move past what I've done so far).
To come after that will be making GenericQueue
delegate to Queue(of IObject)
, and then a general scrub done in comparison with jinterface 1.4, before it will be sorta-releasable.
At the moment it builds, but will not work, so no interim archive is yet publicly available.
No comments:
Post a Comment