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

📄 stringline.h

📁 AliEditor_Source code
💻 H
字号:
#ifndef LINES_STRING_H
#define LINES_STRING_H

enum TagType {
		EMPTY, COMMENT, COMMA, SCRIPTVER, MODULE, LBRACKET, RBRACKET, 
		TYPE, VERSION, DESCRIPTION, SIGNATURE, SUBMODELS, CODEFILES, DOCFILES,
		MACRO, RULES, EQUALSIGN, FIELDEXP, UNKOWN
};

typedef struct tagQueue
{
	struct tagQueue *prev;
	struct tagQueue *next;
}
Queue;

typedef struct _LineString
{
	Queue lineque;
	int lineseq;
	TagType tag;
	CString *plinestr;
}
LineString;

enum DataType {
		DIGIT, STRING, ARRAY, NOFIND
};

enum NodeType {
		TP_NODE, SAT_NODE, PROG_NODE, DEF_PROG_NODE
};

typedef struct _NodeField
{
	char name[256];
	DataType tag;
	int field_mask;
	int field_pos;
	int bits_width;
	int bits_length;
	int bits_offset;
	int bytes_offset;
}
NodeField;

#undef _MY_DEBUG

class CStringLines{

public:
	CStringLines();
	~CStringLines();

private:
	NodeField **m_tp_node;
	NodeField **m_sat_node;
	NodeField **m_prog_node;

	NodeField **m_tp_full_node;
	NodeField **m_sat_full_node;
	NodeField **m_prog_full_node;
	NodeField **m_def_prog_full_node;


#ifdef _MY_DEBUG

	FILE *debugfd;
	FILE *scriptfd;
#endif

	int m_tp_field_count;
	int m_sat_field_count;
	int m_prog_field_count;

	int m_tp_field_full_count;
	int m_sat_field_full_count;
	int m_prog_field_full_count;
	int m_def_prog_field_full_count;
	
public:
	
	LineString* ReadCdlFile(CString path);
	BOOL ParseLineTag(LineString *pLineStr);

	int FindNextExpression(CString linestr);

	CString FilterLineComment(CString linestr);
	CString FilterFileComment(CString filestr);

	CString PaserMacroFromFile(CString pathname, BOOL bMaskDef = TRUE);
	CString GetMacroFromFile(CString pathname, BOOL bMaskDef = TRUE);

	CString FilterBackChar(CString linestr, char ch);
	CString FilterFrontChar(CString linestr, char ch);
	
	BOOL IsValidExpress(CString strline);
	BOOL IsKeyWord(CString linestr, char *keyword);
	BOOL IsFieldLine(LineString *pLineStr);
	
	LineString* CreateCdlTemplateFile();
	int FineNextPostionByKey(CString strline, char key);
	BOOL WriteCdlFile(LineString *pCdlLine, CString path);
	

	CString CookMacro(CString linestr);
	CString CookDefFiled(CString macroval);

	int FineNewMacroPos(CString strline);
	CString Transfer(CString sStringContent);

	LineString*NextLineString(LineString *pLinestr);
	LineString*PrevLineString(LineString *pLinestr);

	
	BOOL DestroyAllLine(LineString *pCdlLine);
	LineString *DeleteLineStr(LineString *pCdlLine, int lines);
	int FindNewPosition(LineString *pCdlLine, enum TagType tag);
	
	int GetLineByTag(LineString *pCdlLine, enum TagType tag);
	LineString *GetExpressionByLine(LineString *pCdlLine, int lines);
	LineString *GetLineExpression(LineString *pCdlLine, enum TagType tag);

	
	LineString *DeleteExpressionByTag(LineString *pCdlLine, int lines, enum TagType tag);
	LineString *ReplaceExpressionByTag(LineString *pCdlLine, CString keybuf, enum TagType tag);
	LineString *CreateNewLine(LineString *pCdlLine, int lines, enum TagType tag, CString linestr);

	int GetNodeFieldCount(const char* nodesz, const char* buf);
	CString FilterFrontValidChar(CString linestr);

	NodeField **AdjustNodeField(NodeField **pNode);
	NodeField** ParseNodeField(const char* nodesz, const char* buf);
	void FreeNodeFieldInfo(NodeField **pNode);
	
	int FindSpacePos(CString linestr);
	NodeField *ParseNodeFieldLine(CString linestr);
	long GetDigitValue(CString str);

	NodeField *ParseNodeFieldLine1(CString linestr);

	NodeField** ParseNodeField(enum NodeType type, const char* buf);
	int GetNodeFieldCount(enum NodeType type, const char *buf);

	NodeField**GetNodeFieldInfo(enum NodeType type, BOOL bFull = FALSE);

	void FreeNodeFieldInfo(enum NodeType type);
	int GetNodeFieldCount(enum NodeType type);

	int GetUnMaskFieldCount(enum NodeType type);
	int GetNodeSize(enum NodeType type);

	NodeField** ReadOneNodeFieldFromScript(FILE *fd, const char*nodesz);
	BOOL ReadNodeFieldFromScript(FILE *fd);
	BOOL WriteOneNodeFieldToScript(FILE *fd, NodeField**pField);
	BOOL WriteNodeFieldToScript(FILE *fd);
};

#endif

⌨️ 快捷键说明

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