11#include <unordered_map>
16#include "../bpp_include/bpp.h"
39 std::vector<std::shared_ptr<bpp::bpp_program>>
programs;
50 std::atomic<std::shared_ptr<Snapshot>>
snapshot;
57 const std::string& file_path,
58 std::optional<std::pair<std::string, std::string>> replacement_file_contents = std::nullopt);
61 std::shared_ptr<std::vector<std::string>>
include_paths = std::make_shared<std::vector<std::string>>();
95 std::shared_ptr<bpp::bpp_program>
get_program(
const std::string& file_path,
bool jump_queue =
false);
111 std::shared_ptr<bpp::bpp_program>
re_parse_program(
const std::string& file_path);
123 const std::string& file_path,
124 std::pair<std::string, std::string> replacement_file_contents);
131 void open_file(
const std::string& file_path);
141 void close_file(
const std::string& file_path);
Manages a pool of bpp_program objects for efficient reuse and access.
Definition ProgramPool.h:36
bool utf16_mode
Definition ProgramPool.h:52
std::atomic< std::shared_ptr< Snapshot > > snapshot
Definition ProgramPool.h:50
bool get_utf16_mode() const
Definition ProgramPool.cpp:36
void close_file(const std::string &file_path)
Mark a file as closed in the program pool.
Definition ProgramPool.cpp:276
std::recursive_mutex pool_mutex
Definition ProgramPool.h:42
bool suppress_warnings
Definition ProgramPool.h:62
void clean()
Definition ProgramPool.cpp:304
std::vector< std::shared_ptr< bpp::bpp_program > > programs
Definition ProgramPool.h:39
std::shared_ptr< bpp::bpp_program > get_program(const std::string &file_path, bool jump_queue=false)
Get or create a program for the given file path.
Definition ProgramPool.cpp:159
void open_file(const std::string &file_path)
Mark a file as open in the program pool.
Definition ProgramPool.cpp:262
std::shared_ptr< std::vector< std::string > > include_paths
Definition ProgramPool.h:61
std::unordered_map< std::string, bool > open_files
Definition ProgramPool.h:41
Snapshot load_snapshot() const
Definition ProgramPool.cpp:55
void update_snapshot()
Definition ProgramPool.cpp:44
void set_utf16_mode(bool mode)
Definition ProgramPool.cpp:32
void _remove_program(size_t index)
Definition ProgramPool.cpp:63
bool has_program(const std::string &file_path)
Check if a program for the given file path exists in the pool.
Definition ProgramPool.cpp:206
void add_include_path(const std::string &path)
Add an include path for use by all future programs to be added to the pool.
Definition ProgramPool.cpp:24
std::shared_ptr< bpp::bpp_program > re_parse_program(const std::string &file_path)
Re-parse a program for the given file path.
Definition ProgramPool.cpp:213
void _remove_oldest_program()
Definition ProgramPool.cpp:40
std::unordered_map< std::string, size_t > program_indices
Definition ProgramPool.h:40
size_t max_programs
Definition ProgramPool.h:38
void set_suppress_warnings(bool suppress)
Definition ProgramPool.cpp:28
std::shared_ptr< bpp::bpp_program > _parse_program(const std::string &file_path, std::optional< std::pair< std::string, std::string > > replacement_file_contents=std::nullopt)
Definition ProgramPool.cpp:98
Definition ProgramPool.h:45
std::unordered_map< std::string, size_t > program_indices_snapshot
Definition ProgramPool.h:47
std::vector< std::shared_ptr< bpp::bpp_program > > programs_snapshot
Definition ProgramPool.h:46
std::unordered_map< std::string, bool > open_files_snapshot
Definition ProgramPool.h:48