class IDL::Type::WString

def initialize(size = nil)

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

def instantiate(instantiation_context)

def instantiate(instantiation_context)
  self.is_template? ? Type::WString.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::ScopedName) && @size.node.is_a?(IDL::AST::TemplateParam))
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 ::Array === obj
  if @size.nil?
    obj
  elsif @size < obj.size
    typeerror(obj)
  else
    obj
  end
end