forked from souffle-lang/souffle
-
Notifications
You must be signed in to change notification settings - Fork 0
/
LogStatement.h
142 lines (125 loc) · 5.58 KB
/
LogStatement.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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/*
* Souffle - A Datalog Compiler
* Copyright (c) 2018, The Souffle Developers. All rights reserved
* Licensed under the Universal Permissive License v 1.0 as shown at:
* - https://opensource.org/licenses/UPL
* - <souffle root>/licenses/SOUFFLE-UPL.txt
*/
/************************************************************************
*
* @file LogStatement.h
*
* Generate log statements for multiple file types.
*
***********************************************************************/
#include "parser/SrcLocation.h"
#include <sstream>
#include <string>
namespace souffle {
class LogStatement {
public:
static const std::string tNonrecursiveRelation(
const std::string& relationName, const SrcLocation& srcLocation) {
const char* messageType = "@t-nonrecursive-relation";
std::stringstream line;
line << messageType << ";" << relationName << ";" << srcLocation << ";";
return line.str();
}
static const std::string tRelationLoadTime(
const std::string& relationName, const SrcLocation& srcLocation) {
const char* messageType = "@t-relation-loadtime";
std::stringstream line;
line << messageType << ";" << relationName << ";" << srcLocation << ";loadtime;";
return line.str();
}
static const std::string tRelationSaveTime(
const std::string& relationName, const SrcLocation& srcLocation) {
const char* messageType = "@t-relation-savetime";
std::stringstream line;
line << messageType << ";" << relationName << ";" << srcLocation << ";savetime;";
return line.str();
}
static const std::string nNonrecursiveRelation(
const std::string& relationName, const SrcLocation& srcLocation) {
const char* messageType = "@n-nonrecursive-relation";
std::stringstream line;
line << messageType << ";" << relationName << ";" << srcLocation << ";";
return line.str();
}
static const std::string tNonrecursiveRule(
const std::string& relationName, const SrcLocation& srcLocation, const std::string& datalogText) {
const char* messageType = "@t-nonrecursive-rule";
std::stringstream line;
line << messageType << ";" << relationName << ";" << srcLocation << ";" << datalogText << ";";
return line.str();
}
static const std::string nNonrecursiveRule(
const std::string& relationName, const SrcLocation& srcLocation, const std::string& datalogText) {
const char* messageType = "@n-nonrecursive-rule";
std::stringstream line;
line << messageType << ";" << relationName << ";" << srcLocation << ";" << datalogText << ";";
return line.str();
}
static const std::string tRecursiveRule(const std::string& relationName, const std::size_t version,
const SrcLocation& srcLocation, const std::string& datalogText) {
const char* messageType = "@t-recursive-rule";
std::stringstream line;
line << messageType << ";" << relationName << ";" << version << ";" << srcLocation << ";"
<< datalogText << ";";
return line.str();
}
static const std::string nRecursiveRule(const std::string& relationName, const std::size_t version,
const SrcLocation& srcLocation, const std::string& datalogText) {
const char* messageType = "@n-recursive-rule";
std::stringstream line;
line << messageType << ";" << relationName << ";" << version << ";" << srcLocation << ";"
<< datalogText << ";";
return line.str();
}
static const std::string tRecursiveRelation(
const std::string& relationName, const SrcLocation& srcLocation) {
const char* messageType = "@t-recursive-relation";
std::stringstream line;
line << messageType << ";" << relationName << ";" << srcLocation << ";";
return line.str();
}
static const std::string nRecursiveRelation(
const std::string& relationName, const SrcLocation& srcLocation) {
const char* messageType = "@n-recursive-relation";
std::stringstream line;
line << messageType << ";" << relationName << ";" << srcLocation << ";";
return line.str();
}
static const std::string cRecursiveRelation(
const std::string& relationName, const SrcLocation& srcLocation) {
const char* messageType = "@c-recursive-relation";
std::stringstream line;
line << messageType << ";" << relationName << ";" << srcLocation << ";";
return line.str();
}
static const std::string pProofCounter(
const std::string& relationName, const SrcLocation& srcLocation, const std::string& datalogText) {
// TODO (#590): the profiler should be modified to use this type of log message, as currently these
// messages are ignored
const char* messageType = "#p-proof-counter";
std::stringstream line;
line << messageType << ";" << relationName << ";" << srcLocation << ";" << datalogText << ";";
// TODO (#590): the additional semicolon is added to maintain backwards compatibility and should
// eventually be removed
line << ";";
return line.str();
}
static const std::string runtime() {
const char* messageType = "@runtime";
std::stringstream line;
line << messageType << ";";
return line.str();
}
static const std::string startDebug() {
const char* messageType = "@start-debug";
std::stringstream line;
line << messageType;
return line.str();
}
};
} // end of namespace souffle