/// <summary>
 /// ctor
 /// </summary>
 /// <param name="name">the name reported via IBitField.Name and IBitField.ShortName</param>
 /// <param name="startBit">start bit ... other than setting IBitField.StartBit, ignored by default implementation</param>
 /// <param name="endBit">end bit ... other than setting IBitField.EndBit, ignored by default implementation</param>
 /// <param name="readDelegate">optional read delegate used by Read()</param>
 /// <param name="writeDelegate">optional write delegate used by Write()</param>
 /// <remarks>
 /// If readDelegate and writeDelegate are not supplied, the value of the bitfield is
 /// simply the last value set (by Value or Write)
 /// </remarks>
 public SimulatedBitField(string name,
                          int startBit,
                          int endBit,
                          SimulatedBitFieldReadDelegate readDelegate,
                          SimulatedBitFieldWriteDelegate writeDelegate)
 {
     Name           = name;
     ShortName      = name;
     StartBit       = startBit;
     EndBit         = endBit;
     Size           = EndBit - StartBit + 1;
     Mask           = ((1 << Size) - 1) << startBit;
     mReadDelegate  = readDelegate;
     mWriteDelegate = writeDelegate;
 }
 /// <summary>
 /// ctor
 /// </summary>
 /// <param name="name">the name reported via IBitField.Name and IBitField.ShortName</param>
 /// <param name="readDelegate">optional read delegate used by Read()</param>
 /// <param name="writeDelegate">optional write delegate used by Write()</param>
 /// <remarks>
 /// If readDelegate and writeDelegate are not supplied, the value of the bitfield is
 /// simply the last value set (by Value or Write)
 /// </remarks>
 public SimulatedBitField(string name,
                          SimulatedBitFieldReadDelegate readDelegate,
                          SimulatedBitFieldWriteDelegate writeDelegate)
     : this(name, 0, 0, readDelegate, writeDelegate)
 {
 }
 /// <summary>
 /// ctor
 /// </summary>
 /// <param name="name">the name reported via IBitField.Name and IBitField.ShortName</param>
 /// <param name="readDelegate">optional read delegate used by Read()</param>
 /// <remarks>
 /// If readDelegate and writeDelegate are not supplied, the value of the bitfield is
 /// simply the last value set (by Value or Write)
 /// </remarks>
 public SimulatedBitField(string name, SimulatedBitFieldReadDelegate readDelegate)
     : this(name, 0, 0, readDelegate, null)
 {
 }