work save
This commit is contained in:
parent
0b2fd71df6
commit
31ace6b981
|
@ -1,6 +1,7 @@
|
||||||
#ifndef PARSER_UTILS_H
|
#ifndef PARSER_UTILS_H
|
||||||
#define PARSER_UTILS_H
|
#define PARSER_UTILS_H
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
#include <QSet>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
// preprocess/ macro define
|
// preprocess/ macro define
|
||||||
struct Define {
|
struct Define {
|
||||||
|
@ -48,4 +49,69 @@ enum class StatementKind {
|
||||||
skAlias
|
skAlias
|
||||||
};
|
};
|
||||||
|
|
||||||
|
using StatementKindSet = QSet<StatementKind>;
|
||||||
|
|
||||||
|
enum class StatementScope {
|
||||||
|
ssGlobal,
|
||||||
|
ssLocal,
|
||||||
|
ssClassLocal
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class StatementClassScope {
|
||||||
|
scsNone,
|
||||||
|
scsPrivate,
|
||||||
|
scsProtected,
|
||||||
|
scsPublic
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class MemberOperatorType {
|
||||||
|
otArrow,
|
||||||
|
otDot,
|
||||||
|
otDColon,
|
||||||
|
otOther
|
||||||
|
};
|
||||||
|
|
||||||
|
struct RemovedStatement{
|
||||||
|
QString type; // type "int"
|
||||||
|
QString command; // identifier/name of statement "foo"
|
||||||
|
int definitionLine; // definition
|
||||||
|
QString definitionFileName; // definition
|
||||||
|
QString fullName; // fullname(including class and namespace)
|
||||||
|
QString noNameArgs; // Args without name
|
||||||
|
};
|
||||||
|
|
||||||
|
using PRemovedStatement = std::shared_ptr<RemovedStatement>;
|
||||||
|
|
||||||
|
struct Statement;
|
||||||
|
using PStatement = std::shared_ptr<Statement>;
|
||||||
|
struct Statement {
|
||||||
|
std::weak_ptr<Statement> parentScope; // parent class/struct/namespace scope, don't use auto pointer to prevent circular reference
|
||||||
|
QString hintText; // text to force display when using PrettyPrintStatement
|
||||||
|
QString type; // type "int"
|
||||||
|
QString command; // identifier/name of statement "foo"
|
||||||
|
QString args; // args "(int a,float b)"
|
||||||
|
QStringList argList;
|
||||||
|
QString value; // Used for macro defines/typedef, "100" in "#defin COUNT 100"
|
||||||
|
StatementKind kind; // kind of statement class/variable/function/etc
|
||||||
|
QList<std::weak_ptr<Statement>> inheritanceList; // list of statements this one inherits from, can be nil
|
||||||
|
StatementScope scope; // global/local/classlocal
|
||||||
|
StatementClassScope classScope; // protected/private/public
|
||||||
|
bool hasDefinition; // definiton line/filename is valid
|
||||||
|
int line; // declaration
|
||||||
|
int definitionLine; // definition
|
||||||
|
QString fileName; // declaration
|
||||||
|
QString definitionFileName: AnsiString; // definition
|
||||||
|
_InProject: boolean; // statement in project
|
||||||
|
_InSystemHeader: boolean; // statement in system header (#include <>)
|
||||||
|
_Children: TList; // Children Statement to speedup search
|
||||||
|
_ChildrenIndex: TDevStringHash; // children statements index to speedup search
|
||||||
|
_Friends: TStringHash; // friend class / functions
|
||||||
|
_Static: boolean; // static function / variable
|
||||||
|
_Inherited: boolean; // inherted member;
|
||||||
|
_FullName: AnsiString; // fullname(including class and namespace)
|
||||||
|
_Usings: TStringList;
|
||||||
|
_Node: Pointer; // the Node TStatementList used to save this statement
|
||||||
|
_UsageCount : integer; //Usage Count, used by TCodeCompletion
|
||||||
|
_FreqTop: integer; // Usage Count Rank, used by TCodeCompletion
|
||||||
|
_NoNameArgs: AnsiString; // Args without name
|
||||||
#endif // PARSER_UTILS_H
|
#endif // PARSER_UTILS_H
|
||||||
|
|
Loading…
Reference in New Issue