⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parse.h

📁 用Qt4编写的linux IDE开发环境
💻 H
字号:
/******************************************************************************************************** * PROGRAM	  :  * DATE - TIME  : lundi 10 avril 2006 - 22:28 * AUTHOR	   : IComplete Team and Anacr0x ( fred.julian at gmail.com ) * FILENAME	 :  * LICENSE	  : GPL * COMMENTARY   : Modified file (with qt) of the icomplete project ********************************************************************************************************/#ifndef __PARSE_H__#define __PARSE_H__#include <QString>#include <QFile>#include "readtags.h"#include "../InitCompletion.h"typedef enum{    /* for now, these options are exclusive     * but define them as a bitfield for possible     * future improvements */    ParseError = 0x00,    AccessPointer = 0x01,    AccessMembers = 0x02,    AccessStatic = 0x04,    AccessGlobal = 0x08,    AccessInFunction = 0x10} Access;struct Expression{	Access access;	QString className;	QString function;	QString writing;	QString text;};struct Scope{	QString scope;		// if the cursor is in a function Foo::bar(), store Foo as the scope	QString localdef;		// stores the type of a local definition or "" if none found};class Parse{	QString ctagsCmdPath;	QString tagsFilePath;	QString parsedFilePath;	QString smallTagsFilePath;public:	Parse (const QString &CtagsCmdPath, const QString &TagsFilePath, const QString &ParsedFilePath, const QString &SmallTagsFilePath ) : ctagsCmdPath(CtagsCmdPath), tagsFilePath(TagsFilePath), parsedFilePath(ParsedFilePath), smallTagsFilePath(SmallTagsFilePath) {};	/*	* for a given expr="str" and a string="std::string *str = new std::string("test");"	* return the type qualifier "std::string"	*/	QString extractTypeQualifier(const QString &string, const QString &expr);	/*	* For a given expr "var->xy" or "var::" return `var'	* and the AccessModifier (static, member,...)	*/	Expression parseExpression(QString expr, Scope * scope, bool showAllResults = false);	/* fills the passed *exp pointer with information about the current expression	* "QWidget w; w.getRect()." will return exp.className=QRect and exp.function=getRect	*/	bool getTypeOfExpression(const QString &expr, Expression * exp, Scope * scope);	/*	* prettified tags entry look like these:	*  rect\nQRect r;	*  setRect()\nvoid setRect (QRect &rect);	*/	static Tag prettifyTag(const tagEntry * entry);	/*	* extracts the scope at the end of a given code `expr'	* and save the line of a local variable definition	* Example:	*	* namespace Test {	*   void MyclassName::function(int var)	*   {	* 	* If expr is the above code and ident is 'var', return:	* scope = "Test::MyclassName"	* localdef = "int"	*/	bool getScopeAndLocals(Scope * sc, const QString &expr, const QString &ident);	/*	* for a given expression "myvar->getX().toFloat"	* the function should just return "myvar"	* and move the **expr pointer after the ident	* returns NULL, if no identifier is found, and then the value of expr is undefined	*/	char* scanForIdent(const char **expr);	/* if the current identfier is the name of a function */	bool scanForFuncdef(const QString &expr);	/* for ident=getRect and className=QWidget return QRect	* @param token_is_function = true, if the token is a function or false if a variable	* caller must free() the returned string */	QString getTypeOfToken(const QString &ident, const QString &className, Scope * scope, bool token_is_function);};#endif				/* __PARSE_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -