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

📄 textfile.h

📁 功能较全面的反汇编器:反汇编器ht-2.0.15.tar.gz
💻 H
字号:
/*  *	HT Editor *	textfile.h * *	Copyright (C) 1999-2002 Stefan Weyergraf * *	This program is free software; you can redistribute it and/or modify *	it under the terms of the GNU General Public License version 2 as *	published by the Free Software Foundation. * *	This program is distributed in the hope that it will be useful, *	but WITHOUT ANY WARRANTY; without even the implied warranty of *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *	GNU General Public License for more details. * *	You should have received a copy of the GNU General Public License *	along with this program; if not, write to the Free Software *	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */#ifndef __TEXTFILE_H__#define __TEXTFILE_H__#include "data.h"#include "stream.h"#include "syntax.h"/* *	CLASS ht_textfile */ class ht_textfile: public FileLayer {public:			ht_textfile(File *file, bool own_file);/* new */	virtual	bool convert_ofs2line(FileOfs o, uint *line, uint *pofs) const =0;	virtual	bool convert_line2ofs(uint line, uint pofs, FileOfs *o) const =0;	virtual	void delete_lines(uint line, uint count)=0;	virtual	void delete_chars(uint line, uint ofs, uint count)=0;	virtual	bool get_char(uint line, char *ch, uint pos)=0;	virtual	bool getline(uint line, uint pofs, void *buf, uint buflen, uint *retlen, lexer_state *state)=0;	virtual	uint getlinelength(uint line) const =0;	virtual	void insert_lines(uint before, uint count, void **line_ends = NULL, int *lineendlens = NULL)=0;	virtual	void insert_chars(uint line, uint ofs, void *chars, uint len)=0;	virtual	bool has_line(uint line)=0;	virtual	uint linecount() const=0;	virtual	void set_layered_assume(File *streamfile, bool ownNewLayered, bool changes_applied)=0;	virtual	void set_lexer(ht_syntax_lexer *lexer)=0;};/* *	CLASS ht_layer_textfile */ class ht_layer_textfile: public ht_textfile {public:			ht_layer_textfile(ht_textfile *textfile, bool own_textfile);/* overwritten */	virtual	bool convert_ofs2line(FileOfs o, uint *line, uint *pofs) const;	virtual	bool convert_line2ofs(uint line, uint pofs, FileOfs *o) const;	virtual	void delete_lines(uint line, uint count);	virtual	void delete_chars(uint line, uint ofs, uint count);	virtual	bool get_char(uint line, char *ch, uint pos);	virtual	bool getline(uint line, uint pofs, void *buf, uint buflen, uint *retlen, lexer_state *state);	virtual	uint getlinelength(uint line) const;	virtual	void insert_lines(uint before, uint count, void **line_ends, int *lineendlens);	virtual	void insert_chars(uint line, uint ofs, void *chars, uint len);	virtual	bool has_line(uint line);	virtual	uint linecount() const;	virtual	void set_layered_assume(File *streamfile, bool ownNewLayered, bool changes_applied);	virtual	void set_lexer(ht_syntax_lexer *lexer);};/* *	CLASS ht_ltextfile_line */class ht_ltextfile_line: public Object {public:	virtual ~ht_ltextfile_line();	lexer_state instate;	struct {		FileOfs ofs;		uint len;	} on_disk;	bool is_in_memory;	struct {		char *data;		uint len;	} in_memory;	FileOfs nofs;	byte lineendlen;	byte lineend[2];};/* *	CLASS ht_ltextfile */ class ht_ltextfile: public ht_textfile {protected:	FileOfs ofs;	Array *lines;	Array *orig_lines;	ht_syntax_lexer *lexer;	uint first_parse_dirty_line;	mutable uint first_nofs_dirty_line;	bool dirty;			void cache_invd();			void cache_flush();			void dirty_nofs(uint line);			void dirty_parse(uint line);			uint find_linelen_forwd(byte *buf, uint maxbuflen, FileOfs ofs, int *le_len);	virtual	ht_ltextfile_line *fetch_line(uint line) const;			ht_ltextfile_line *fetch_line_nofs_ok(uint line) const;			ht_ltextfile_line *fetch_line_into_memory(uint line);			uint getlinelength_i(ht_ltextfile_line *e) const;			bool is_dirty_nofs(uint line) const;			bool is_dirty_parse(uint line) const;			byte *match_lineend_forwd(byte *buf, uint buflen, int *le_len);			lexer_state next_instate(uint line);			FileOfs next_nofs(ht_ltextfile_line *l) const;			void split_line(uint a, uint pos, void *line_end, int line_end_len);			void update_nofs(uint line) const;			void update_parse(uint line);public:			void reread();			ht_ltextfile(File *file, bool own_file, ht_syntax_lexer *lexer);	virtual		~ht_ltextfile();/* overwritten (streamfile) */	virtual	FileOfs	copyAllTo(Stream *stream);	virtual	void	extend(FileOfs newsize);	virtual	FileOfs	getSize() const;	virtual	void	pstat(pstat_t &s) const;	virtual	uint	read(void *buf, uint size);	virtual	void	setLayered(File *newLayered, bool ownNewLayered);	virtual	void	seek(FileOfs offset);	virtual	FileOfs tell() const;	virtual	void	truncate(FileOfs newsize);	virtual int	vcntl(uint cmd, va_list vargs);	virtual	uint	write(const void *buf, uint size);/* overwritten (textfile) */	virtual	bool convert_ofs2line(FileOfs o, uint *line, uint *pofs) const;	virtual	bool convert_line2ofs(uint line, uint pofs, FileOfs *o) const;	virtual	void delete_lines(uint line, uint count);	virtual	void delete_chars(uint line, uint ofs, uint count);	virtual	bool get_char(uint line, char *ch, uint pos);	virtual	bool getline(uint line, uint pofs, void *buf, uint buflen, uint *retlen, lexer_state *state);	virtual	uint getlinelength(uint line) const;	virtual	void insert_lines(uint before, uint count, void **line_ends, int *lineendlens);	virtual	void insert_chars(uint line, uint ofs, void *chars, uint len);	virtual	bool has_line(uint line);	virtual	uint linecount() const;	virtual	void set_layered_assume(File *streamfile, bool ownNewLayered, bool changes_applied);	virtual	void set_lexer(ht_syntax_lexer *lexer);};#endif /* __TEXTFILE_H__ */

⌨️ 快捷键说明

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