LCOV - code coverage report
Current view: top level - include/llvm/Support - SMLoc.h (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 11 11 100.0 %
Date: 2017-09-14 15:23:50 Functions: 0 0 -
Legend: Lines: hit not hit

          Line data    Source code
       1             : //===- SMLoc.h - Source location for use with diagnostics -------*- C++ -*-===//
       2             : //
       3             : //                     The LLVM Compiler Infrastructure
       4             : //
       5             : // This file is distributed under the University of Illinois Open Source
       6             : // License. See LICENSE.TXT for details.
       7             : //
       8             : //===----------------------------------------------------------------------===//
       9             : //
      10             : // This file declares the SMLoc class.  This class encapsulates a location in
      11             : // source code for use in diagnostics.
      12             : //
      13             : //===----------------------------------------------------------------------===//
      14             : 
      15             : #ifndef LLVM_SUPPORT_SMLOC_H
      16             : #define LLVM_SUPPORT_SMLOC_H
      17             : 
      18             : #include "llvm/ADT/None.h"
      19             : #include <cassert>
      20             : 
      21             : namespace llvm {
      22             : 
      23             : /// Represents a location in source code.
      24             : class SMLoc {
      25             :   const char *Ptr = nullptr;
      26             : 
      27             : public:
      28    21041981 :   SMLoc() = default;
      29             : 
      30       16970 :   bool isValid() const { return Ptr != nullptr; }
      31             : 
      32        5326 :   bool operator==(const SMLoc &RHS) const { return RHS.Ptr == Ptr; }
      33     1024206 :   bool operator!=(const SMLoc &RHS) const { return RHS.Ptr != Ptr; }
      34             : 
      35     1320003 :   const char *getPointer() const { return Ptr; }
      36             : 
      37             :   static SMLoc getFromPointer(const char *Ptr) {
      38    58659596 :     SMLoc L;
      39    58659596 :     L.Ptr = Ptr;
      40             :     return L;
      41             :   }
      42             : };
      43             : 
      44             : /// Represents a range in source code.
      45             : ///
      46             : /// SMRange is implemented using a half-open range, as is the convention in C++.
      47             : /// In the string "abc", the range (1,3] represents the substring "bc", and the
      48             : /// range (2,2] represents an empty range between the characters "b" and "c".
      49             : class SMRange {
      50             : public:
      51             :   SMLoc Start, End;
      52             : 
      53    11786316 :   SMRange() = default;
      54      162529 :   SMRange(NoneType) {}
      55      668747 :   SMRange(SMLoc St, SMLoc En) : Start(St), End(En) {
      56             :     assert(Start.isValid() == End.isValid() &&
      57             :            "Start and end should either both be valid or both be invalid!");
      58             :   }
      59             : 
      60       32769 :   bool isValid() const { return Start.isValid(); }
      61             : };
      62             : 
      63             : } // end namespace llvm
      64             : 
      65             : #endif // LLVM_SUPPORT_SMLOC_H

Generated by: LCOV version 1.13