class IDL::Type::String

def initialize(size = nil)

def initialize(size = nil)
  @size = size
end

def instantiate(instantiation_context)

def instantiate(instantiation_context)
  self.is_template? ? (Type::String.new(@size.instantiate(instantiation_context).value)) : self
end

def is_anonymous?

def is_anonymous?
  @size ? true : false
end

def is_template?

def is_template?
  (@size && @size.is_a?(IDL::Expression) && @size.is_template?)
end

def length

def length
  @size
end

def matches?(idltype)

def matches?(idltype)
  super && self.size == idltype.size
end

def narrow(obj)

def narrow(obj)
  typeerror(obj) unless ::String === obj
  if @size.nil?
    obj
  elsif @size < obj.size
    typeerror(obj)
  else
    obj
  end
end