Commit 0f34daad authored by Jon Skeet's avatar Jon Skeet

Changes suggested during review.

- Remove the indexers in FieldAccessorTable
- Add a TODO for field ordering in oneof
parent 6ea9bc7a
......@@ -84,8 +84,8 @@ namespace Google.Protobuf.FieldAccess
public ReadOnlyCollection<OneofAccessor> Oneofs { get { return oneofs; } }
// TODO: Review the API for the indexers. Now that we have fields and oneofs, it's not as clear...
// TODO: Review this, as it's easy to get confused between FieldNumber and Index.
// Currently only used to get an accessor related to a oneof... maybe just make that simpler?
public IFieldAccessor this[int fieldNumber]
{
get
......@@ -94,29 +94,5 @@ namespace Google.Protobuf.FieldAccess
return accessors[field.Index];
}
}
public IFieldAccessor this[FieldDescriptor field]
{
get
{
if (field.ContainingType != descriptor)
{
throw new ArgumentException("FieldDescriptor does not match message type.");
}
return accessors[field.Index];
}
}
public OneofAccessor this[OneofDescriptor oneof]
{
get
{
if (oneof.ContainingType != descriptor)
{
throw new ArgumentException("OneofDescriptor does not match message type.");
}
return oneofs[oneof.Index];
}
}
}
}
\ No newline at end of file
......@@ -141,6 +141,7 @@ namespace Google.Protobuf
{
var descriptor = accessor.Descriptor;
// Oneofs are written later
// TODO: Change to write out fields in order, interleaving oneofs appropriately (as per binary format)
if (descriptor.ContainingOneof != null)
{
continue;
......@@ -176,7 +177,7 @@ namespace Google.Protobuf
{
continue;
}
var fieldAccessor = fields[fieldDescriptor];
var fieldAccessor = fields[fieldDescriptor.FieldNumber];
object value = fieldAccessor.GetValue(message);
// Omit awkward (single) values such as unknown enum values
if (!fieldDescriptor.IsRepeated && !fieldDescriptor.IsMap && !CanWriteSingleValue(fieldDescriptor, value))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment