mirror of
				https://github.com/esphome/esphome.git
				synced 2025-11-04 00:51:49 +00:00 
			
		
		
		
	preen
This commit is contained in:
		@@ -7,12 +7,12 @@ namespace copy {
 | 
				
			|||||||
static const char *const TAG = "copy.select";
 | 
					static const char *const TAG = "copy.select";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void CopySelect::setup() {
 | 
					void CopySelect::setup() {
 | 
				
			||||||
  source_->add_on_state_callback([this](const std::string &value, size_t index) { this->publish_state(value); });
 | 
					  source_->add_on_state_callback([this](const std::string &value, size_t index) { this->publish_state(index); });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  traits.set_options(source_->traits.get_options());
 | 
					  traits.set_options(source_->traits.get_options());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (source_->has_state())
 | 
					  if (source_->has_state())
 | 
				
			||||||
    this->publish_state(source_->state);
 | 
					    this->publish_state(source_->current_option());
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void CopySelect::dump_config() { LOG_SELECT("", "Copy Select", this); }
 | 
					void CopySelect::dump_config() { LOG_SELECT("", "Copy Select", this); }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,7 +42,7 @@ std::string MenuItemSelect::get_value_text() const {
 | 
				
			|||||||
    result = this->value_getter_.value()(this);
 | 
					    result = this->value_getter_.value()(this);
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    if (this->select_var_ != nullptr) {
 | 
					    if (this->select_var_ != nullptr) {
 | 
				
			||||||
      result = this->select_var_->state;
 | 
					      result = this->select_var_->current_option();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -441,7 +441,7 @@ bool LD2410Component::handle_ack_data_() {
 | 
				
			|||||||
      ESP_LOGV(TAG, "Baud rate change");
 | 
					      ESP_LOGV(TAG, "Baud rate change");
 | 
				
			||||||
#ifdef USE_SELECT
 | 
					#ifdef USE_SELECT
 | 
				
			||||||
      if (this->baud_rate_select_ != nullptr) {
 | 
					      if (this->baud_rate_select_ != nullptr) {
 | 
				
			||||||
        ESP_LOGE(TAG, "Change baud rate to %s and reinstall", this->baud_rate_select_->state.c_str());
 | 
					        ESP_LOGE(TAG, "Change baud rate to %s and reinstall", this->baud_rate_select_->current_option());
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
@@ -759,10 +759,10 @@ void LD2410Component::set_light_out_control() {
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
#ifdef USE_SELECT
 | 
					#ifdef USE_SELECT
 | 
				
			||||||
  if (this->light_function_select_ != nullptr && this->light_function_select_->has_state()) {
 | 
					  if (this->light_function_select_ != nullptr && this->light_function_select_->has_state()) {
 | 
				
			||||||
    this->light_function_ = find_uint8(LIGHT_FUNCTIONS_BY_STR, this->light_function_select_->state);
 | 
					    this->light_function_ = find_uint8(LIGHT_FUNCTIONS_BY_STR, this->light_function_select_->current_option());
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  if (this->out_pin_level_select_ != nullptr && this->out_pin_level_select_->has_state()) {
 | 
					  if (this->out_pin_level_select_ != nullptr && this->out_pin_level_select_->has_state()) {
 | 
				
			||||||
    this->out_pin_level_ = find_uint8(OUT_PIN_LEVELS_BY_STR, this->out_pin_level_select_->state);
 | 
					    this->out_pin_level_ = find_uint8(OUT_PIN_LEVELS_BY_STR, this->out_pin_level_select_->current_option());
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
  this->set_config_mode_(true);
 | 
					  this->set_config_mode_(true);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -485,7 +485,7 @@ bool LD2412Component::handle_ack_data_() {
 | 
				
			|||||||
      ESP_LOGV(TAG, "Baud rate change");
 | 
					      ESP_LOGV(TAG, "Baud rate change");
 | 
				
			||||||
#ifdef USE_SELECT
 | 
					#ifdef USE_SELECT
 | 
				
			||||||
      if (this->baud_rate_select_ != nullptr) {
 | 
					      if (this->baud_rate_select_ != nullptr) {
 | 
				
			||||||
        ESP_LOGW(TAG, "Change baud rate to %s and reinstall", this->baud_rate_select_->state.c_str());
 | 
					        ESP_LOGW(TAG, "Change baud rate to %s and reinstall", this->baud_rate_select_->current_option());
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
@@ -783,7 +783,7 @@ void LD2412Component::set_basic_config() {
 | 
				
			|||||||
      1,    TOTAL_GATES, DEFAULT_PRESENCE_TIMEOUT, 0,
 | 
					      1,    TOTAL_GATES, DEFAULT_PRESENCE_TIMEOUT, 0,
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#ifdef USE_SELECT
 | 
					#ifdef USE_SELECT
 | 
				
			||||||
      find_uint8(OUT_PIN_LEVELS_BY_STR, this->out_pin_level_select_->state),
 | 
					      find_uint8(OUT_PIN_LEVELS_BY_STR, this->out_pin_level_select_->current_option()),
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
      0x01,  // Default value if not using select
 | 
					      0x01,  // Default value if not using select
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -837,7 +837,7 @@ void LD2412Component::set_light_out_control() {
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
#ifdef USE_SELECT
 | 
					#ifdef USE_SELECT
 | 
				
			||||||
  if (this->light_function_select_ != nullptr && this->light_function_select_->has_state()) {
 | 
					  if (this->light_function_select_ != nullptr && this->light_function_select_->has_state()) {
 | 
				
			||||||
    this->light_function_ = find_uint8(LIGHT_FUNCTIONS_BY_STR, this->light_function_select_->state);
 | 
					    this->light_function_ = find_uint8(LIGHT_FUNCTIONS_BY_STR, this->light_function_select_->current_option());
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
  uint8_t value[2] = {this->light_function_, this->light_threshold_};
 | 
					  uint8_t value[2] = {this->light_function_, this->light_threshold_};
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -380,7 +380,7 @@ void LD2450Component::read_all_info() {
 | 
				
			|||||||
  this->set_config_mode_(false);
 | 
					  this->set_config_mode_(false);
 | 
				
			||||||
#ifdef USE_SELECT
 | 
					#ifdef USE_SELECT
 | 
				
			||||||
  const auto baud_rate = std::to_string(this->parent_->get_baud_rate());
 | 
					  const auto baud_rate = std::to_string(this->parent_->get_baud_rate());
 | 
				
			||||||
  if (this->baud_rate_select_ != nullptr && this->baud_rate_select_->state != baud_rate) {
 | 
					  if (this->baud_rate_select_ != nullptr && strcmp(this->baud_rate_select_->current_option(), baud_rate.c_str()) != 0) {
 | 
				
			||||||
    this->baud_rate_select_->publish_state(baud_rate);
 | 
					    this->baud_rate_select_->publish_state(baud_rate);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  this->publish_zone_type();
 | 
					  this->publish_zone_type();
 | 
				
			||||||
@@ -635,7 +635,7 @@ bool LD2450Component::handle_ack_data_() {
 | 
				
			|||||||
      ESP_LOGV(TAG, "Baud rate change");
 | 
					      ESP_LOGV(TAG, "Baud rate change");
 | 
				
			||||||
#ifdef USE_SELECT
 | 
					#ifdef USE_SELECT
 | 
				
			||||||
      if (this->baud_rate_select_ != nullptr) {
 | 
					      if (this->baud_rate_select_ != nullptr) {
 | 
				
			||||||
        ESP_LOGE(TAG, "Change baud rate to %s and reinstall", this->baud_rate_select_->state.c_str());
 | 
					        ESP_LOGE(TAG, "Change baud rate to %s and reinstall", this->baud_rate_select_->current_option());
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
@@ -716,7 +716,7 @@ bool LD2450Component::handle_ack_data_() {
 | 
				
			|||||||
      this->publish_zone_type();
 | 
					      this->publish_zone_type();
 | 
				
			||||||
#ifdef USE_SELECT
 | 
					#ifdef USE_SELECT
 | 
				
			||||||
      if (this->zone_type_select_ != nullptr) {
 | 
					      if (this->zone_type_select_ != nullptr) {
 | 
				
			||||||
        ESP_LOGV(TAG, "Change zone type to: %s", this->zone_type_select_->state.c_str());
 | 
					        ESP_LOGV(TAG, "Change zone type to: %s", this->zone_type_select_->current_option());
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
      if (this->buffer_data_[10] == 0x00) {
 | 
					      if (this->buffer_data_[10] == 0x00) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,8 @@ void MQTTSelectComponent::setup() {
 | 
				
			|||||||
    call.set_option(state);
 | 
					    call.set_option(state);
 | 
				
			||||||
    call.perform();
 | 
					    call.perform();
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
  this->select_->add_on_state_callback([this](const std::string &state, size_t index) { this->publish_state(state); });
 | 
					  this->select_->add_on_state_callback(
 | 
				
			||||||
 | 
					      [this](const std::string &state, size_t index) { this->publish_state(this->select_->option_at(index)); });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void MQTTSelectComponent::dump_config() {
 | 
					void MQTTSelectComponent::dump_config() {
 | 
				
			||||||
@@ -44,7 +45,7 @@ void MQTTSelectComponent::send_discovery(JsonObject root, mqtt::SendDiscoveryCon
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
bool MQTTSelectComponent::send_initial_state() {
 | 
					bool MQTTSelectComponent::send_initial_state() {
 | 
				
			||||||
  if (this->select_->has_state()) {
 | 
					  if (this->select_->has_state()) {
 | 
				
			||||||
    return this->publish_state(this->select_->state);
 | 
					    return this->publish_state(this->select_->current_option());
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    return true;
 | 
					    return true;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -435,12 +435,12 @@ void MR24HPC1Component::r24_frame_parse_open_underlying_information_(uint8_t *da
 | 
				
			|||||||
  } else if ((this->existence_boundary_select_ != nullptr) &&
 | 
					  } else if ((this->existence_boundary_select_ != nullptr) &&
 | 
				
			||||||
             ((data[FRAME_COMMAND_WORD_INDEX] == 0x0a) || (data[FRAME_COMMAND_WORD_INDEX] == 0x8a))) {
 | 
					             ((data[FRAME_COMMAND_WORD_INDEX] == 0x0a) || (data[FRAME_COMMAND_WORD_INDEX] == 0x8a))) {
 | 
				
			||||||
    if (this->existence_boundary_select_->has_index(data[FRAME_DATA_INDEX] - 1)) {
 | 
					    if (this->existence_boundary_select_->has_index(data[FRAME_DATA_INDEX] - 1)) {
 | 
				
			||||||
      this->existence_boundary_select_->publish_state(S_BOUNDARY_STR[data[FRAME_DATA_INDEX] - 1]);
 | 
					      this->existence_boundary_select_->publish_state(data[FRAME_DATA_INDEX] - 1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  } else if ((this->motion_boundary_select_ != nullptr) &&
 | 
					  } else if ((this->motion_boundary_select_ != nullptr) &&
 | 
				
			||||||
             ((data[FRAME_COMMAND_WORD_INDEX] == 0x0b) || (data[FRAME_COMMAND_WORD_INDEX] == 0x8b))) {
 | 
					             ((data[FRAME_COMMAND_WORD_INDEX] == 0x0b) || (data[FRAME_COMMAND_WORD_INDEX] == 0x8b))) {
 | 
				
			||||||
    if (this->motion_boundary_select_->has_index(data[FRAME_DATA_INDEX] - 1)) {
 | 
					    if (this->motion_boundary_select_->has_index(data[FRAME_DATA_INDEX] - 1)) {
 | 
				
			||||||
      this->motion_boundary_select_->publish_state(S_BOUNDARY_STR[data[FRAME_DATA_INDEX] - 1]);
 | 
					      this->motion_boundary_select_->publish_state(data[FRAME_DATA_INDEX] - 1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  } else if ((this->motion_trigger_number_ != nullptr) &&
 | 
					  } else if ((this->motion_trigger_number_ != nullptr) &&
 | 
				
			||||||
             ((data[FRAME_COMMAND_WORD_INDEX] == 0x0c) || (data[FRAME_COMMAND_WORD_INDEX] == 0x8c))) {
 | 
					             ((data[FRAME_COMMAND_WORD_INDEX] == 0x0c) || (data[FRAME_COMMAND_WORD_INDEX] == 0x8c))) {
 | 
				
			||||||
@@ -515,7 +515,7 @@ void MR24HPC1Component::r24_frame_parse_work_status_(uint8_t *data) {
 | 
				
			|||||||
    ESP_LOGD(TAG, "Reply: get radar init status 0x%02X", data[FRAME_DATA_INDEX]);
 | 
					    ESP_LOGD(TAG, "Reply: get radar init status 0x%02X", data[FRAME_DATA_INDEX]);
 | 
				
			||||||
  } else if (data[FRAME_COMMAND_WORD_INDEX] == 0x07) {
 | 
					  } else if (data[FRAME_COMMAND_WORD_INDEX] == 0x07) {
 | 
				
			||||||
    if ((this->scene_mode_select_ != nullptr) && (this->scene_mode_select_->has_index(data[FRAME_DATA_INDEX]))) {
 | 
					    if ((this->scene_mode_select_ != nullptr) && (this->scene_mode_select_->has_index(data[FRAME_DATA_INDEX]))) {
 | 
				
			||||||
      this->scene_mode_select_->publish_state(S_SCENE_STR[data[FRAME_DATA_INDEX]]);
 | 
					      this->scene_mode_select_->publish_state(data[FRAME_DATA_INDEX]);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      ESP_LOGD(TAG, "Select has index offset %d Error", data[FRAME_DATA_INDEX]);
 | 
					      ESP_LOGD(TAG, "Select has index offset %d Error", data[FRAME_DATA_INDEX]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -538,7 +538,7 @@ void MR24HPC1Component::r24_frame_parse_work_status_(uint8_t *data) {
 | 
				
			|||||||
    ESP_LOGD(TAG, "Reply: get radar init status 0x%02X", data[FRAME_DATA_INDEX]);
 | 
					    ESP_LOGD(TAG, "Reply: get radar init status 0x%02X", data[FRAME_DATA_INDEX]);
 | 
				
			||||||
  } else if (data[FRAME_COMMAND_WORD_INDEX] == 0x87) {
 | 
					  } else if (data[FRAME_COMMAND_WORD_INDEX] == 0x87) {
 | 
				
			||||||
    if ((this->scene_mode_select_ != nullptr) && (this->scene_mode_select_->has_index(data[FRAME_DATA_INDEX]))) {
 | 
					    if ((this->scene_mode_select_ != nullptr) && (this->scene_mode_select_->has_index(data[FRAME_DATA_INDEX]))) {
 | 
				
			||||||
      this->scene_mode_select_->publish_state(S_SCENE_STR[data[FRAME_DATA_INDEX]]);
 | 
					      this->scene_mode_select_->publish_state(data[FRAME_DATA_INDEX]);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      ESP_LOGD(TAG, "Select has index offset %d Error", data[FRAME_DATA_INDEX]);
 | 
					      ESP_LOGD(TAG, "Select has index offset %d Error", data[FRAME_DATA_INDEX]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -581,7 +581,7 @@ void MR24HPC1Component::r24_frame_parse_human_information_(uint8_t *data) {
 | 
				
			|||||||
             ((data[FRAME_COMMAND_WORD_INDEX] == 0x0A) || (data[FRAME_COMMAND_WORD_INDEX] == 0x8A))) {
 | 
					             ((data[FRAME_COMMAND_WORD_INDEX] == 0x0A) || (data[FRAME_COMMAND_WORD_INDEX] == 0x8A))) {
 | 
				
			||||||
    // none:0x00  1s:0x01 30s:0x02 1min:0x03 2min:0x04 5min:0x05 10min:0x06 30min:0x07 1hour:0x08
 | 
					    // none:0x00  1s:0x01 30s:0x02 1min:0x03 2min:0x04 5min:0x05 10min:0x06 30min:0x07 1hour:0x08
 | 
				
			||||||
    if (data[FRAME_DATA_INDEX] < 9) {
 | 
					    if (data[FRAME_DATA_INDEX] < 9) {
 | 
				
			||||||
      this->unman_time_select_->publish_state(S_UNMANNED_TIME_STR[data[FRAME_DATA_INDEX]]);
 | 
					      this->unman_time_select_->publish_state(data[FRAME_DATA_INDEX]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  } else if ((this->keep_away_text_sensor_ != nullptr) &&
 | 
					  } else if ((this->keep_away_text_sensor_ != nullptr) &&
 | 
				
			||||||
             ((data[FRAME_COMMAND_WORD_INDEX] == 0x0B) || (data[FRAME_COMMAND_WORD_INDEX] == 0x8B))) {
 | 
					             ((data[FRAME_COMMAND_WORD_INDEX] == 0x0B) || (data[FRAME_COMMAND_WORD_INDEX] == 0x8B))) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -292,7 +292,7 @@ void MR60FDA2Component::process_frame_() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        install_height_float = bit_cast<float>(current_install_height_int);
 | 
					        install_height_float = bit_cast<float>(current_install_height_int);
 | 
				
			||||||
        uint32_t select_index = find_nearest_index(install_height_float, INSTALL_HEIGHT, 7);
 | 
					        uint32_t select_index = find_nearest_index(install_height_float, INSTALL_HEIGHT, 7);
 | 
				
			||||||
        this->install_height_select_->publish_state(this->install_height_select_->at(select_index).value());
 | 
					        this->install_height_select_->publish_state(select_index);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (this->height_threshold_select_ != nullptr) {
 | 
					      if (this->height_threshold_select_ != nullptr) {
 | 
				
			||||||
@@ -301,7 +301,7 @@ void MR60FDA2Component::process_frame_() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        height_threshold_float = bit_cast<float>(current_height_threshold_int);
 | 
					        height_threshold_float = bit_cast<float>(current_height_threshold_int);
 | 
				
			||||||
        size_t select_index = find_nearest_index(height_threshold_float, HEIGHT_THRESHOLD, 7);
 | 
					        size_t select_index = find_nearest_index(height_threshold_float, HEIGHT_THRESHOLD, 7);
 | 
				
			||||||
        this->height_threshold_select_->publish_state(this->height_threshold_select_->at(select_index).value());
 | 
					        this->height_threshold_select_->publish_state(select_index);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (this->sensitivity_select_ != nullptr) {
 | 
					      if (this->sensitivity_select_ != nullptr) {
 | 
				
			||||||
@@ -309,7 +309,7 @@ void MR60FDA2Component::process_frame_() {
 | 
				
			|||||||
            encode_uint32(current_data_buf_[11], current_data_buf_[10], current_data_buf_[9], current_data_buf_[8]);
 | 
					            encode_uint32(current_data_buf_[11], current_data_buf_[10], current_data_buf_[9], current_data_buf_[8]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        uint32_t select_index = find_nearest_index(current_sensitivity, SENSITIVITY, 3);
 | 
					        uint32_t select_index = find_nearest_index(current_sensitivity, SENSITIVITY, 3);
 | 
				
			||||||
        this->sensitivity_select_->publish_state(this->sensitivity_select_->at(select_index).value());
 | 
					        this->sensitivity_select_->publish_state(select_index);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      ESP_LOGD(TAG, "Mounting height: %.2f, Height threshold: %.2f, Sensitivity: %" PRIu32, install_height_float,
 | 
					      ESP_LOGD(TAG, "Mounting height: %.2f, Height threshold: %.2f, Sensitivity: %" PRIu32, install_height_float,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,13 +14,13 @@ void Select::publish_state(const char *state) {
 | 
				
			|||||||
  if (index.has_value()) {
 | 
					  if (index.has_value()) {
 | 
				
			||||||
    this->publish_state(index.value());
 | 
					    this->publish_state(index.value());
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    ESP_LOGE(TAG, "'%s': invalid state for publish_state(): %s", this->get_name().c_str(), state);
 | 
					    ESP_LOGE(TAG, "'%s': Invalid option %s", this->get_name().c_str(), state);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Select::publish_state(size_t index) {
 | 
					void Select::publish_state(size_t index) {
 | 
				
			||||||
  if (!this->has_index(index)) {
 | 
					  if (!this->has_index(index)) {
 | 
				
			||||||
    ESP_LOGE(TAG, "'%s': invalid index for publish_state(): %zu", this->get_name().c_str(), index);
 | 
					    ESP_LOGE(TAG, "'%s': Invalid index %zu", this->get_name().c_str(), index);
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  const char *option = this->option_at(index);
 | 
					  const char *option = this->option_at(index);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user