Language.java 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package de.jplag.cpp;
  2. import java.io.File;
  3. import org.kohsuke.MetaInfServices;
  4. import de.jplag.ErrorConsumer;
  5. import de.jplag.TokenList;
  6. @MetaInfServices(de.jplag.Language.class)
  7. public class Language implements de.jplag.Language {
  8. private final Scanner scanner; // cpp code is scanned not parsed
  9. /**
  10. * Prototype Constructor for {@link MetaInfServices}.
  11. */
  12. public Language() {
  13. this.scanner = null;
  14. }
  15. private Language(ErrorConsumer errorConsumer) {
  16. scanner = new Scanner(errorConsumer);
  17. }
  18. @Override
  19. public de.jplag.Language initializeLanguage(ErrorConsumer errorConsumer) {
  20. return new Language(errorConsumer);
  21. }
  22. @Override
  23. public String[] suffixes() {
  24. return new String[] {".cpp", ".CPP", ".cxx", ".CXX", ".c++", ".C++", ".c", ".C", ".cc", ".CC", ".h", ".H", ".hpp", ".HPP", ".hh", ".HH"};
  25. }
  26. @Override
  27. public String getName() {
  28. return "C/C++ Scanner [basic markup]";
  29. }
  30. @Override
  31. public String getShortName() {
  32. return "cpp";
  33. }
  34. @Override
  35. public int minimumTokenMatch() {
  36. return 12;
  37. }
  38. @Override
  39. public boolean supportsColumns() {
  40. return true;
  41. }
  42. @Override
  43. public boolean isPreformatted() {
  44. return true;
  45. }
  46. @Override
  47. public boolean usesIndex() {
  48. return false;
  49. }
  50. @Override
  51. public TokenList parse(File dir, String[] files) {
  52. return this.scanner.scan(dir, files);
  53. }
  54. @Override
  55. public boolean hasErrors() {
  56. return this.scanner.hasErrors();
  57. }
  58. @Override
  59. public int numberOfTokens() {
  60. return CPPTokenConstants.NUM_DIFF_TOKENS;
  61. }
  62. }