class Protobuf::Message
def self.define_field(rule, type, fname, tag, options)
def self.define_field(rule, type, fname, tag, options) field_array = options[:extension] ? extension_fields : fields field_name_hash = options[:extension] ? extension_field_name_to_tag : field_name_to_tag if field_array[tag] raise TagCollisionError, %!{Field number #{tag} has already been used in "#{self.name}" by field "#{fname}".! end field_definition = ::Protobuf::Field.build(self, rule, type, fname, tag, options) field_name_hash[fname] = tag field_array[tag] = field_definition end