Class: HexaPDF::Reference
- Inherits:
-
Object
- Object
- HexaPDF::Reference
- Includes:
- Comparable
- Defined in:
- lib/hexapdf/reference.rb
Overview
A reference to an indirect object.
The PDF syntax allows for references to existing and non-existing indirect objects. Such references are represented with objects of this class.
Note that after initialization changing the object or generation numbers is not possible anymore!
The methods #hash and #eql? are implemented so that objects of this class can be used as hash keys. Furthermore the implementation is compatible to the one of Object, i.e. the hash of a Reference object is the same as the hash of an indirect Object.
See: PDF1.7 s7.3.10, Object
Instance Attribute Summary collapse
-
#gen ⇒ Object
readonly
Returns the generation number of the referenced indirect object.
-
#oid ⇒ Object
readonly
Returns the object number of the referenced indirect object.
Instance Method Summary collapse
-
#<=>(other) ⇒ Object
Compares this object to another object.
-
#==(other) ⇒ Object
Returns
true
if the other object is a Reference and has the same object and generation numbers. -
#eql?(other) ⇒ Boolean
Returns
true
if the other object references the same PDF object as this reference object. -
#hash ⇒ Object
Computes the hash value based on the object and generation numbers.
-
#initialize(oid, gen = 0) ⇒ Reference
constructor
Creates a new Reference with the given object number and, optionally, generation number.
-
#inspect ⇒ Object
:nodoc:.
Constructor Details
#initialize(oid, gen = 0) ⇒ Reference
Creates a new Reference with the given object number and, optionally, generation number.
62 63 64 65 |
# File 'lib/hexapdf/reference.rb', line 62 def initialize(oid, gen = 0) @oid = Integer(oid) @gen = Integer(gen) end |
Instance Attribute Details
#gen ⇒ Object (readonly)
Returns the generation number of the referenced indirect object.
59 60 61 |
# File 'lib/hexapdf/reference.rb', line 59 def gen @gen end |
#oid ⇒ Object (readonly)
Returns the object number of the referenced indirect object.
56 57 58 |
# File 'lib/hexapdf/reference.rb', line 56 def oid @oid end |
Instance Method Details
#<=>(other) ⇒ Object
Compares this object to another object.
If the other object does not respond to oid
or gen
, nil
is returned. Otherwise objects are ordered first by object number and then by generation number.
71 72 73 74 |
# File 'lib/hexapdf/reference.rb', line 71 def <=>(other) return nil unless other.respond_to?(:oid) && other.respond_to?(:gen) (oid == other.oid ? gen <=> other.gen : oid <=> other.oid) end |
#==(other) ⇒ Object
Returns true
if the other object is a Reference and has the same object and generation numbers.
78 79 80 |
# File 'lib/hexapdf/reference.rb', line 78 def ==(other) other.kind_of?(Reference) && oid == other.oid && gen == other.gen end |
#eql?(other) ⇒ Boolean
Returns true
if the other object references the same PDF object as this reference object.
83 84 85 |
# File 'lib/hexapdf/reference.rb', line 83 def eql?(other) other.respond_to?(:oid) && oid == other.oid && other.respond_to?(:gen) && gen == other.gen end |
#hash ⇒ Object
Computes the hash value based on the object and generation numbers.
88 89 90 |
# File 'lib/hexapdf/reference.rb', line 88 def hash oid.hash ^ gen.hash end |
#inspect ⇒ Object
:nodoc:
92 93 94 |
# File 'lib/hexapdf/reference.rb', line 92 def inspect #:nodoc: "#<#{self.class.name} [#{oid}, #{gen}]>" end |