Data types in this API store analysis units directly.
This means that in order to create the config pragmas mapping for a
given project, all sources of that project + for the config pragmas
files need to be parsed. For cases like opening a project in order to
analyze only a couple of source files, this is very inefficient, both
for processing time and for memory consumption.
This commit reworks the data types to avoid this: store filenames
instead of analysis units.
The low level function accepts a ctypes.c_char_p, which requires a bytes
instance, so users passing a str will get a TypeError exception. Use
the dedicated _unwrap_charset function to run the automatic conversion
in this case.
TN: VB02-014
This commit introduces a new class that represents a loaded project
(GPRProject), created from the usual project loading arguments (project
file, scenario variables, target and RTS info). This new class provides
two methods: create_unit_provider(project=None) to create a unit
provider wrapping a project and source_files(mode) to query the list of
source files in a project.
It also removes the now obsolete SourceFiles class (recently added), but
preserves the UnitProvider.for_project method to avoid breaking existing
user code (been there for several years).
Closes#932
This commit introduces a new public package (Libadalang.Preprocessing)
to provide GNATprep-compatible preprocessing features, including a file
reader that preprocesses files. It also adds a small C/Python binding
layer for this file reader, and extends the User Manual to describe this
feature.
TN: V117-037
Move most of "ada/*" to the root directory (this makes sense, as this
repository has been dedicated to Libadalang for years), and rename
"ada/language" to "ada".
TN: T914-010