%YAML 1.2
--- |
  /*
   *
   * Copyright 2015 gRPC authors.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   *
   */

  // This file is autogenerated from a template file. Please make
  // modifications to
  // `templates/src/objective-c/GRPCClient/private/version.h.template`
  // instead. This file can be regenerated from the template by running
  // `tools/buildgen/generate_projects.sh`.

  #define GRPC_OBJC_VERSION_STRING @"${settings.version}"
  #define GRPC_C_VERSION_STRING @"${settings.core_version}"
