MCPcopy Create free account
hub / github.com/DFHack/dfhack / ClearField

Method ClearField

depends/protobuf/google/protobuf/generated_message_reflection.cc:456–547  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

454}
455
456void GeneratedMessageReflection::ClearField(
457 Message* message, const FieldDescriptor* field) const {
458 USAGE_CHECK_MESSAGE_TYPE(ClearField);
459
460 if (field->is_extension()) {
461 MutableExtensionSet(message)->ClearExtension(field->number());
462 } else if (!field->is_repeated()) {
463 if (HasBit(*message, field)) {
464 ClearBit(message, field);
465
466 // We need to set the field back to its default value.
467 switch (field->cpp_type()) {
468#define CLEAR_TYPE(CPPTYPE, TYPE) \
469 case FieldDescriptor::CPPTYPE_##CPPTYPE: \
470 *MutableRaw<TYPE>(message, field) = \
471 field->default_value_##TYPE(); \
472 break;
473
474 CLEAR_TYPE(INT32 , int32 );
475 CLEAR_TYPE(INT64 , int64 );
476 CLEAR_TYPE(UINT32, uint32);
477 CLEAR_TYPE(UINT64, uint64);
478 CLEAR_TYPE(FLOAT , float );
479 CLEAR_TYPE(DOUBLE, double);
480 CLEAR_TYPE(BOOL , bool );
481#undef CLEAR_TYPE
482
483 case FieldDescriptor::CPPTYPE_ENUM:
484 *MutableRaw<int>(message, field) =
485 field->default_value_enum()->number();
486 break;
487
488 case FieldDescriptor::CPPTYPE_STRING: {
489 switch (field->options().ctype()) {
490 default: // TODO(kenton): Support other string reps.
491 case FieldOptions::STRING:
492 const string* default_ptr = DefaultRaw<const string*>(field);
493 string** value = MutableRaw<string*>(message, field);
494 if (*value != default_ptr) {
495 if (field->has_default_value()) {
496 (*value)->assign(field->default_value_string());
497 } else {
498 (*value)->clear();
499 }
500 }
501 break;
502 }
503 break;
504 }
505
506 case FieldDescriptor::CPPTYPE_MESSAGE:
507 (*MutableRaw<Message*>(message, field))->Clear();
508 break;
509 }
510 }
511 } else {
512 switch (field->cpp_type()) {
513#define HANDLE_TYPE(UPPERCASE, LOWERCASE) \

Callers 2

ClearMethod · 0.80
InterpretOptionsMethod · 0.80

Calls 9

is_extensionMethod · 0.80
ClearExtensionMethod · 0.80
is_repeatedMethod · 0.80
cpp_typeMethod · 0.80
ctypeMethod · 0.80
has_default_valueMethod · 0.80
numberMethod · 0.45
clearMethod · 0.45
ClearMethod · 0.45

Tested by

no test coverage detected