class Protobuf::Generate::Language::C

Public Class Methods

new(ast, conventions = Conventions) click to toggle source
Calls superclass method Protobuf::Generate::Language::new
# File lib/protobuf/generate/language/c.rb, line 27
def initialize ast, conventions = Conventions
  validate ast
  ast.extend(conventions)
  super ast
end

Private Instance Methods

validate(ast) click to toggle source
# File lib/protobuf/generate/language/c.rb, line 36
def validate ast
  ast.each do |e| # TODO: ast.messages
    next unless e.kind_of?(Protobuf::Generate::Ast::Message) # TODO: e.message?
    e.fields.each do |field|
      if field.label.match(/repeated/)
        raise "Message %s.%s field repeating is unsupported." % [e.name, field.name]
      end
      if field.type.match(/string|bytes/) && field.meta["size"].to_i <= 0
        raise "Message %s.%s %s field requires size meta comment > 0 // @size = DIGITS" % [e.name, field.name, field.type]
      end
    end
  end
end