Class: Blender3d::CharFieldParser

Inherits:
Object
  • Object
show all
Defined in:
lib/blender-3d/char_field_parser.rb

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ CharFieldParser

Returns a new instance of CharFieldParser.

[View source]

3
4
5
# File 'lib/blender-3d/char_field_parser.rb', line 3

def initialize(name)
  @name = name
end

Instance Method Details

#parseObject

[View source]

7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/blender-3d/char_field_parser.rb', line 7

def parse
  type = case @name
    when GenericFieldParser::FUNCTION_POINTER
      FunctionPointerType.new(SimpleType.new(FieldParserFactory::CHAR_TYPE))

    when GenericFieldParser::POINTER_ARRAY
      array_size = $2.to_i
      ArrayType.new(NullTerminatedStringType.new, array_size)

    when GenericFieldParser::MULTI_POINTER
      PointerType.new(NullTerminatedStringType.new)

    when GenericFieldParser::POINTER
      NullTerminatedStringType.new

    when GenericFieldParser::MULTI_ARRAY
      array_size, string_size = $2.to_i, $3.to_i
      ArrayType.new(FixedLengthStringType.new(string_size), array_size)

    when GenericFieldParser::ARRAY
      array_size = $2.to_i
      FixedLengthStringType.new(array_size)

    else
      SimpleType.new(FieldParserFactory::CHAR_TYPE)

  end

  name = $1 || @name
  Field.new(type, name)
end