📄 type.h
字号:
#ifndef __CLASS_H__
#define __CLASS_H__
#pragma once
#include "Identifier.h"
#include "CPTypeDef.h"
#include "Variable.h"
#include "ExFunction.h"
#include "Enum.h"
class CType;
typedef CList<CType*, CType*> CTypeList;
struct REWRITEFUNCTION
{
CString name;
CExFunctionList list;
};
typedef CList<REWRITEFUNCTION*, REWRITEFUNCTION*> CRewriteFunctionList;
#define TYPE_CLASS 0x0001 //普通类
#define TYPE_INTERFACE 0x0002 //接口
#define TYPE_STRUCT 0x0003 //结构
#define TYPE_UNION 0x0004 //联合
//类型对象,包括:
//普通类,由关键字class定义
//接口,由关键字interface定义
//结构,由关键字struct定义
//联合,由关键字union定义
class CType : public CIdentifier
{
public:
//构造函数
CType(CPage* ipPage=NULL, int iLine=1, int iColumn=1);
//析构函数
virtual ~CType();
//解析一个类型的代码
static CType* ParseType(CTokenList& ioList, POSITION& ioPos, UINT iType, UINT iAccess=TRIM_PRIVATE);
//解析类声明代码
BOOL ParseDeclare(CTokenList& ioList, POSITION& ioPos);
//解析类体代码
void ParseBody(CTokenList& ioList, POSITION& ioPos);
//解析枚举代码
static CEnum* ParseEnum(CTokenList& ioList, POSITION& ioPos);
//解析类别名
static void ParseTypedef(CTokenList& ioList, POSITION& ioPos);
//解析类成员
void ParseMember(CTokenList& ioList, POSITION& ioPos);
//设置访问标识符
void SetAccessTrim(UINT iAccess){mAccessTrim=iAccess;};
//输出信息到代码文档
void OutputSymbols(LPCTSTR iDocDir);
public:
//设置类型的类别(类,接口,结构或联合)
void SetType(BOOL iType) {mType=iType;};
//判断是否类或接口
BOOL IsClassOrInterface() const
{return (mType==TYPE_CLASS || mType==TYPE_INTERFACE);};
//判断是否结构或联合
BOOL IsStructOrUnion() const
{return (mType==TYPE_STRUCT || mType==TYPE_UNION);};
private:
CStringPtrList mBaseClassList;
UINT mAccessTrim; //访问修饰
CVariableList mVariableList; //成员变量列表
CExFunctionList mFunctionList; //成员函数列表
UINT mType; //指普通类/结构/联合/接口
UNIT_TEST(CType)
};
DECLARE_TEST_DUMP(CType)
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -