forked from google/autofdo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsource_info.h
64 lines (51 loc) · 1.81 KB
/
source_info.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// Copyright 2014 Google Inc. 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.
// Class to represent the source info.
#ifndef AUTOFDO_SOURCE_INFO_H_
#define AUTOFDO_SOURCE_INFO_H_
#include <vector>
namespace autofdo {
// Represents the source position.
struct SourceInfo {
SourceInfo()
: func_name(NULL), dir_name(NULL), file_name(NULL), start_line(0),
line(0), discriminator(0) {}
SourceInfo(const char *func_name, const char *dir_name, const char *file_name,
uint32 start_line, uint32 line, uint32 discriminator)
: func_name(func_name), dir_name(dir_name), file_name(file_name),
start_line(start_line), line(line), discriminator(discriminator) {}
bool operator<(const SourceInfo &p) const;
string RelativePath() const {
if (dir_name && *dir_name)
return string(dir_name) + "/" + string(file_name);
if (file_name)
return string(file_name);
return string();
}
uint32 Offset() const {
return ((line - start_line) << 16) | discriminator;
}
bool Malformed() const {
return line < start_line;
}
const char *func_name;
const char *dir_name;
const char *file_name;
uint32 start_line;
uint32 line;
uint32 discriminator;
};
typedef vector<SourceInfo> SourceStack;
} // namespace autofdo
#endif // AUTOFDO_SOURCE_INFO_H_