Class: Rclrb::Fields::StringField
- Inherits:
-
Object
- Object
- Rclrb::Fields::StringField
- Defined in:
- lib/rclrb/fields.rb
Defined Under Namespace
Classes: FFIType
Class Method Summary collapse
- .__fill_ros_message(ffi_struct, value) ⇒ Object
- .array_field ⇒ Object
- .create_from_dict(v) ⇒ Object
- .destroy_ros_message(data) ⇒ Object
- .ffi_size ⇒ Object
- .ffi_type ⇒ Object
- .field_name ⇒ Object
- .fill_ros_message(data, index, value) ⇒ Object
- .fill_ros_message_array(array_pointer, value) ⇒ Object
- .init_value ⇒ Object
- .is_atomic ⇒ Object
- .parse_ros_message(data) ⇒ Object
- .parse_ros_message_array(data, length) ⇒ Object
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.(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_field ⇒ Object
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.(data) if data.kind_of? FFIType Rclrb.rcl_deallocate data[:string] else return StringField. FFIType.new(data) end end |
.ffi_size ⇒ Object
115 116 117 |
# File 'lib/rclrb/fields.rb', line 115 def StringField.ffi_size return FFIType.size end |
.ffi_type ⇒ Object
112 113 114 |
# File 'lib/rclrb/fields.rb', line 112 def StringField.ffi_type return FFIType end |
.field_name ⇒ Object
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.(data, index, value) StringField.(data[index], value) end |
.fill_ros_message_array(array_pointer, value) ⇒ Object
98 99 100 |
# File 'lib/rclrb/fields.rb', line 98 def StringField.(array_pointer, value) Fields.(array_pointer, value, StringField.ffi_size) { |ptr, value| StringField.(ffi_type.new(ptr), value) } end |
.init_value ⇒ Object
71 72 73 |
# File 'lib/rclrb/fields.rb', line 71 def StringField.init_value() return "\"\"" end |
.is_atomic ⇒ Object
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.(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.(data, length) return Fields.__generic_parse_array(data, length, StringField.ffi_size) { |ptr| StringField. FFIType.new(ptr) } end |