Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/clang/include/clang-c/CXCompilationDatabase.h
35234 views
1
/*===-- clang-c/CXCompilationDatabase.h - Compilation database ---*- C -*-===*\
2
|* *|
3
|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *|
4
|* Exceptions. *|
5
|* See https://llvm.org/LICENSE.txt for license information. *|
6
|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *|
7
|* *|
8
|*===----------------------------------------------------------------------===*|
9
|* *|
10
|* This header provides a public interface to use CompilationDatabase without *|
11
|* the full Clang C++ API. *|
12
|* *|
13
\*===----------------------------------------------------------------------===*/
14
15
#ifndef LLVM_CLANG_C_CXCOMPILATIONDATABASE_H
16
#define LLVM_CLANG_C_CXCOMPILATIONDATABASE_H
17
18
#include "clang-c/CXString.h"
19
#include "clang-c/ExternC.h"
20
#include "clang-c/Platform.h"
21
22
LLVM_CLANG_C_EXTERN_C_BEGIN
23
24
/** \defgroup COMPILATIONDB CompilationDatabase functions
25
* \ingroup CINDEX
26
*
27
* @{
28
*/
29
30
/**
31
* A compilation database holds all information used to compile files in a
32
* project. For each file in the database, it can be queried for the working
33
* directory or the command line used for the compiler invocation.
34
*
35
* Must be freed by \c clang_CompilationDatabase_dispose
36
*/
37
typedef void * CXCompilationDatabase;
38
39
/**
40
* Contains the results of a search in the compilation database
41
*
42
* When searching for the compile command for a file, the compilation db can
43
* return several commands, as the file may have been compiled with
44
* different options in different places of the project. This choice of compile
45
* commands is wrapped in this opaque data structure. It must be freed by
46
* \c clang_CompileCommands_dispose.
47
*/
48
typedef void * CXCompileCommands;
49
50
/**
51
* Represents the command line invocation to compile a specific file.
52
*/
53
typedef void * CXCompileCommand;
54
55
/**
56
* Error codes for Compilation Database
57
*/
58
typedef enum {
59
/*
60
* No error occurred
61
*/
62
CXCompilationDatabase_NoError = 0,
63
64
/*
65
* Database can not be loaded
66
*/
67
CXCompilationDatabase_CanNotLoadDatabase = 1
68
69
} CXCompilationDatabase_Error;
70
71
/**
72
* Creates a compilation database from the database found in directory
73
* buildDir. For example, CMake can output a compile_commands.json which can
74
* be used to build the database.
75
*
76
* It must be freed by \c clang_CompilationDatabase_dispose.
77
*/
78
CINDEX_LINKAGE CXCompilationDatabase
79
clang_CompilationDatabase_fromDirectory(const char *BuildDir,
80
CXCompilationDatabase_Error *ErrorCode);
81
82
/**
83
* Free the given compilation database
84
*/
85
CINDEX_LINKAGE void
86
clang_CompilationDatabase_dispose(CXCompilationDatabase);
87
88
/**
89
* Find the compile commands used for a file. The compile commands
90
* must be freed by \c clang_CompileCommands_dispose.
91
*/
92
CINDEX_LINKAGE CXCompileCommands
93
clang_CompilationDatabase_getCompileCommands(CXCompilationDatabase,
94
const char *CompleteFileName);
95
96
/**
97
* Get all the compile commands in the given compilation database.
98
*/
99
CINDEX_LINKAGE CXCompileCommands
100
clang_CompilationDatabase_getAllCompileCommands(CXCompilationDatabase);
101
102
/**
103
* Free the given CompileCommands
104
*/
105
CINDEX_LINKAGE void clang_CompileCommands_dispose(CXCompileCommands);
106
107
/**
108
* Get the number of CompileCommand we have for a file
109
*/
110
CINDEX_LINKAGE unsigned
111
clang_CompileCommands_getSize(CXCompileCommands);
112
113
/**
114
* Get the I'th CompileCommand for a file
115
*
116
* Note : 0 <= i < clang_CompileCommands_getSize(CXCompileCommands)
117
*/
118
CINDEX_LINKAGE CXCompileCommand
119
clang_CompileCommands_getCommand(CXCompileCommands, unsigned I);
120
121
/**
122
* Get the working directory where the CompileCommand was executed from
123
*/
124
CINDEX_LINKAGE CXString
125
clang_CompileCommand_getDirectory(CXCompileCommand);
126
127
/**
128
* Get the filename associated with the CompileCommand.
129
*/
130
CINDEX_LINKAGE CXString
131
clang_CompileCommand_getFilename(CXCompileCommand);
132
133
/**
134
* Get the number of arguments in the compiler invocation.
135
*
136
*/
137
CINDEX_LINKAGE unsigned
138
clang_CompileCommand_getNumArgs(CXCompileCommand);
139
140
/**
141
* Get the I'th argument value in the compiler invocations
142
*
143
* Invariant :
144
* - argument 0 is the compiler executable
145
*/
146
CINDEX_LINKAGE CXString
147
clang_CompileCommand_getArg(CXCompileCommand, unsigned I);
148
149
/**
150
* Get the number of source mappings for the compiler invocation.
151
*/
152
CINDEX_LINKAGE unsigned
153
clang_CompileCommand_getNumMappedSources(CXCompileCommand);
154
155
/**
156
* Get the I'th mapped source path for the compiler invocation.
157
*/
158
CINDEX_LINKAGE CXString
159
clang_CompileCommand_getMappedSourcePath(CXCompileCommand, unsigned I);
160
161
/**
162
* Get the I'th mapped source content for the compiler invocation.
163
*/
164
CINDEX_LINKAGE CXString
165
clang_CompileCommand_getMappedSourceContent(CXCompileCommand, unsigned I);
166
167
/**
168
* @}
169
*/
170
171
LLVM_CLANG_C_EXTERN_C_END
172
173
#endif
174
175
176