Class: Perl::Value::Scalar::SV
- Defined in:
- lib/perl/value/scalar.rb
Defined Under Namespace
Classes: SvU
Constant Summary collapse
- SVt_NULL =
0- SVt_BIND =
1- SVt_IV =
2- SVt_NV =
3- SVt_RV =
4- SVt_PV =
5- SVt_PVIV =
6- SVt_PVNV =
7- SVt_PVMG =
8- SVt_PVGV =
9- SVt_PVLV =
10- SVt_PVAV =
11- SVt_PVHV =
12- SVt_PVCV =
13- SVt_PVFM =
14- SVt_PVIO =
15- SVTYPEMASK =
0xff- SVf_IOK =
0x00000100- SVf_NOK =
0x00000200- SVf_POK =
0x00000400- SVf_ROK =
0x00000800
Instance Method Summary collapse
Instance Method Details
#deref ⇒ Object
62 63 64 65 66 |
# File 'lib/perl/value/scalar.rb', line 62 def deref raise "Not a reference!" unless (self[:sv_flags] & SVf_ROK) == SVf_ROK SV.new(self[:sv_u][:svu_rv]).value end |
#inspect ⇒ Object
68 69 70 |
# File 'lib/perl/value/scalar.rb', line 68 def inspect "<#{self.class.name} @pointer=#{self.pointer} @sv_any=#{self[:sv_any].inspect} @sv_refcnt=#{self[:sv_refcnt].inspect} @sv_flags=0x#{self[:sv_flags].to_s(16)} @sv_u=#{self[:sv_u].inspect}>" end |
#reference? ⇒ Boolean
58 59 60 |
# File 'lib/perl/value/scalar.rb', line 58 def reference? (self[:sv_flags] & SVf_ROK) == SVf_ROK end |
#value ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/perl/value/scalar.rb', line 45 def value case when (self[:sv_flags] & SVf_POK) == SVf_POK self[:sv_u][:svu_pv] when (self[:sv_flags] & SVf_ROK) == SVf_ROK Perl::Value::Scalar.new(self[:sv_u][:svu_rv]) when (self[:sv_flags] & SVTYPEMASK) == SVt_PVAV Perl::Value::Array.new(self) else raise "Don't know how to handle #{self[:sv_u]} (#{self.inspect})" end end |