📄 stringline.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 + -