You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

86 lines
2.0 KiB

/**
* @file combine_tools.h
*
* @author Guy Maurel
* @license GPL v2+
* extract from combine.cpp
*/
#ifndef COMBINE_TOOLS_H_INCLUDED
#define COMBINE_TOOLS_H_INCLUDED
#include "chunk.h"
#include "ChunkStack.h"
/**
* Checks to see if a series of chunks could be a C++ parameter
* FOO foo(5, &val);
*
* WORD means CT_WORD or CT_TYPE
*
* "WORD WORD" ==> true
* "QUALIFIER ??" ==> true
* "TYPE" ==> true
* "WORD" ==> true
* "WORD.WORD" ==> true
* "WORD::WORD" ==> true
* "WORD * WORD" ==> true
* "WORD & WORD" ==> true
* "NUMBER" ==> false
* "STRING" ==> false
* "OPEN PAREN" ==> false
*
* @param start the first chunk to look at
* @param end the chunk after the last one to look at
*/
bool can_be_full_param(Chunk *start, Chunk *end);
//! Scan backwards to see if we might be on a type declaration
bool chunk_ends_type(Chunk *start);
bool chunkstack_match(ChunkStack &cs, Chunk *pc);
///**
// * Simply change any STAR to PTR_TYPE and WORD to TYPE
// *
// * @param start points to the open paren
// */
void fix_fcn_def_params(Chunk *pc);
void flag_series(Chunk *start, Chunk *end, PcfFlags set_flags, PcfFlags clr_flags = {}, E_Scope nav = E_Scope::ALL);
/*
* Checks whether or not a given chunk has a parent cpp template,
* and if so returns the associated angle bracket nest level
* with respect to the root parent template; returns 0 if
* the chunk is not part of a template parameter list
*/
size_t get_cpp_template_angle_nest_level(Chunk *pc);
/**
* Parse off the types in the D template args, adds to cs
* returns the close_paren
*/
Chunk *get_d_template_types(ChunkStack &cs, Chunk *open_paren);
//! help function for mark_variable_definition...
bool go_on(Chunk *pc, Chunk *start);
bool is_ucase_str(const char *str, size_t len);
void make_type(Chunk *pc);
Chunk *set_paren_parent(Chunk *start, E_Token parent);
#endif /* COMBINE_TOOLS_H_INCLUDED */