10#include <unordered_map>
55 std::unordered_map<std::string, std::vector<bpp::diagnostic>>
diagnostics;
73 bool add_class(std::shared_ptr<bpp_class> class_);
75 std::shared_ptr<bpp_class>
get_class(
const std::string&
name,
size_t max_visible_index = SIZE_MAX)
override;
107 const std::string& file,
108 uint32_t start_line, uint32_t start_column,
109 uint32_t end_line, uint32_t end_column,
110 std::shared_ptr<bpp::bpp_entity> entity
114 const std::string& file,
115 uint32_t line, uint32_t column
127 const std::string& file,
129 const std::string& message,
130 uint32_t start_line, uint32_t start_column,
131 uint32_t end_line, uint32_t end_column
134 std::vector<bpp::diagnostic>
get_diagnostics(
const std::string& file)
const;
An entity which can contain code.
Definition bpp_code_entity.h:35
std::weak_ptr< bpp_class > type
Definition bpp_entity.h:33
std::string name
Definition bpp_entity.h:27
std::weak_ptr< bpp_class > containing_class
Definition bpp_entity.h:34
virtual std::shared_ptr< bpp_class > get_class()
Definition bpp_entity.cpp:30
The main program.
Definition bpp_program.h:28
uint64_t get_dynamic_cast_counter() const
Definition bpp_program.cpp:175
void add_diagnostic(const std::string &file, diagnostic_type type, const std::string &message, uint32_t start_line, uint32_t start_column, uint32_t end_line, uint32_t end_column)
Definition bpp_program.cpp:269
uint64_t assignment_counter
Definition bpp_program.h:31
uint64_t dynamic_cast_counter
Definition bpp_program.h:33
void set_main_source_file(const std::string &file)
Definition bpp_program.cpp:242
std::vector< std::shared_ptr< bpp_class > > get_all_known_classes() const override
Definition bpp_program.cpp:32
std::weak_ptr< bpp_program > get_containing_program() override
Definition bpp_program.cpp:24
bool set_containing_class(std::weak_ptr< bpp_class > containing_class) override
Definition bpp_program.cpp:16
uint64_t get_supershell_counter() const
Definition bpp_program.cpp:139
void increment_typeof_counter()
Definition bpp_program.cpp:179
std::shared_ptr< AST::Program > get_source_file_ast(const std::string &file) const
Definition bpp_program.cpp:261
void increment_function_counter()
Definition bpp_program.cpp:151
std::unordered_map< std::string, EntityMap > entity_maps
Definition bpp_program.h:50
std::string main_source_file
Definition bpp_program.h:39
uint64_t get_typeof_counter() const
Definition bpp_program.cpp:189
uint64_t get_assignment_counter() const
Definition bpp_program.cpp:147
uint64_t object_counter
Definition bpp_program.h:35
std::shared_ptr< bpp::bpp_entity > get_active_entity(const std::string &file, uint32_t line, uint32_t column)
Definition bpp_program.cpp:220
uint64_t supershell_counter
Definition bpp_program.h:30
std::vector< bpp::diagnostic > get_diagnostics(const std::string &file) const
Definition bpp_program.cpp:286
std::shared_ptr< std::vector< std::string > > get_include_paths() const
Definition bpp_program.cpp:122
uint64_t get_function_counter() const
Definition bpp_program.cpp:161
std::unordered_map< std::string, std::vector< bpp::diagnostic > > diagnostics
Definition bpp_program.h:55
uint64_t typeof_counter
Definition bpp_program.h:34
uint64_t function_counter
Definition bpp_program.h:32
size_t number_of_known_classes() const override
Definition bpp_program.cpp:36
void set_target_bash_version(BashVersion target_bash_version)
Definition bpp_program.cpp:201
bpp_program(bpp_program &&other) noexcept=default
uint64_t get_object_counter() const
Definition bpp_program.cpp:197
void increment_dynamic_cast_counter()
Definition bpp_program.cpp:165
BashVersion get_target_bash_version() const
Definition bpp_program.cpp:205
bool prepare_class(std::shared_ptr< bpp_class > class_)
Prepare a class for addition to the program by adding it to the classes map.
Definition bpp_program.cpp:50
void add_source_file(const std::string &file)
Definition bpp_program.cpp:250
bool add_class(std::shared_ptr< bpp_class > class_)
Add a class to the program.
Definition bpp_program.cpp:62
bpp_program(const bpp_program &other)=default
void increment_supershell_counter()
Definition bpp_program.cpp:126
bpp_program & operator=(const bpp_program &other)=default
~bpp_program() override=default
std::shared_ptr< std::vector< std::string > > include_paths
Definition bpp_program.h:59
void increment_assignment_counter()
Definition bpp_program.cpp:143
auto get_source_files() const
Definition bpp_program.h:118
void mark_entity(const std::string &file, uint32_t start_line, uint32_t start_column, uint32_t end_line, uint32_t end_column, std::shared_ptr< bpp::bpp_entity > entity)
Definition bpp_program.cpp:209
void set_source_file_ast(const std::string &file, std::shared_ptr< AST::Program > ast)
Definition bpp_program.cpp:257
BashVersion target_bash_version
Definition bpp_program.h:37
void set_output_stream(std::shared_ptr< std::ostream > output_stream)
Definition bpp_program.cpp:20
void increment_object_counter()
Definition bpp_program.cpp:193
bpp_program & operator=(bpp_program &&other) noexcept=default
OwnedEntityList< bpp_class > owned_classes
Definition bpp_program.h:43
const std::string & get_main_source_file() const
Definition bpp_program.cpp:238
void clear_diagnostics(const std::string &file)
Definition bpp_program.cpp:294
void set_include_paths(std::shared_ptr< std::vector< std::string > > paths)
Definition bpp_program.cpp:118
std::unordered_map< std::string, std::shared_ptr< AST::Program > > source_file_asts
Definition bpp_program.h:47
Definition bash_case.cpp:9
diagnostic_type
Definition bpp.h:33
Represents a Bash version to target for code generation.
Definition BashVersion.h:23