Class: Rclrb::Fields::StringField

Inherits:
Object
  • Object
show all
Defined in:
lib/rclrb/fields.rb

Defined Under Namespace

Classes: FFIType

Class Method Summary collapse

Class Method Details

.__fill_ros_message(ffi_struct, value) ⇒ Object



87
88
89
90
91
92
93
94
# File 'lib/rclrb/fields.rb', line 87

def StringField.__fill_ros_message(ffi_struct, value)
  str_pointer = Rclrb.rcl_allocate value.length + 1
  ffi_struct[:string] = str_pointer
  str_pointer.put_string(0, value)
  str_pointer.put_uint8(value.length, 0)
  ffi_struct[:length] = value.length
  ffi_struct[:capacity] = value.length + 1
end

.array_fieldObject



108
109
110
111
# File 'lib/rclrb/fields.rb', line 108

def StringField.array_field()
  @@array_field = ArrayField.new(StringField) unless defined?(@@array_field)
  return @@array_field
end

.create_from_dict(v) ⇒ Object



77
78
79
# File 'lib/rclrb/fields.rb', line 77

def StringField.create_from_dict v
  return v
end

.destroy_ros_message(data) ⇒ Object



101
102
103
104
105
106
107
# File 'lib/rclrb/fields.rb', line 101

def StringField.destroy_ros_message(data)
  if data.kind_of? FFIType
    Rclrb.rcl_deallocate data[:string]
  else
    return StringField.destroy_ros_message FFIType.new(data)
  end
end

.ffi_sizeObject



115
116
117
# File 'lib/rclrb/fields.rb', line 115

def StringField.ffi_size
  return FFIType.size
end

.ffi_typeObject



112
113
114
# File 'lib/rclrb/fields.rb', line 112

def StringField.ffi_type
  return FFIType
end

.field_nameObject



74
75
76
# File 'lib/rclrb/fields.rb', line 74

def StringField.field_name()
  return "Rclrb::Fields::StringField"
end

.fill_ros_message(data, index, value) ⇒ Object



95
96
97
# File 'lib/rclrb/fields.rb', line 95

def StringField.fill_ros_message(data, index, value)
  StringField.__fill_ros_message(data[index], value)
end

.fill_ros_message_array(array_pointer, value) ⇒ Object



98
99
100
# File 'lib/rclrb/fields.rb', line 98

def StringField.fill_ros_message_array(array_pointer, value)
  Fields.__generic_fill_ros_message_array(array_pointer, value, StringField.ffi_size) { |ptr, value| StringField.__fill_ros_message(ffi_type.new(ptr), value) }
end

.init_valueObject



71
72
73
# File 'lib/rclrb/fields.rb', line 71

def StringField.init_value()
  return "\"\""
end

.is_atomicObject



118
119
120
# File 'lib/rclrb/fields.rb', line 118

def StringField.is_atomic
  return false
end

.parse_ros_message(data) ⇒ Object



80
81
82
83
# File 'lib/rclrb/fields.rb', line 80

def StringField.parse_ros_message(data)
  length =  data[:length]
  return data[:string].get_string(0, length)
end

.parse_ros_message_array(data, length) ⇒ Object



84
85
86
# File 'lib/rclrb/fields.rb', line 84

def StringField.parse_ros_message_array(data, length)
  return Fields.__generic_parse_array(data, length, StringField.ffi_size) { |ptr| StringField.parse_ros_message FFIType.new(ptr) }
end