Parse free functions
This commit is contained in:
parent
210fcf2c36
commit
9267bbbff2
15 changed files with 442 additions and 58 deletions
|
|
@ -16,6 +16,7 @@ namespace cppast
|
|||
{
|
||||
class cpp_expression;
|
||||
class cpp_type;
|
||||
enum cpp_storage_class_specifiers : int;
|
||||
|
||||
namespace detail
|
||||
{
|
||||
|
|
@ -26,6 +27,9 @@ namespace cppast
|
|||
// as then you won't get it "as-is"
|
||||
cxstring get_cursor_name(const CXCursor& cur);
|
||||
|
||||
// note: does not handle thread_local
|
||||
cpp_storage_class_specifiers get_storage_class(const CXCursor& cur);
|
||||
|
||||
struct parse_context
|
||||
{
|
||||
CXTranslationUnit tu;
|
||||
|
|
@ -39,12 +43,13 @@ namespace cppast
|
|||
std::unique_ptr<cpp_expression> parse_expression(const parse_context& context,
|
||||
const CXCursor& cur);
|
||||
// parse the expression starting at the current token in the stream
|
||||
// and ends at the end of the stream
|
||||
// and ends at the given iterator
|
||||
// this is required for situations where there is no expression cursor exposed,
|
||||
// like member initializers
|
||||
std::unique_ptr<cpp_expression> parse_raw_expression(const parse_context& context,
|
||||
token_stream& stream,
|
||||
const CXType& type);
|
||||
std::unique_ptr<cpp_expression> parse_raw_expression(const parse_context& context,
|
||||
token_stream& stream,
|
||||
token_iterator end,
|
||||
std::unique_ptr<cpp_type> type);
|
||||
|
||||
// parse_entity() dispatches on the cursor type
|
||||
// it calls one of the other parse functions defined elsewhere
|
||||
|
|
@ -76,6 +81,9 @@ namespace cppast
|
|||
std::unique_ptr<cpp_entity> parse_cpp_member_variable(const parse_context& context,
|
||||
const CXCursor& cur);
|
||||
|
||||
std::unique_ptr<cpp_entity> parse_cpp_function(const parse_context& context,
|
||||
const CXCursor& cur);
|
||||
|
||||
std::unique_ptr<cpp_entity> parse_entity(const parse_context& context, const CXCursor& cur);
|
||||
}
|
||||
} // namespace cppast::detail
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue