// Copyright 2018 The Bazel Authors. All rights reserved.
//
// 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.

package com.google.devtools.coverageoutputgenerator;

/**
 * Stores markers used by the lcov tracefile and gcov intermediate format file. See <a
 * href="http://ltp.sourceforge.net/coverage/lcov/geninfo.1.php">lcov documentation</a> and the flag
 * {@code --intermediate-format} in <a href="https://gcc.gnu.org/onlinedocs/gcc/Invoking-Gcov.html">
 * gcov documentation</a>.
 */
class Constants {
  static final String SF_MARKER = "SF:";
  static final String FN_MARKER = "FN:";
  static final String FNDA_MARKER = "FNDA:";
  static final String FNF_MARKER = "FNF:";
  static final String FNH_MARKER = "FNH:";
  static final String BRDA_MARKER = "BRDA:";
  static final String BA_MARKER = "BA:";
  static final String BRF_MARKER = "BRF:";
  static final String BRH_MARKER = "BRH:";
  static final String DA_MARKER = "DA:";
  static final String LH_MARKER = "LH:";
  static final String LF_MARKER = "LF:";
  static final String END_OF_RECORD_MARKER = "end_of_record";
  static final String NEVER_EVALUATED = "-";
  static final String TRACEFILE_EXTENSION = ".dat";
  static final String GCOV_EXTENSION = ".gcov";
  static final String GCOV_JSON_EXTENSION = ".gcov.json.gz";
  static final String PROFDATA_EXTENSION = ".profdata";
  static final String DELIMITER = ",";
  static final String GCOV_VERSION_MARKER = "version:";
  static final String GCOV_CWD_MARKER = "cwd:";
  static final String GCOV_FILE_MARKER = "file:";
  static final String GCOV_FUNCTION_MARKER = "function:";
  static final String GCOV_LINE_MARKER = "lcount:";
  static final String GCOV_BRANCH_MARKER = "branch:";
  static final String GCOV_BRANCH_NOTEXEC = "notexec";
  static final String GCOV_BRANCH_NOTTAKEN = "nottaken";
  static final String GCOV_BRANCH_TAKEN = "taken";
}
