1*0b57cec5SDimitry Andric //===- DIALineNumber.cpp - DIA implementation of IPDBLineNumber -*- C++ -*-===// 2*0b57cec5SDimitry Andric // 3*0b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*0b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5*0b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*0b57cec5SDimitry Andric // 7*0b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 8*0b57cec5SDimitry Andric 9*0b57cec5SDimitry Andric #include "llvm/DebugInfo/PDB/DIA/DIALineNumber.h" 10*0b57cec5SDimitry Andric 11*0b57cec5SDimitry Andric using namespace llvm; 12*0b57cec5SDimitry Andric using namespace llvm::pdb; 13*0b57cec5SDimitry Andric DIALineNumber(CComPtr<IDiaLineNumber> DiaLineNumber)14*0b57cec5SDimitry AndricDIALineNumber::DIALineNumber(CComPtr<IDiaLineNumber> DiaLineNumber) 15*0b57cec5SDimitry Andric : LineNumber(DiaLineNumber) {} 16*0b57cec5SDimitry Andric getLineNumber() const17*0b57cec5SDimitry Andricuint32_t DIALineNumber::getLineNumber() const { 18*0b57cec5SDimitry Andric DWORD Line = 0; 19*0b57cec5SDimitry Andric return (S_OK == LineNumber->get_lineNumber(&Line)) ? Line : 0; 20*0b57cec5SDimitry Andric } 21*0b57cec5SDimitry Andric getLineNumberEnd() const22*0b57cec5SDimitry Andricuint32_t DIALineNumber::getLineNumberEnd() const { 23*0b57cec5SDimitry Andric DWORD LineEnd = 0; 24*0b57cec5SDimitry Andric return (S_OK == LineNumber->get_lineNumberEnd(&LineEnd)) ? LineEnd : 0; 25*0b57cec5SDimitry Andric } 26*0b57cec5SDimitry Andric getColumnNumber() const27*0b57cec5SDimitry Andricuint32_t DIALineNumber::getColumnNumber() const { 28*0b57cec5SDimitry Andric DWORD Column = 0; 29*0b57cec5SDimitry Andric return (S_OK == LineNumber->get_columnNumber(&Column)) ? Column : 0; 30*0b57cec5SDimitry Andric } 31*0b57cec5SDimitry Andric getColumnNumberEnd() const32*0b57cec5SDimitry Andricuint32_t DIALineNumber::getColumnNumberEnd() const { 33*0b57cec5SDimitry Andric DWORD ColumnEnd = 0; 34*0b57cec5SDimitry Andric return (S_OK == LineNumber->get_columnNumberEnd(&ColumnEnd)) ? ColumnEnd : 0; 35*0b57cec5SDimitry Andric } 36*0b57cec5SDimitry Andric getAddressSection() const37*0b57cec5SDimitry Andricuint32_t DIALineNumber::getAddressSection() const { 38*0b57cec5SDimitry Andric DWORD Section = 0; 39*0b57cec5SDimitry Andric return (S_OK == LineNumber->get_addressSection(&Section)) ? Section : 0; 40*0b57cec5SDimitry Andric } 41*0b57cec5SDimitry Andric getAddressOffset() const42*0b57cec5SDimitry Andricuint32_t DIALineNumber::getAddressOffset() const { 43*0b57cec5SDimitry Andric DWORD Offset = 0; 44*0b57cec5SDimitry Andric return (S_OK == LineNumber->get_addressOffset(&Offset)) ? Offset : 0; 45*0b57cec5SDimitry Andric } 46*0b57cec5SDimitry Andric getRelativeVirtualAddress() const47*0b57cec5SDimitry Andricuint32_t DIALineNumber::getRelativeVirtualAddress() const { 48*0b57cec5SDimitry Andric DWORD RVA = 0; 49*0b57cec5SDimitry Andric return (S_OK == LineNumber->get_relativeVirtualAddress(&RVA)) ? RVA : 0; 50*0b57cec5SDimitry Andric } 51*0b57cec5SDimitry Andric getVirtualAddress() const52*0b57cec5SDimitry Andricuint64_t DIALineNumber::getVirtualAddress() const { 53*0b57cec5SDimitry Andric ULONGLONG Addr = 0; 54*0b57cec5SDimitry Andric return (S_OK == LineNumber->get_virtualAddress(&Addr)) ? Addr : 0; 55*0b57cec5SDimitry Andric } 56*0b57cec5SDimitry Andric getLength() const57*0b57cec5SDimitry Andricuint32_t DIALineNumber::getLength() const { 58*0b57cec5SDimitry Andric DWORD Length = 0; 59*0b57cec5SDimitry Andric return (S_OK == LineNumber->get_length(&Length)) ? Length : 0; 60*0b57cec5SDimitry Andric } 61*0b57cec5SDimitry Andric getSourceFileId() const62*0b57cec5SDimitry Andricuint32_t DIALineNumber::getSourceFileId() const { 63*0b57cec5SDimitry Andric DWORD Id = 0; 64*0b57cec5SDimitry Andric return (S_OK == LineNumber->get_sourceFileId(&Id)) ? Id : 0; 65*0b57cec5SDimitry Andric } 66*0b57cec5SDimitry Andric getCompilandId() const67*0b57cec5SDimitry Andricuint32_t DIALineNumber::getCompilandId() const { 68*0b57cec5SDimitry Andric DWORD Id = 0; 69*0b57cec5SDimitry Andric return (S_OK == LineNumber->get_compilandId(&Id)) ? Id : 0; 70*0b57cec5SDimitry Andric } 71*0b57cec5SDimitry Andric isStatement() const72*0b57cec5SDimitry Andricbool DIALineNumber::isStatement() const { 73*0b57cec5SDimitry Andric BOOL Statement = 0; 74*0b57cec5SDimitry Andric return (S_OK == LineNumber->get_statement(&Statement)) ? Statement : false; 75*0b57cec5SDimitry Andric } 76