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

152 lines
6.5 KiB
C++

// XTPSyntaxEditLexClassSubObjDef.h
//
// This file is a part of the XTREME TOOLKIT PRO MFC class library.
// (c)1998-2012 Codejock Software, All Rights Reserved.
//
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
// CONSENT OF CODEJOCK SOFTWARE.
//
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
// IN THE XTREME SYNTAX EDIT LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
// SINGLE COMPUTER.
//
// CONTACT INFORMATION:
// support@codejock.com
// http://www.codejock.com
//
//////////////////////////////////////////////////////////////////////
//{{AFX_CODEJOCK_PRIVATE
#if !defined(__XTPSYNTAXEDITLEXCLASSSUBOBJDEF_H__)
#define __XTPSYNTAXEDITLEXCLASSSUBOBJDEF_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#pragma warning(disable : 4097)
namespace XTPSyntaxEditLexAnalyser
{
//{{AFX_CODEJOCK_PRIVATE
//===========================================================================
#define XTP_EDIT_LEX_CLASS_OBJ_MEMBER_NAME(_Name, _str) inline LPCTSTR _Name() { return _str;}
//===========================================================================
#define XTP_EDIT_LEX_CLASS_OBJ_MEMBER(id, _member) public: \
TBase::_Type##id _member; \
protected: \
virtual void SetSubMember##id() { \
m_p##id = &_member; \
}
//===========================================================================
#define XTP_EDIT_DEFINE_LEX_CLASS_OBJ_BASE_N1(subN1) \
CXTPSyntaxEditLexObj_SpecCollT<CXTPSyntaxEditLexVariantPtrArrayExAutomatT<subN1> >
#define XTP_EDIT_DEFINE_LEX_CLASS_OBJ_BASE_N2(subN1, subN2) \
CXTPSyntaxEditLexObj_SpecCollT<CXTPSyntaxEditLexVariantPtrArrayExAutomatT<subN1>,\
CXTPSyntaxEditLexVariantPtrArrayExAutomatT<subN2> >
#define XTP_EDIT_DEFINE_LEX_CLASS_OBJ_BASE_N3(subN1, subN2, subN3) \
CXTPSyntaxEditLexObj_SpecCollT<CXTPSyntaxEditLexVariantPtrArrayExAutomatT<subN1>, \
CXTPSyntaxEditLexVariantPtrArrayExAutomatT<subN2>, \
CXTPSyntaxEditLexVariantPtrArrayExAutomatT<subN3> >
//===========================================================================
#define XTP_EDIT_DEFINE_LEX_CLASS_OBJ(objClass, DEF_BASE_Nx) \
class objClass: public DEF_BASE_Nx \
{ \
public: \
typedef DEF_BASE_Nx TBase; \
objClass() { \
SetSubMembers(); \
}; \
virtual ~objClass() {};
#define XTP_EDIT_DEFINE_LEX_CLASS_OBJ_N1(objClass, subN1) \
XTP_EDIT_DEFINE_LEX_CLASS_OBJ(objClass, \
XTP_EDIT_DEFINE_LEX_CLASS_OBJ_BASE_N1(subN1) )
#define XTP_EDIT_DEFINE_LEX_CLASS_OBJ_N2(objClass, subN1, subN2) \
XTP_EDIT_DEFINE_LEX_CLASS_OBJ(objClass, \
XTP_EDIT_DEFINE_LEX_CLASS_OBJ_BASE_N2(subN1, subN2) )
#define XTP_EDIT_DEFINE_LEX_CLASS_OBJ_N3(objClass, subN1, subN2, subN3) \
XTP_EDIT_DEFINE_LEX_CLASS_OBJ(objClass, \
XTP_EDIT_DEFINE_LEX_CLASS_OBJ_BASE_N3(subN1, subN2, subN3) )
//===========================================================================
#define XTP_EDIT_DEFINE_LEX_CLASS_OBJ_END };
////////////////////////////////////////////////////////////////////////////
//= Prevoius =============================================================
XTP_EDIT_LEX_CLASS_OBJ_MEMBER_NAME(FnName_previous_class, _T("previous:class"))
XTP_EDIT_LEX_CLASS_OBJ_MEMBER_NAME(FnName_previous_tag, _T("previous:tag"))
XTP_EDIT_LEX_CLASS_OBJ_MEMBER_NAME(FnName_previous_tag_separators, _T("previous:tag:separators"))
XTP_EDIT_DEFINE_LEX_CLASS_OBJ_N3(CXTPSyntaxEditLexObj_Previous, FnName_previous_class,
FnName_previous_tag, FnName_previous_tag_separators)
XTP_EDIT_LEX_CLASS_OBJ_MEMBER(0, m_class)
XTP_EDIT_LEX_CLASS_OBJ_MEMBER(1, m_tag)
XTP_EDIT_LEX_CLASS_OBJ_MEMBER(2, m_tag_separators)
XTP_EDIT_DEFINE_LEX_CLASS_OBJ_END
//= Start ================================================================
XTP_EDIT_LEX_CLASS_OBJ_MEMBER_NAME(FnName_start_class, _T("start:class"))
XTP_EDIT_LEX_CLASS_OBJ_MEMBER_NAME(FnName_start_tag, _T("start:tag"))
XTP_EDIT_DEFINE_LEX_CLASS_OBJ_N2(CXTPSyntaxEditLexObj_Start, FnName_start_class, FnName_start_tag)
XTP_EDIT_LEX_CLASS_OBJ_MEMBER(0, m_class)
XTP_EDIT_LEX_CLASS_OBJ_MEMBER(1, m_tag)
XTP_EDIT_DEFINE_LEX_CLASS_OBJ_END
//= End ================================================================
XTP_EDIT_LEX_CLASS_OBJ_MEMBER_NAME(FnName_end_class, _T("end:class"))
XTP_EDIT_LEX_CLASS_OBJ_MEMBER_NAME(FnName_end_tag, _T("end:tag"))
XTP_EDIT_LEX_CLASS_OBJ_MEMBER_NAME(FnName_end_separators, _T("end:separators"))
XTP_EDIT_DEFINE_LEX_CLASS_OBJ_N3(CXTPSyntaxEditLexObj_End, FnName_end_class, FnName_end_tag, FnName_end_separators)
XTP_EDIT_LEX_CLASS_OBJ_MEMBER(0, m_class)
XTP_EDIT_LEX_CLASS_OBJ_MEMBER(1, m_tag)
XTP_EDIT_LEX_CLASS_OBJ_MEMBER(2, m_separators)
XTP_EDIT_DEFINE_LEX_CLASS_OBJ_END
//= Token ================================================================
XTP_EDIT_LEX_CLASS_OBJ_MEMBER_NAME(FnName_tokeFnName_tag, _T("token:tag"))
XTP_EDIT_LEX_CLASS_OBJ_MEMBER_NAME(FnName_tokeFnName_start_separators,_T("token:start:separators"))
XTP_EDIT_LEX_CLASS_OBJ_MEMBER_NAME(FnName_tokeFnName_end_separators, _T("token:end:separators"))
XTP_EDIT_DEFINE_LEX_CLASS_OBJ_N3(CXTPSyntaxEditLexObj_Token, FnName_tokeFnName_tag,
FnName_tokeFnName_start_separators, FnName_tokeFnName_end_separators)
XTP_EDIT_LEX_CLASS_OBJ_MEMBER(0, m_tag)
XTP_EDIT_LEX_CLASS_OBJ_MEMBER(1, m_start_separators)
XTP_EDIT_LEX_CLASS_OBJ_MEMBER(2, m_end_separators)
XTP_EDIT_DEFINE_LEX_CLASS_OBJ_END
//= Skip ================================================================
XTP_EDIT_LEX_CLASS_OBJ_MEMBER_NAME(FnName_skip_tag, _T("skip:tag"))
XTP_EDIT_DEFINE_LEX_CLASS_OBJ_N1(CXTPSyntaxEditLexObj_Skip, FnName_skip_tag)
XTP_EDIT_LEX_CLASS_OBJ_MEMBER(0, m_tag)
XTP_EDIT_DEFINE_LEX_CLASS_OBJ_END
//= active tags (INTERNAL OBJECT) ================================================================
XTP_EDIT_LEX_CLASS_OBJ_MEMBER_NAME(FnName_active_tags, _T("_active_tags"))
class CXTPSyntaxEditLexObj_ActiveTags : public CXTPSyntaxEditLexVariantPtrArrayExAutomatT<FnName_active_tags>
{
typedef CXTPSyntaxEditLexVariantPtrArrayExT<FnName_active_tags> TBase;
public:
virtual ~CXTPSyntaxEditLexObj_ActiveTags(){};
};
//}}AFX_CODEJOCK_PRIVATE
////////////////////////////////////////////////////////////////////////////
}
////////////////////////////////////////////////////////////////////////////
#endif // !defined(__XTPSYNTAXEDITLEXCLASSSUBOBJDEF_H__)