/** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * jAstyle library includes in most of its parts translated C++ code originally * developed by Jim Pattee and Tal Davidson for the Artistic Style project. * * Copyright (C) 2009 by Hector Suarez Barenca http://barenca.net * Copyright (C) 2013 by Abrar Syed <sacabrarsyed@gmail.com> * Copyright (C) 2006-2008 by Jim Pattee <jimp03@email.com> * Copyright (C) 1998-2002 by Tal Davidson * <http://www.gnu.org/licenses/lgpl-3.0.html> * * This file is a part of jAstyle library - an indentation and * reformatting library for C, C++, C# and Java source files. * <http://jastyle.sourceforge.net> * * jAstyle is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * jAstyle 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with jAstyle. If not, see <http://www.gnu.org/licenses/>. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ package decompsource.com.github.abrarsyed.jastyle; import java.util.Collections; import java.util.List; public class ASResource { public final static String AS_IF = "if"; public final static String AS_ELSE = "else"; public final static String AS_FOR = "for"; public final static String AS_DO = "do"; public final static String AS_WHILE = "while"; public final static String AS_SWITCH = "switch"; public final static String AS_CASE = "case"; public final static String AS_DEFAULT = "default"; public final static String AS_CLASS = "class"; public final static String AS_STRUCT = "struct"; public final static String AS_UNION = "union"; public final static String AS_INTERFACE = "interface"; public final static String AS_NAMESPACE = "namespace"; // public final static String AS_EXTERN = "extern"; // public final static String AS_PUBLIC = "public"; // public final static String AS_PROTECTED = "protected"; // public final static String AS_PRIVATE = "private"; public final static String AS_STATIC = "static"; public final static String AS_SYNCHRONIZED = "synchronized"; public final static String AS_OPERATOR = "operator"; public final static String AS_TEMPLATE = "template"; public final static String AS_TRY = "try"; public final static String AS_CATCH = "catch"; public final static String AS_FINALLY = "finally"; public final static String AS_THROWS = "throws"; public final static String AS_CONST = ""; public final static String AS_WHERE = "where"; public final static String AS_NEW = "new"; // public final static String AS_ASM = "asm"; // public final static String AS_BAR_DEFINE = "#define"; // public final static String AS_BAR_INCLUDE = "#include"; // public final static String AS_BAR_IF = "#if"; public final static String AS_BAR_EL = "#el"; public final static String AS_BAR_ENDIF = "#endif"; public final static String AS_OPEN_BRACKET = "{"; public final static String AS_CLOSE_BRACKET = "}"; public final static String AS_OPEN_LINE_COMMENT = "//"; public final static String AS_OPEN_COMMENT = "/*"; public final static String AS_CLOSE_COMMENT = "*/"; public final static String AS_ASSIGN = "="; public final static String AS_PLUS_ASSIGN = "+="; public final static String AS_MINUS_ASSIGN = "-="; public final static String AS_MULT_ASSIGN = "*="; public final static String AS_DIV_ASSIGN = "/="; public final static String AS_MOD_ASSIGN = "%="; public final static String AS_OR_ASSIGN = "|="; public final static String AS_AND_ASSIGN = "&="; public final static String AS_XOR_ASSIGN = "^="; public final static String AS_GR_GR_ASSIGN = ">>="; public final static String AS_LS_LS_ASSIGN = "<<="; public final static String AS_GR_GR_GR_ASSIGN = ">>>="; public final static String AS_LS_LS_LS_ASSIGN = "<<<="; public final static String AS_GCC_MIN_ASSIGN = "<?"; public final static String AS_GCC_MAX_ASSIGN = ">?"; public final static String AS_RETURN = "return"; public final static String AS_CIN = "cin"; public final static String AS_COUT = "cout"; public final static String AS_CERR = "cerr"; public final static String AS_EQUAL = "=="; public final static String AS_PLUS_PLUS = "++"; public final static String AS_MINUS_MINUS = "--"; public final static String AS_NOT_EQUAL = "!="; public final static String AS_GR_EQUAL = ">="; public final static String AS_GR_GR = ">>"; public final static String AS_GR_GR_GR = ">>>"; public final static String AS_LS_EQUAL = "<="; public final static String AS_LS_LS = "<<"; public final static String AS_LS_LS_LS = "<<<"; public final static String AS_QUESTION_QUESTION = "??"; public final static String AS_EQUAL_GR = "=>"; // C# lambda expression arrow public final static String AS_ARROW = "->"; public final static String AS_AND = "&&"; public final static String AS_OR = "||"; public final static String AS_COLON_COLON = "::"; public final static String AS_PAREN_PAREN = "()"; public final static String AS_BLPAREN_BLPAREN = "[]"; public final static String AS_PLUS = "+"; public final static String AS_MINUS = "-"; public final static String AS_MULT = "*"; public final static String AS_DIV = "/"; public final static String AS_MOD = "%"; public final static String AS_GR = ">"; public final static String AS_LS = "<"; public final static String AS_NOT = "!"; public final static String AS_BIT_OR = "|"; public final static String AS_BIT_AND = "&"; public final static String AS_BIT_NOT = "~"; public final static String AS_BIT_XOR = "^"; public final static String AS_QUESTION = "?"; public final static String AS_COLON = ":"; public final static String AS_COMMA = ","; public final static String AS_SEMICOLON = ";"; public final static String AS_FOREACH = "foreach"; public final static String AS_LOCK = "lock"; public final static String AS_UNSAFE = "unsafe"; public final static String AS_FIXED = "fixed"; public final static String AS_GET = "get"; public final static String AS_SET = "set"; public final static String AS_ADD = "add"; public final static String AS_REMOVE = "remove"; public final static String AS_CONST_CAST = "const_cast"; public final static String AS_DYNAMIC_CAST = "dynamic_cast"; public final static String AS_REINTERPRET_CAST = "reinterpret_cast"; public final static String AS_STATIC_CAST = "static_cast"; /** * Build the vector of assignment operators. Used by BOTH ASFormatter.cpp * and ASBeautifier.cpp * * @param assignmentOperators a reference to the vector to be built. */ public static void buildAssignmentOperators(List<String> assignmentOperators) { assignmentOperators.add(AS_ASSIGN); assignmentOperators.add(AS_PLUS_ASSIGN); assignmentOperators.add(AS_MINUS_ASSIGN); assignmentOperators.add(AS_MULT_ASSIGN); assignmentOperators.add(AS_DIV_ASSIGN); assignmentOperators.add(AS_MOD_ASSIGN); assignmentOperators.add(AS_OR_ASSIGN); assignmentOperators.add(AS_AND_ASSIGN); assignmentOperators.add(AS_XOR_ASSIGN); // Java assignmentOperators.add(AS_GR_GR_GR_ASSIGN); assignmentOperators.add(AS_GR_GR_ASSIGN); assignmentOperators.add(AS_LS_LS_ASSIGN); // Unknown assignmentOperators.add(AS_LS_LS_LS_ASSIGN); Collections.sort(assignmentOperators, new SortOnLength()); } /** * Build the vector of C++ cast operators. Used by ONLY ASFormatter.cpp * * @param castOperators a reference to the vector to be built. */ public static void buildCastOperators(List<String> castOperators) { castOperators.add(AS_CONST_CAST); castOperators.add(AS_DYNAMIC_CAST); castOperators.add(AS_REINTERPRET_CAST); castOperators.add(AS_STATIC_CAST); } /** * Build the vector of header words. Used by BOTH ASFormatter.cpp and * ASBeautifier.cpp * * @param headers a reference to the vector to be built. */ public static void buildHeaders(List<String> headers, SourceMode fileType, boolean beautifier) { headers.add(AS_IF); headers.add(AS_ELSE); headers.add(AS_FOR); headers.add(AS_WHILE); headers.add(AS_DO); headers.add(AS_SWITCH); headers.add(AS_TRY); headers.add(AS_CATCH); if (fileType == SourceMode.JAVA) { headers.add(AS_FINALLY); headers.add(AS_SYNCHRONIZED); } if (fileType == SourceMode.CS) { headers.add(AS_FINALLY); headers.add(AS_FOREACH); headers.add(AS_LOCK); // headers.add(AS_UNSAFE); headers.add(AS_FIXED); headers.add(AS_GET); headers.add(AS_SET); headers.add(AS_ADD); headers.add(AS_REMOVE); } if (beautifier) { headers.add(AS_CASE); headers.add(AS_DEFAULT); if (fileType == SourceMode.C) { headers.add(AS_CONST); headers.add(AS_TEMPLATE); } if (fileType == SourceMode.JAVA) { headers.add(AS_STATIC); // for static constructor } } Collections.sort(headers, new SortOnName()); } /** * Build the vector of indentable headers. Used by ONLY ASBeautifier.cpp * * @param indentableHeaders a reference to the vector to be built. */ public static void buildIndentableHeaders(List<String> indentableHeaders) { indentableHeaders.add(AS_RETURN); indentableHeaders.add(AS_COUT); indentableHeaders.add(AS_CERR); indentableHeaders.add(AS_CIN); Collections.sort(indentableHeaders, new SortOnName()); } /** * Build the vector of non-assignment operators. Used by ONLY * ASBeautifier.cpp * * @param nonAssignmentOperators a reference to the vector to be built. */ public static void buildNonAssignmentOperators(List<String> nonAssignmentOperators) { nonAssignmentOperators.add(AS_EQUAL); nonAssignmentOperators.add(AS_PLUS_PLUS); nonAssignmentOperators.add(AS_MINUS_MINUS); nonAssignmentOperators.add(AS_NOT_EQUAL); nonAssignmentOperators.add(AS_GR_EQUAL); nonAssignmentOperators.add(AS_GR_GR_GR); nonAssignmentOperators.add(AS_GR_GR); nonAssignmentOperators.add(AS_LS_EQUAL); nonAssignmentOperators.add(AS_LS_LS_LS); nonAssignmentOperators.add(AS_LS_LS); nonAssignmentOperators.add(AS_ARROW); nonAssignmentOperators.add(AS_AND); nonAssignmentOperators.add(AS_OR); Collections.sort(nonAssignmentOperators, new SortOnLength()); } /** * Build the vector of header non-paren headers. Used by BOTH * ASFormatter.cpp and ASBeautifier.cpp * * @param nonParenHeaders a reference to the vector to be built. */ public static void buildNonParenHeaders(List<String> nonParenHeaders, SourceMode fileType, boolean beautifier) { nonParenHeaders.add(AS_ELSE); nonParenHeaders.add(AS_DO); nonParenHeaders.add(AS_TRY); if (fileType == SourceMode.JAVA) { nonParenHeaders.add(AS_FINALLY); } else if (fileType == SourceMode.CS) { nonParenHeaders.add(AS_CATCH); // can be a paren or non-paren header nonParenHeaders.add(AS_FINALLY); // nonParenHeaders.add(AS_UNSAFE); nonParenHeaders.add(AS_GET); nonParenHeaders.add(AS_SET); nonParenHeaders.add(AS_ADD); nonParenHeaders.add(AS_REMOVE); } if (beautifier) { nonParenHeaders.add(AS_CASE); nonParenHeaders.add(AS_DEFAULT); if (fileType == SourceMode.C) { nonParenHeaders.add(AS_CONST); nonParenHeaders.add(AS_TEMPLATE); } else if (fileType == SourceMode.JAVA) { nonParenHeaders.add(AS_STATIC); } } Collections.sort(nonParenHeaders, new SortOnName()); } /** * Build the vector of operators. Used by ONLY ASFormatter.cpp * * @param operators a reference to the vector to be built. */ public static void buildOperators(List<String> operators) { operators.add(AS_PLUS_ASSIGN); operators.add(AS_MINUS_ASSIGN); operators.add(AS_MULT_ASSIGN); operators.add(AS_DIV_ASSIGN); operators.add(AS_MOD_ASSIGN); operators.add(AS_OR_ASSIGN); operators.add(AS_AND_ASSIGN); operators.add(AS_XOR_ASSIGN); operators.add(AS_EQUAL); operators.add(AS_PLUS_PLUS); operators.add(AS_MINUS_MINUS); operators.add(AS_NOT_EQUAL); operators.add(AS_GR_EQUAL); operators.add(AS_GR_GR_GR_ASSIGN); operators.add(AS_GR_GR_ASSIGN); operators.add(AS_GR_GR_GR); operators.add(AS_GR_GR); operators.add(AS_LS_EQUAL); operators.add(AS_LS_LS_LS_ASSIGN); operators.add(AS_LS_LS_ASSIGN); operators.add(AS_LS_LS_LS); operators.add(AS_LS_LS); operators.add(AS_QUESTION_QUESTION); operators.add(AS_EQUAL_GR); operators.add(AS_GCC_MIN_ASSIGN); operators.add(AS_GCC_MAX_ASSIGN); operators.add(AS_ARROW); operators.add(AS_AND); operators.add(AS_OR); operators.add(AS_COLON_COLON); operators.add(AS_PLUS); operators.add(AS_MINUS); operators.add(AS_MULT); operators.add(AS_DIV); operators.add(AS_MOD); operators.add(AS_QUESTION); operators.add(AS_COLON); operators.add(AS_ASSIGN); operators.add(AS_LS); operators.add(AS_GR); operators.add(AS_NOT); operators.add(AS_BIT_OR); operators.add(AS_BIT_AND); operators.add(AS_BIT_NOT); operators.add(AS_BIT_XOR); Collections.sort(operators, new SortOnLength()); } /** * Build the vector of pre-block statements. Used by ONLY ASBeautifier.cpp * NOTE: Cannot be both a header and a preBlockStatement. * * @param preBlockStatements a reference to the vector to be built. */ public static void buildPreBlockStatements(List<String> preBlockStatements, SourceMode fileType) { preBlockStatements.add(AS_CLASS); if (fileType == SourceMode.C) { preBlockStatements.add(AS_STRUCT); preBlockStatements.add(AS_UNION); preBlockStatements.add(AS_NAMESPACE); } else if (fileType == SourceMode.JAVA) { preBlockStatements.add(AS_INTERFACE); preBlockStatements.add(AS_THROWS); } else if (fileType == SourceMode.CS) { preBlockStatements.add(AS_INTERFACE); preBlockStatements.add(AS_NAMESPACE); preBlockStatements.add(AS_WHERE); } Collections.sort(preBlockStatements, new SortOnName()); } /** * Build the vector of pre-command headers. Used by ONLY ASFormatter.cpp * * @param preCommandHeaders a reference to the vector to be built. */ public static void buildPreCommandHeaders(List<String> preCommandHeaders, SourceMode fileType) { if (fileType == SourceMode.C) { preCommandHeaders.add(AS_CONST); } else if (fileType == SourceMode.JAVA) { preCommandHeaders.add(AS_THROWS); } else if (fileType == SourceMode.CS) { preCommandHeaders.add(AS_WHERE); } Collections.sort(preCommandHeaders, new SortOnName()); } /** * Build the vector of pre-definition headers. Used by ONLY ASFormatter.cpp * NOTE: Do NOT add 'enum' here. It is an array type bracket. NOTE: Do NOT * add 'extern' here. Do not want an extra indent. * * @param preDefinitionHeaders a reference to the vector to be built. */ public static void buildPreDefinitionHeaders(List<String> preDefinitionHeaders, SourceMode fileType) { preDefinitionHeaders.add(AS_CLASS); if (fileType == SourceMode.C) { preDefinitionHeaders.add(AS_STRUCT); preDefinitionHeaders.add(AS_UNION); preDefinitionHeaders.add(AS_NAMESPACE); } else if (fileType == SourceMode.JAVA) { preDefinitionHeaders.add(AS_INTERFACE); } else if (fileType == SourceMode.CS) { preDefinitionHeaders.add(AS_INTERFACE); preDefinitionHeaders.add(AS_NAMESPACE); } Collections.sort(preDefinitionHeaders, new SortOnName()); } }