📄 astyle.h
字号:
sourceStyle( STYLE_C ),
indentString( " " ),
indentLength( 4 ),
minConditionalIndent( 8 ),
maxInStatementIndent( 40 ),
eolString( "\n" ),
waitingBeautifierStack( NULL ),
activeBeautifierStack( NULL ),
waitingBeautifierStackLengthStack( NULL ),
activeBeautifierStackLengthStack( NULL ),
blockParenDepthStack( NULL ),
inStatementIndentStack( NULL ),
inStatementIndentStackSizeStack( NULL ),
parenIndentStack( NULL ),
headerStack( NULL ),
tempStacks( NULL ),
blockStatementStack( NULL ),
parenStatementStack( NULL ),
bracketBlockStateStack( NULL )
{ /* EMPTY */ };
virtual ~ASBeautifier();
// Takes pointer to dynamically created iterator.
virtual void init( istream & iter );
virtual bool hasMoreLines() const;
virtual string nextLine();
virtual string beautify( const string & line );
enum sourceStyle sourceStyle;
bool modeSetManually;
bool bracketIndent;
bool classIndent;
bool switchIndent;
bool caseIndent;
bool namespaceIndent;
bool labelIndent;
bool preprocessorIndent;
bool emptyLineIndent;
bool blockIndent;
bool forceTabIndent;
string indentString;
int indentLength;
int minConditionalIndent;
int maxInStatementIndent;
string eolString;
protected:
int getNextProgramCharDistance( const string & line,
int i );
bool isLegalNameChar( char ch ) const;
bool isWhiteSpace( char ch ) const;
const string * findHeader( const string &line,
int i,
const vector< const string * > & possibleHeaders,
bool checkBoundry = true );
string trim( const string & str );
int indexOf( vector< const string * > & container,
const string * element );
private:
ASBeautifier( const ASBeautifier & );
ASBeautifier & operator=( ASBeautifier & );
void registerInStatementIndent(const string & line,
int i,
int spaceTabCount,
int minIndent,
bool updateParenStack );
string preLineWS( int spaceTabCount,
int tabCount );
istream * sourceIterator;
vector< ASBeautifier * > * waitingBeautifierStack;
vector< ASBeautifier * > * activeBeautifierStack;
vector< int > * waitingBeautifierStackLengthStack;
vector< int > * activeBeautifierStackLengthStack;
vector< int > * blockParenDepthStack;
vector< int > * inStatementIndentStack;
vector< unsigned > * inStatementIndentStackSizeStack;
vector< int > * parenIndentStack;
vector< const string * > * headerStack;
vector< vector< const string * > * > * tempStacks;
vector< bool > * blockStatementStack;
vector< bool > * parenStatementStack;
vector< bool > * bracketBlockStateStack;
const string * currentHeader;
const string * previousLastLineHeader;
const string * immediatelyPreviousAssignmentOp;
const string * probationHeader;
bool isInQuote;
bool isInComment;
bool isInCase;
bool isInQuestion;
bool isInStatement;
bool isInHeader;
bool isInOperator;
bool isInTemplate;
bool isInConst;
bool isInDefine;
bool isInDefineDefinition;
bool isInClassHeader;
bool isInClassHeaderTab;
bool isInConditional;
bool backslashEndsPrevLine;
int parenDepth;
int blockTabCount;
unsigned leadingWhiteSpaces;
int templateDepth;
int prevFinalLineSpaceTabCount;
int prevFinalLineTabCount;
int defineTabCount;
char quoteChar;
char prevNonSpaceCh;
char currentNonSpaceCh;
char currentNonLegalCh;
char prevNonLegalCh;
};
class ASFormatter : public ASBeautifier
{
public:
ASFormatter() : bracketFormatMode( NONE_MODE ),
breakOneLineBlocks( true ),
breakOneLineStatements( true ),
preBracketHeaderStack( NULL ),
bracketTypeStack( NULL ),
parenStack( NULL )
{
};
virtual ~ASFormatter() { delete (preBracketHeaderStack); };
virtual void init( istream & iter );
virtual bool hasMoreLines() const;
virtual string nextLine();
BracketMode bracketFormatMode;
bool breakClosingHeaderBrackets;
bool breakClosingHeaderBlocks;
bool breakElseIfs;
bool breakBlocks;
bool breakOneLineBlocks;
bool breakOneLineStatements;
bool padOperators;
bool padParen;
bool convertTabs2Space;
private:
ASFormatter( ASFormatter & );
ASFormatter & operator=( ASFormatter & );
bool isFormattingEnabled() const;
void goForward(int i);
bool getNextChar();
char peekNextChar() const;
bool isBeforeComment() const;
void trimNewLine();
BracketType getBracketType() const;
bool isPointerOrReference() const;
bool isUnaryMinus() const;
bool isInExponent() const;
bool isOneLineBlockReached() const;
void appendCurrentChar(bool canBreakLine = true);
void appendSequence( const string & sequence,
bool canBreakLine = true );
void appendSpacePad();
void breakLine();
inline bool isSequenceReached( const string & sequence ) const;
const string * findHeader( const vector< const string * > & headers,
bool checkBoundry = true);
istream * sourceIterator;
vector< const string * > * preBracketHeaderStack;
vector< BracketType > * bracketTypeStack;
vector< int > * parenStack;
string readyFormattedLine;
string currentLine;
string formattedLine;
const string * currentHeader;
const string * previousOperator;
char currentChar;
char previousChar;
char previousNonWSChar;
char previousCommandChar;
char quoteChar;
unsigned charNum;
int previousReadyFormattedLineLength;
bool isVirgin;
bool isInLineComment;
bool isInComment;
bool isInPreprocessor;
// true both in definitions (template<class A>) and usage (F<int>)
bool isInTemplate;
bool doesLineStartComment;
bool isInQuote;
bool isSpecialChar;
bool isNonParenHeader;
bool foundQuestionMark;
bool foundPreDefinitionHeader;
bool foundPreCommandHeader;
bool isInLineBreak;
bool isInClosingBracketLineBreak;
bool endOfCodeReached;
bool isLineReady;
bool isPreviousBracketBlockRelated;
bool isInPotentialCalculation;
// bool foundOneLineBlock;
bool shouldReparseCurrentChar;
bool shouldBreakLineAfterComments;
bool passedSemicolon;
bool passedColon;
bool isImmediatelyPostComment;
bool isImmediatelyPostLineComment;
bool isImmediatelyPostEmptyBlock;
bool isPrependPostBlockEmptyLineRequested;
bool isAppendPostBlockEmptyLineRequested;
bool prependEmptyLine;
bool foundClosingHeader;
bool isInHeader;
bool isImmediatelyPostHeader;
};
} // namespace astyle
#endif // ASTYLE_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -