📄 cfilter.h
字号:
#ifndef __CFILTER_H#define __CFILTER_H#include "CExpander.h"class CFilter : public CCharacterSource{ friend class CFilterChain; protected: CCharacterSource* parent;public: CFilter() : parent(NULL) {} void setparent(CCharacterSource* p) { parent = p; } virtual ~CFilter() {};};class vanilla : public CFilter{public: vanilla() {} virtual ~vanilla() {} virtual int getch() { return parent->getch(); }};class CFilterChain{ CFilter* first; CFilter* front; public: CFilterChain() : first(NULL), front(NULL) {}; ~CFilterChain() { CFilter* p = front; while (p != first) { CFilter* pnext = p; p = (CFilter*)(p->parent); delete pnext; } delete first; } int getch() { return front->getch(); } void addfilter(CFilter* p) { if (first == NULL) { first = front = p; } else { p->setparent(front); front = p; } } void setsource(CCharacterSource* p) { if (first == NULL) first = front = new vanilla; first->setparent(p); }};class stripcr : public CFilter{public: stripcr() {} virtual ~stripcr() {} virtual int getch() { int ch; do { ch = parent->getch(); } while (ch == 13); return ch; }};class unindent : public CFilter{ char lc;public: unindent() : lc(0) {} virtual ~unindent() {} virtual int getch() { int ch; if (lc == 10) { while ((ch = parent->getch()) == ' '); } else ch = parent->getch(); lc = ch; return ch; }};class repara : public CFilter{ int tch;public: repara() : tch(0) {} virtual ~repara() {} virtual int getch() { int ch = parent->getch(); if (ch == 10) { if (tch == 10) { return ch; } else { tch = ch; return ' '; } } tch = ch; return ch; }};class indenter : public CFilter{ int amnt; int indent;public: indenter(int _a=5) : amnt(_a), indent(0) {} virtual ~indenter() {} virtual int getch() { if (indent > 0) { indent--; return ' '; } int ch = parent->getch(); if (ch == 10) { indent = amnt; } return ch; }};class dblspce : public CFilter{ bool lastlf;public: dblspce() : lastlf(false) {} virtual ~dblspce() {} virtual int getch() { if (lastlf) { lastlf = false; return 10; } int ch = parent->getch(); lastlf = (ch == 10); return ch; }};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -