Lines Matching defs:self
66 static VALUE table_key(Map* self, VALUE key,
70 switch (self->key_type) {
78 key = native_slot_encode_and_freeze_string(self->key_type, key);
88 native_slot_set("", self->key_type, Qnil, buf, key);
90 *out_length = native_slot_size(self->key_type);
103 static VALUE table_key_to_ruby(Map* self, upb_strview key) {
104 switch (self->key_type) {
109 (self->key_type == UPB_TYPE_BYTES) ?
119 return native_slot_get(self->key_type, Qnil, key.data);
143 Map* self;
144 TypedData_Get_Struct(_self, Map, &Map_type, self);
145 return self;
149 Map* self = _self;
151 rb_gc_mark(self->value_type_class);
152 rb_gc_mark(self->parse_frame);
154 if (self->value_type == UPB_TYPE_STRING ||
155 self->value_type == UPB_TYPE_BYTES ||
156 self->value_type == UPB_TYPE_MESSAGE) {
158 for (upb_strtable_begin(&it, &self->table);
163 native_slot_mark(self->value_type, mem);
169 Map* self = _self;
170 upb_strtable_uninit(&self->table);
171 xfree(self);
175 Map* self = ALLOC(Map);
176 memset(self, 0, sizeof(Map));
177 self->value_type_class = Qnil;
178 return TypedData_Wrap_Struct(klass, &Map_type, self);
182 Map* self = ruby_to_Map(map);
183 self->parse_frame = val;
228 Map* self = ruby_to_Map(_self);
238 self->key_type = ruby_to_fieldtype(argv[0]);
239 self->value_type = ruby_to_fieldtype(argv[1]);
240 self->parse_frame = Qnil;
243 switch (self->key_type) {
258 if (needs_typeclass(self->value_type) && argc > 2) {
259 self->value_type_class = argv[2];
260 validate_type_class(self->value_type, self->value_type_class);
266 if (!upb_strtable_init(&self->table, UPB_CTYPE_UINT64)) {
286 Map* self = ruby_to_Map(_self);
289 for (upb_strtable_begin(&it, &self->table);
292 VALUE key = table_key_to_ruby(self, upb_strtable_iter_key(&it));
296 VALUE value = native_slot_get(self->value_type,
297 self->value_type_class,
313 Map* self = ruby_to_Map(_self);
317 for (upb_strtable_begin(&it, &self->table);
320 VALUE key = table_key_to_ruby(self, upb_strtable_iter_key(&it));
335 Map* self = ruby_to_Map(_self);
339 for (upb_strtable_begin(&it, &self->table);
345 VALUE value = native_slot_get(self->value_type,
346 self->value_type_class,
363 Map* self = ruby_to_Map(_self);
369 key = table_key(self, key, keybuf, &keyval, &length);
371 if (upb_strtable_lookup2(&self->table, keyval, length, &v)) {
373 return native_slot_get(self->value_type, self->value_type_class, mem);
388 Map* self = ruby_to_Map(_self);
394 key = table_key(self, key, keybuf, &keyval, &length);
400 value = rb_class_new_instance(1, args, self->value_type_class);
404 native_slot_set("", self->value_type, self->value_type_class, mem, value);
407 upb_strtable_remove2(&self->table, keyval, length, NULL);
408 if (!upb_strtable_insert2(&self->table, keyval, length, v)) {
424 Map* self = ruby_to_Map(_self);
429 key = table_key(self, key, keybuf, &keyval, &length);
431 if (upb_strtable_lookup2(&self->table, keyval, length, NULL)) {
446 Map* self = ruby_to_Map(_self);
451 key = table_key(self, key, keybuf, &keyval, &length);
455 if (upb_strtable_remove2(&self->table, keyval, length, &v)) {
457 return native_slot_get(self->value_type, self->value_type_class, mem);
470 Map* self = ruby_to_Map(_self);
476 upb_strtable_uninit(&self->table);
477 if (!upb_strtable_init(&self->table, UPB_CTYPE_INT64)) {
490 Map* self = ruby_to_Map(_self);
491 return ULL2NUM(upb_strtable_count(&self->table));
495 Map* self = ruby_to_Map(_self);
497 VALUE key_type = fieldtype_to_ruby(self->key_type);
498 VALUE value_type = fieldtype_to_ruby(self->value_type);
499 if (self->value_type_class != Qnil) {
501 key_type, value_type, self->value_type_class);
517 Map* self = ruby_to_Map(_self);
522 for (upb_strtable_begin(&it, &self->table);
530 native_slot_dup(self->value_type, dup_mem, mem);
542 Map* self = ruby_to_Map(_self);
547 for (upb_strtable_begin(&it, &self->table);
555 native_slot_deep_copy(self->value_type, self->value_type_class, dup_mem,
580 Map* self = ruby_to_Map(_self);
594 if (self == other) {
597 if (self->key_type != other->key_type ||
598 self->value_type != other->value_type ||
599 self->value_type_class != other->value_type_class) {
602 if (upb_strtable_count(&self->table) != upb_strtable_count(&other->table)) {
606 // For each member of self, check that an equal member exists at the same key
608 for (upb_strtable_begin(&it, &self->table);
622 if (!native_slot_eq(self->value_type, self->value_type_class, mem,
639 Map* self = ruby_to_Map(_self);
645 for (upb_strtable_begin(&it, &self->table); !upb_strtable_done(&it);
647 VALUE key = table_key_to_ruby(self, upb_strtable_iter_key(&it));
651 VALUE value = native_slot_get(self->value_type,
652 self->value_type_class,
669 Map* self = ruby_to_Map(_self);
672 for (upb_strtable_begin(&it, &self->table);
675 VALUE key = table_key_to_ruby(self, upb_strtable_iter_key(&it));
678 VALUE value = native_slot_get(self->value_type,
679 self->value_type_class,
682 if (self->value_type == UPB_TYPE_MESSAGE) {
699 Map* self = ruby_to_Map(_self);
707 for (upb_strtable_begin(&it, &self->table); !upb_strtable_done(&it);
709 VALUE key = table_key_to_ruby(self, upb_strtable_iter_key(&it));
713 VALUE value = native_slot_get(self->value_type,
714 self->value_type_class,
745 static int merge_into_self_callback(VALUE key, VALUE value, VALUE self) {
746 Map_index_set(self, key, value);
757 Map* self = ruby_to_Map(_self);
761 if (self->key_type != other->key_type ||
762 self->value_type != other->value_type ||
763 self->value_type_class != other->value_type_class) {
775 upb_strtable_remove2(&self->table, k.data, k.size, &oldv);
778 upb_strtable_insert2(&self->table, k.data, k.size, v);
788 Map* self = ruby_to_Map(_self);
789 iter->self = self;
790 upb_strtable_begin(&iter->it, &self->table);
802 return table_key_to_ruby(iter->self, upb_strtable_iter_key(&iter->it));
808 return native_slot_get(iter->self->value_type,
809 iter->self->value_type_class,