browser.h
来自「用bcg库编写的java IDE 源码」· C头文件 代码 · 共 476 行
H
476 行
#include "editlibExp.h"
#define ACCESS(strMod) (strMod.Compare((LPCTSTR)"private") == 0)? IS_PRIVATE\
:(strMod.Compare((LPCTSTR)"protected") == 0)? IS_PROTECTED:\
(strMod.Compare((LPCTSTR)"public") == 0)? IS_PUBLIC: IS_PRIVATE
#define FIELD_DECL 1
#define METHOD_DECL 2
#define INTERFACE_DECL 3
#define CLASS_DECL 4
#define LOCAL_FIELD_DECL 5
#define BLOCK_DECL 6
#define PACKAGE_DECL 7
#define IMPORT_DECL 8
#define ENDBRACE_DECL 9
#define IS_PUBLIC 0x62
#define IS_PRIVATE 0x63
#define IS_PROTECTED 0x64
#define IS_CLASS 0x58
#define IS_FUNC 0x59
#define IS_VAR 0x60
#define IS_LOCAL 0x61
#define IS_BLOCK 0x17
#define IS_INTERFACE 0x65
#define IS_IMPORT 0x66
#define IS_PACKAGE 0x67
#define OPEN_BRACE 0x68
#define END_BRACE 0x69
#define ISBLOCK(x) ((x == BLOCK_DECL)||(x == CLASS_DECL)||\
(x == METHOD_DECL)||(x == INTERFACE_DECL))
//forward refrencing
class CBaseTextBuffer;
#define DECLARATION_SYSTEM_DLLEXPORT EDITPADC_CLASS
struct DECLARATION_SYSTEM_DLLEXPORT __DeclPoint;
struct DECLARATION_SYSTEM_DLLEXPORT __DeclBound;
class DECLARATION_SYSTEM_DLLEXPORT __CBaseDecl;
class DECLARATION_SYSTEM_DLLEXPORT CFieldDecl;
class DECLARATION_SYSTEM_DLLEXPORT CBlockDecl;
class DECLARATION_SYSTEM_DLLEXPORT CMethodDecl;
class DECLARATION_SYSTEM_DLLEXPORT CClassDecl;
class DECLARATION_SYSTEM_DLLEXPORT CinterfaceDecl;
class DECLARATION_SYSTEM_DLLEXPORT CTypeDecl;
class DECLARATION_SYSTEM_DLLEXPORT CDeclManager;
class DECLARATION_SYSTEM_DLLEXPORT CBaseParser;
//template<typename TYPE>
//class genStack;
#define DECL_LIST CList<__CBaseDecl*,__CBaseDecl*>
#define TYPE_LIST CList<CTypeDecl*,CTypeDecl*>
struct DECLARATION_SYSTEM_DLLEXPORT __DeclPoint
{
int m_nIndex;
int m_nLine;
__DeclPoint()
{
m_nIndex = -1;
m_nLine = -1;
}
__DeclPoint(int nIndex,int nLineIndex)
{
m_nIndex = nIndex;
m_nLine = nLineIndex;
}
void Set(int nIndex,int nLineIndex)
{
m_nIndex = nIndex;
m_nLine = nLineIndex;
}
~__DeclPoint()
{
}
};
struct DECLARATION_SYSTEM_DLLEXPORT __DeclBound
{
__DeclPoint m_ptTopLeft;
__DeclPoint m_ptBottomRight;
__DeclPoint m_ptBlockEnd;
int m_nStartIndex;
int m_nStartLine;
int m_nEndIndex;
int m_nEndLine;
__DeclBound();
__DeclBound(int nStartIndex,int nStartLine,int nEndIndex,int nEndLine);
bool operator>(__DeclBound dBound);
bool operator<(__DeclBound dBound);
bool operator>(__DeclPoint dPt);
bool operator<(__DeclPoint dPt);
void operator=(__DeclBound dBound);
bool operator==(__DeclBound declBound);
bool PointInDecl(__DeclPoint& declPt);
bool BoundInDecl(__DeclBound& declBound);
bool BoundInDecl(int nStartIndex,int nStartLine,int nEndIndex,int nEndLine);
bool PointInDeclBlock(__DeclPoint& declPt);
void Set(int nStartIndex,int nStartLine,int nEndIndex,int nEndLine);
int height(){return (m_nEndLine-m_nStartLine);}
int width(){return (m_nEndIndex-m_nStartIndex);}
};
class DECLARATION_SYSTEM_DLLEXPORT __CBaseDecl
{
protected:
__DeclBound* m_pBound;
CString m_strDeclName;
CStringList m_lstrModifiers;
CString m_strAccessModifier;
HTREEITEM m_hTreeLoc;
CBlockDecl* m_pParent;
int m_nDeclKind;
CString m_strType;
POSITION m_nPos;
POSITION m_nMainPos;
public:
__CBaseDecl(int nStartIndex,int nStartLine,int nEndIndex,int nEndLine);
__CBaseDecl();
virtual~__CBaseDecl();
virtual int getMemberCount(){return 0;}
CStringList* getModList(){return &m_lstrModifiers;}
__DeclBound* GetBound(){return m_pBound;}
bool update(__DeclBound& declBound,CDeclManager* pDeclMgr);
bool update(int,int,CDeclManager* pDeclMgr);
HTREEITEM getTreeLoc(){return m_hTreeLoc;}
void setTreeLoc(HTREEITEM hLoc){m_hTreeLoc = hLoc;}
CString getDeclName(){return m_strDeclName;}
void setDeclName(CString strName){m_strDeclName = strName;}
virtual bool IsNamed(CString);
void setType(CString strType){m_strType = strType;}
CString getType(){return m_strType;}
void setAccessModifier(CString strMod){m_strAccessModifier = strMod;}
CString getAccessModifier(){return m_strAccessModifier;}
void setParent(CBlockDecl* pParent){m_pParent = pParent;}
CBlockDecl* getParent(){return m_pParent;}
int getKind(){return m_nDeclKind;}
void setKind(int);
int getAccess(){return ACCESS(m_strAccessModifier);}
virtual void move(HTREEITEM,bool = false);
POSITION getPos(){return m_nPos;}
void setPos(POSITION p){m_nPos =p;}
POSITION getMainPos(){return m_nMainPos;}
void setMainPos(POSITION p){m_nMainPos = p;}
virtual POSITION skipBlock();
CDeclManager* m_pDeclMgr;
POSITION m_nStoragePos;
};
class DECLARATION_SYSTEM_DLLEXPORT CFieldDecl : public __CBaseDecl
{
protected:
POSITION m_nFieldPos;
struct _var
{
HTREEITEM m_hLoc;
CString m_strName;
_var(CString strName,HTREEITEM hLoc)
{
m_strName = strName;
m_hLoc = hLoc;
}
};
CArray<_var*,_var*> m_lVars;
public:
CFieldDecl();
CFieldDecl(int nStartIndex,int nStartLine,int nEndIndex,int nEndLine);
virtual~CFieldDecl();
void addVarName(CString strName,HTREEITEM hLoc);
//base member
virtual bool PointInDeclScope(__DeclPoint& declPt);
virtual void moveVariables(HTREEITEM hParent,BOOL bInit = FALSE);
void setKind(long nkind){m_nDeclKind = nkind;}
void setLoc(int i,HTREEITEM);
HTREEITEM getLoc(int i);
int getcount();
POSITION getFieldPos();
void setFieldPos(POSITION);
CString getVar(int);
//CString getType();
};
class DECLARATION_SYSTEM_DLLEXPORT CBlockDecl : public __CBaseDecl
{
protected:
CList<__CBaseDecl*,__CBaseDecl*> m_lMembers;
CList<CFieldDecl*,CFieldDecl*> m_lFields;
CList<CMethodDecl*,CMethodDecl*> m_lMethods;
TYPE_LIST m_lMemberTypes;
bool m_bBalance;
void addField(CFieldDecl*);
void addMethod(CMethodDecl*);
void removeField(POSITION);
void removeMethod(POSITION);
void addType(CTypeDecl*);
void removeType(POSITION);
public:
__CBaseDecl* m_pEndBrace;
CBlockDecl();
CBlockDecl(int nStartIndex,int nStartLine,int nEndIndex,int nEndLine);
virtual~CBlockDecl();
bool m_bExpanded;
virtual void RemoveMembers();
virtual POSITION AddMember(__CBaseDecl*);
virtual void RemoveMember(POSITION);
//base member
virtual bool PointInDeclBlock(__DeclPoint& declPt);
virtual int getMemberCount();
virtual DECL_LIST* getMembers();
virtual TYPE_LIST* getMemberTypeList(){return &m_lMemberTypes;}
virtual POSITION skipBlock();
__CBaseDecl* GetMemberAfter(__CBaseDecl*);
bool balance();
void SetEndBrace(__CBaseDecl*);
__CBaseDecl* GetEndBrace();
DECL_LIST* GetMemberList();
CTypeDecl* FindType(CStringList& lstrTypes,POSITION nStrPos);
CTypeDecl* FindFieldType(CStringList& lstrNames,POSITION nStrPos);
CFieldDecl* FindField(CStringList* lstrNames,POSITION nStrPos);
void RemoveMemsFrom(__CBaseDecl* pFrom);
virtual BOOL FindReturnType(CString&,CStringList&);
};
class DECLARATION_SYSTEM_DLLEXPORT CTypeDecl : public CBlockDecl
{
protected:
CString m_strQualifiedName;
POSITION m_nTypePos;
/*****clients*****/
//classes/interface that have this type as a super
TYPE_LIST m_lKnownSubTypes;
public:
CTypeDecl(int nStartIndex,int nStartLine,int nEndIndex,int nEndLine);
CTypeDecl();
virtual ~CTypeDecl();
//base member
virtual void PackSimilarMethods(CString strName,int,
CList<CMethodDecl*,CMethodDecl*>&lMethods);
CMethodDecl* FindMethodImpl(CList<CMethodDecl*,CMethodDecl*>&lMethods,
CStringList& lstrArgs);
CString getQualifiedName(){return m_strQualifiedName;}
void setQualifiedName(CString strName){m_strQualifiedName = strName;}
void setTypePos(POSITION pos){m_nTypePos = pos;}
POSITION getTypePos(){return m_nTypePos;}
virtual CString FindTypeOf(CStringList& lstrNames,POSITION nPos);
virtual bool FindMethod(CStringList&,CString& strReturn);
bool IsImplemented();
void AddSubType(CTypeDecl*);
void RemoveSubType(CTypeDecl*);
};
class DECLARATION_SYSTEM_DLLEXPORT CMethodDecl : public CBlockDecl
{
protected:
CString m_strParameterizedName;
CString m_strReturnType;
bool m_bImplemented;
POSITION m_nMethodPos;
public:
CStringList m_lstrInfo;
CMethodDecl();
CMethodDecl(int nStartIndex,int nStartLine,int nEndIndex,int nEndLine);
virtual ~CMethodDecl();
//base member
CString getParameterizedName();
void setParameterizedName(CString strPname);
void setReturnType(CString strType);
CString getReturnType();
virtual bool PointInDeclBlock(__DeclPoint& declPt);
void BuildInfo(CStringList&);
bool IsImplemented();
void SetImplemented(bool bImplemented);
POSITION getMethodPos();
void setMethodPos(POSITION pos);
virtual BOOL Match(CStringList&);
};
class DECLARATION_SYSTEM_DLLEXPORT CClassDecl : public CTypeDecl
{
public:
CClassDecl();
CClassDecl(int nStartIndex,int nStartLine,int nEndIndex,int nEndLine);
virtual ~CClassDecl();
};
class DECLARATION_SYSTEM_DLLEXPORT CInterfaceDecl : public CTypeDecl
{
CStringList m_lstrSuperinterfaces;
public:
CInterfaceDecl();
CInterfaceDecl(int nStartIndex,int nStartLine,int nEndIndex,int nEndLine);
virtual ~CInterfaceDecl();
};
static UINT m_nMainAppThreadID = NULL;
static const UINT m_msgMainThreadID = ::RegisterWindowMessage(_T("{2073A282-6F00-4902-9B6F-F0274A487433}"));
static const UINT m_msgAddToProjView = ::RegisterWindowMessage(_T("{F5346187-5123-4a20-ADE4-09B22AA0DE81}"));
static const UINT m_msgMoveBlockInView = ::RegisterWindowMessage(_T("{2E96DA42-FB40-4fc2-90AF-38A8C2C9C168}"));
static const UINT m_msgRemoveFromProjView = ::RegisterWindowMessage(_T("{D4094E7C-89D6-4cb8-A186-A2CFFE5F466C}"));
class DECLARATION_SYSTEM_DLLEXPORT CDeclManager : public CWinThread
{
DECLARE_DYNCREATE(CDeclManager)
protected:
CList<__CBaseDecl*,__CBaseDecl*> m_lDecls;
CList<CBlockDecl*,CBlockDecl*> m_lBlockDecls;
CList<CTypeDecl*,CTypeDecl*> m_lTypeDecls;
CBaseTextBuffer* m_pTextBuffer;
POSITION m_nLastAddedPos;
CBaseParser* m_pParser;
CString m_strPathName;
public:
bool m_bInitParse;
//***************base functional***************************//
//CDeclManager(CBaseTextBuffer*);
CDeclManager();
virtual ~CDeclManager();
__CBaseDecl* FindDecl(__DeclBound nBound);
__CBaseDecl* FindBlock(__DeclPoint&);
void UpdateDeclsOnInsert(__DeclBound editContext);
void UpdateDeclsOnDelete(__DeclBound& nBound);
void UpdateCoordsOnInsert(POSITION nPos,__DeclBound& nBound);
void UpdateCoordsOnDelete(POSITION nPos,__DeclBound& nBound);
//void UpdateCoordsOnInsertExt(DECL_LIST*,__DeclBound& nBound);
//void UpdateCoordsOnDeleteExt(DECL_LIST*,__DeclBound& nBound);
POSITION AddDecl(__CBaseDecl* pDecl);
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CDeclManager)
public:
virtual BOOL InitInstance();
virtual int ExitInstance();
//}}AFX_VIRTUAL
POSITION PointInDecl(int nIndex,int nLineIndex,POSITION startPos);
DECL_LIST* getDeclList(){return &m_lDecls;}
CBlockDecl* getParentBlock(__DeclPoint&);
void RemoveDecl(POSITION);
void updateBlock(__CBaseDecl* pDecl);
virtual void validateScope(POSITION nStartPos);
bool PointInBlockDecl(int nIndex,int nLineIndex,BOOL &bRoot);
POSITION addBlock(CBlockDecl* pDecl);
void removeBlock(POSITION nPos);
void addNode(CBlockDecl* pDcl);
void x_expand(int nLine,int nKeyIndex);
void x_colapse(int nLine,int nKeyIndex);
BOOL validDoc();
void removeNode(CBlockDecl*);
CBaseTextBuffer* getTextBuffer();
void setTextBuffer(CBaseTextBuffer* pBuffer);
bool m_bValidDoc;
virtual bool canHaveRelationship(__CBaseDecl* pWouldBeChild,__CBaseDecl* pWouldBeParent);
TYPE_LIST* getTypeList(){return &m_lTypeDecls;}
POSITION AddType(CTypeDecl*);
void RemoveType(POSITION);
CString GetPathName(){return m_strPathName;}
void SetPathName(CString strPathName){m_strPathName = strPathName;}
__CBaseDecl* GetItem(POSITION);
void DeleteAndReParse(__CBaseDecl*);
void DeleteAndReParse(__CBaseDecl*,CBlockDecl*);
void OnMainThreadId(UINT);
virtual CTypeDecl* FindType(CStringList&,CBlockDecl* =NULL);
DECLARE_MESSAGE_MAP()
};
class DECLARATION_SYSTEM_DLLEXPORT CBaseParser
{
public:
CBaseParser();
virtual ~CBaseParser();
virtual void dynamicParse(int,int,CBlockDecl* = NULL);
virtual void UpdateBlock(CBlockDecl*);
};
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?