Class: Ext3::BlockPointersPath
- Inherits:
-
Object
- Object
- Ext3::BlockPointersPath
- Defined in:
- lib/fs/ext3/block_pointers_path.rb
Constant Summary collapse
- DIRECT_SIZE =
12
- SINGLE_INDIRECT_INDEX =
12
- DOUBLE_INDIRECT_INDEX =
13
- TRIPLE_INDIRECT_INDEX =
14
- INDEX_TYPES =
[:direct, :single_indirect, :double_indirect, :triple_indirect]
Instance Attribute Summary collapse
-
#block ⇒ Object
Returns the value of attribute block.
-
#num_indirects ⇒ Object
readonly
Returns the value of attribute num_indirects.
-
#path ⇒ Object
readonly
Returns the value of attribute path.
-
#path_index ⇒ Object
readonly
Returns the value of attribute path_index.
Instance Method Summary collapse
- #direct? ⇒ Boolean
- #direct_index ⇒ Object
- #double_indirect? ⇒ Boolean
- #double_indirect_index ⇒ Object
- #index_type ⇒ Object
-
#initialize(num_indirects, block = 0) ⇒ BlockPointersPath
constructor
A new instance of BlockPointersPath.
- #single_indirect? ⇒ Boolean
- #single_indirect_index ⇒ Object
- #succ! ⇒ Object
- #to_a ⇒ Object
- #to_s ⇒ Object
- #triple_indirect? ⇒ Boolean
- #triple_indirect_index ⇒ Object
Constructor Details
#initialize(num_indirects, block = 0) ⇒ BlockPointersPath
Returns a new instance of BlockPointersPath.
12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/fs/ext3/block_pointers_path.rb', line 12 def initialize(num_indirects, block = 0) @num_indirects = num_indirects @single_indirect_size = @num_indirects @double_indirect_size = @num_indirects**2 @triple_indirect_size = @num_indirects**3 @single_indirect_base_size = DIRECT_SIZE @double_indirect_base_size = DIRECT_SIZE + @single_indirect_size @triple_indirect_base_size = DIRECT_SIZE + @single_indirect_size + @double_indirect_size self.block = block end |
Instance Attribute Details
#block ⇒ Object
Returns the value of attribute block.
10 11 12 |
# File 'lib/fs/ext3/block_pointers_path.rb', line 10 def block @block end |
#num_indirects ⇒ Object (readonly)
Returns the value of attribute num_indirects.
10 11 12 |
# File 'lib/fs/ext3/block_pointers_path.rb', line 10 def num_indirects @num_indirects end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
10 11 12 |
# File 'lib/fs/ext3/block_pointers_path.rb', line 10 def path @path end |
#path_index ⇒ Object (readonly)
Returns the value of attribute path_index.
10 11 12 |
# File 'lib/fs/ext3/block_pointers_path.rb', line 10 def path_index @path_index end |
Instance Method Details
#direct? ⇒ Boolean
35 |
# File 'lib/fs/ext3/block_pointers_path.rb', line 35 def direct?; @path_index == 0; end |
#direct_index ⇒ Object
25 |
# File 'lib/fs/ext3/block_pointers_path.rb', line 25 def direct_index; @path[0]; end |
#double_indirect? ⇒ Boolean
39 |
# File 'lib/fs/ext3/block_pointers_path.rb', line 39 def double_indirect?; @path_index == 2; end |
#double_indirect_index ⇒ Object
29 |
# File 'lib/fs/ext3/block_pointers_path.rb', line 29 def double_indirect_index; @path[2]; end |
#index_type ⇒ Object
33 |
# File 'lib/fs/ext3/block_pointers_path.rb', line 33 def index_type; INDEX_TYPES[@path_index]; end |
#single_indirect? ⇒ Boolean
37 |
# File 'lib/fs/ext3/block_pointers_path.rb', line 37 def single_indirect?; @path_index == 1; end |
#single_indirect_index ⇒ Object
27 |
# File 'lib/fs/ext3/block_pointers_path.rb', line 27 def single_indirect_index; @path[1]; end |
#succ! ⇒ Object
48 49 50 51 52 |
# File 'lib/fs/ext3/block_pointers_path.rb', line 48 def succ! succ_index(@path_index) @block += 1 self end |
#to_a ⇒ Object
58 59 60 |
# File 'lib/fs/ext3/block_pointers_path.rb', line 58 def to_a @path.dup end |
#to_s ⇒ Object
54 55 56 |
# File 'lib/fs/ext3/block_pointers_path.rb', line 54 def to_s @path.inspect end |
#triple_indirect? ⇒ Boolean
41 |
# File 'lib/fs/ext3/block_pointers_path.rb', line 41 def triple_indirect?; @path_index == 3; end |
#triple_indirect_index ⇒ Object
31 |
# File 'lib/fs/ext3/block_pointers_path.rb', line 31 def triple_indirect_index; @path[3]; end |