// Generated by the proto_extras plugin. DO NOT EDIT!
// source: components/optimization_guide/proto/model_execution.proto

#include "components/optimization_guide/proto/model_execution.equal.h"



#include "components/optimization_guide/proto/common_types.equal.h"
#include "components/optimization_guide/proto/common_types.pb.h"
#include "components/optimization_guide/proto/model_execution.pb.h"


namespace optimization_guide {
namespace proto {
bool operator==(const ExecuteRequest& lhs, const ExecuteRequest& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_feature() != rhs.has_feature()) return false;
  if (lhs.has_feature() && lhs.feature() != rhs.feature()) return false;
  if (lhs.has_request_metadata() != rhs.has_request_metadata()) return false;
  if (lhs.has_request_metadata() && lhs.request_metadata() != rhs.request_metadata()) return false;
  return true;
}

bool operator!=(const ExecuteRequest& lhs, const ExecuteRequest& rhs) {
  return !(lhs == rhs);
}
bool operator==(const PrivateExecuteRequest& lhs, const PrivateExecuteRequest& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_request() != rhs.has_request()) return false;
  if (lhs.has_request() && lhs.request() != rhs.request()) return false;
  if (lhs.variations().size() != rhs.variations().size()) return false;
  for (int i = 0; i < lhs.variations().size(); ++i) {
    if (lhs.variations()[i] != rhs.variations()[i]) return false;
  }
  return true;
}

bool operator!=(const PrivateExecuteRequest& lhs, const PrivateExecuteRequest& rhs) {
  return !(lhs == rhs);
}
bool operator==(const ExecuteResponse& lhs, const ExecuteResponse& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.response_case() != rhs.response_case()) return false;
  switch (lhs.response_case()) {
    case ExecuteResponse::kResponseMetadata:
      if (lhs.response_metadata() != rhs.response_metadata()) return false;
      break;
    case ExecuteResponse::kErrorResponse:
      if (lhs.error_response() != rhs.error_response()) return false;
      break;
    case ExecuteResponse::RESPONSE_NOT_SET:
      break;
  }
  if (lhs.has_model_version() != rhs.has_model_version()) return false;
  if (lhs.has_model_version() && lhs.model_version() != rhs.model_version()) return false;
  if (lhs.has_server_execution_id() != rhs.has_server_execution_id()) return false;
  if (lhs.has_server_execution_id() && lhs.server_execution_id() != rhs.server_execution_id()) return false;
  return true;
}

bool operator!=(const ExecuteResponse& lhs, const ExecuteResponse& rhs) {
  return !(lhs == rhs);
}
bool operator==(const ErrorResponse& lhs, const ErrorResponse& rhs) {
  if (&lhs == &rhs) return true;
  if (lhs.unknown_fields() != rhs.unknown_fields()) return false;
  if (lhs.has_error_state() != rhs.has_error_state()) return false;
  if (lhs.has_error_state() && lhs.error_state() != rhs.error_state()) return false;
  return true;
}

bool operator!=(const ErrorResponse& lhs, const ErrorResponse& rhs) {
  return !(lhs == rhs);
}
}  // namespace proto
}  // namespace optimization_guide

