Class: Perl::Value::Array

Inherits:
Object show all
Defined in:
lib/perl/value/array.rb

Defined Under Namespace

Classes: Av

Instance Method Summary collapse

Constructor Details

#initialize(args) ⇒ Array

Returns a new instance of Array.



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/perl/value/array.rb', line 22

def initialize(args)
  @perl = Perl.PL_curinterp
  @value = nil
  @array = nil
  @av = nil

  case args
  when Perl::Value::Scalar::SV
    @array = args[:sv_u][:svu_array]
    @av = Av.new(args[:sv_any])
  when nil
  else
    raise "Don't know how to handle #{args.class} (#{args.inspect})"
  end
end

Instance Method Details

#freeze!Object



49
50
51
52
53
# File 'lib/perl/value/array.rb', line 49

def freeze!
  self.value.each { |v| v.freeze! }
  @array = nil
  @av = nil
end

#valueObject



38
39
40
41
42
43
44
45
46
47
# File 'lib/perl/value/array.rb', line 38

def value
  return @value if @value
  if @array
    @value = @array.get_array_of_pointer(0, @av[:xav_fill]+1).map do |ptr|
      Perl::Value::Scalar.new(ptr)
    end
  else
    return nil
  end
end