A semantic search engine for source code https://bitshift.benkurtovic.com/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

154 lines
6.1 KiB

  1. package org.bitshift.parsing.symbols;
  2. import java.util.List;
  3. import java.util.Map;
  4. import java.util.HashMap;
  5. import java.util.ArrayList;
  6. import org.bitshift.parsing.symbols.Symbols;
  7. /*TODO: Overwrite toString
  8. * Change instance vars to HashMaps of HashMaps*/
  9. public class JavaSymbols extends Symbols {
  10. private String _packageName;
  11. private Map<String, Object> _classes;
  12. private Map<String, Object> _interfaces;
  13. private Map<String, Object> _methods;
  14. private Map<String, Object> _fields;
  15. private Map<String, Object> _vars;
  16. public JavaSymbols() {
  17. _packageName = null;
  18. _classes = new HashMap<String, Object>();
  19. _interfaces = new HashMap<String, Object>();
  20. _methods = new HashMap<String, Object>();
  21. _fields = new HashMap<String, Object>();
  22. _vars = new HashMap<String, Object>();
  23. }
  24. public boolean setPackage(String name) {
  25. _packageName = name;
  26. return true;
  27. }
  28. public boolean insertClassDeclaration(String name, Integer startLine, Integer startCol, Integer endLine, Integer endCol) {
  29. List<Integer> pos = new ArrayList<Integer>(4);
  30. pos.set(0, startLine); pos.set(1, startCol); pos.set(2, endLine); pos.set(3, endCol);
  31. List<List<Integer>> copy = (List<List<Integer>>)_classes.get(name);
  32. copy = (copy == null) ? new ArrayList<List<Integer>>() : copy;
  33. copy.add(0, pos);
  34. _classes.put(name, copy);
  35. return true;
  36. }
  37. public boolean insertClassInstance(String name, Integer startLine, Integer startCol, Integer endLine, Integer endCol) {
  38. List<Integer> pos = new ArrayList<Integer>(4);
  39. pos.set(0, startLine); pos.set(1, startCol); pos.set(2, endLine); pos.set(3, endCol);
  40. List<List<Integer>> copy = (List<List<Integer>>)_classes.get(name);
  41. copy = (copy == null) ? new ArrayList<List<Integer>>() : copy;
  42. copy.add(pos);
  43. _classes.put(name, copy);
  44. return true;
  45. }
  46. public boolean insertInterfaceDeclaration(String name, Integer startLine, Integer startCol, Integer endLine, Integer endCol) {
  47. List<Integer> pos = new ArrayList<Integer>(4);
  48. pos.set(0, startLine); pos.set(1, startCol); pos.set(2, endLine); pos.set(3, endCol);
  49. List<List<Integer>> copy = (List<List<Integer>>)_classes.get(name);
  50. copy = (copy == null) ? new ArrayList<List<Integer>>() : copy;
  51. copy.add(0, pos);
  52. _classes.put(name, copy);
  53. return true;
  54. }
  55. public boolean insertInterfaceInstance(String name, Integer startLine, Integer startCol, Integer endLine, Integer endCol) {
  56. List<Integer> pos = new ArrayList<Integer>(4);
  57. pos.set(0, startLine); pos.set(1, startCol); pos.set(2, endLine); pos.set(3, endCol);
  58. List<List<Integer>> copy = (List<List<Integer>>)_classes.get(name);
  59. copy = (copy == null) ? new ArrayList<List<Integer>>() : copy;
  60. copy.add(pos);
  61. _classes.put(name, copy);
  62. return true;
  63. }
  64. public boolean insertMethodDeclaration(String name, Integer startLine, Integer startCol, Integer endLine, Integer endCol) {
  65. List<Integer> pos = new ArrayList<Integer>(4);
  66. pos.set(0, startLine); pos.set(1, startCol); pos.set(2, endLine); pos.set(3, endCol);
  67. List<List<Integer>> copy = (List<List<Integer>>)_classes.get(name);
  68. copy = (copy == null) ? new ArrayList<List<Integer>>() : copy;
  69. copy.add(0, pos);
  70. _classes.put(name, copy);
  71. return true;
  72. }
  73. public boolean insertMethodInvocation(String name, Integer startLine, Integer startCol, Integer endLine, Integer endCol) {
  74. List<Integer> pos = new ArrayList<Integer>(4);
  75. pos.set(0, startLine); pos.set(1, startCol); pos.set(2, endLine); pos.set(3, endCol);
  76. List<List<Integer>> copy = (List<List<Integer>>)_classes.get(name);
  77. copy = (copy == null) ? new ArrayList<List<Integer>>() : copy;
  78. copy.add(pos);
  79. _classes.put(name, copy);
  80. return true;
  81. }
  82. public boolean insertFieldDeclaration(String name, Integer startLine, Integer startCol, Integer endLine, Integer endCol) {
  83. List<Integer> pos = new ArrayList<Integer>(4);
  84. pos.set(0, startLine); pos.set(1, startCol); pos.set(2, endLine); pos.set(3, endCol);
  85. List<List<Integer>> copy = (List<List<Integer>>)_classes.get(name);
  86. copy = (copy == null) ? new ArrayList<List<Integer>>() : copy;
  87. copy.add(0, pos);
  88. _classes.put(name, copy);
  89. return true;
  90. }
  91. public boolean insertFieldAccess(String name, Integer startLine, Integer startCol, Integer endLine, Integer endCol) {
  92. List<Integer> pos = new ArrayList<Integer>(4);
  93. pos.set(0, startLine); pos.set(1, startCol); pos.set(2, endLine); pos.set(3, endCol);
  94. List<List<Integer>> copy = (List<List<Integer>>)_classes.get(name);
  95. copy = (copy == null) ? new ArrayList<List<Integer>>() : copy;
  96. copy.add(pos);
  97. _classes.put(name, copy);
  98. return true;
  99. }
  100. public boolean insertVariableDeclaration(String name, Integer startLine, Integer startCol, Integer endLine, Integer endCol) {
  101. List<Integer> pos = new ArrayList<Integer>(4);
  102. pos.set(0, startLine); pos.set(1, startCol); pos.set(2, endLine); pos.set(3, endCol);
  103. List<List<Integer>> copy = (List<List<Integer>>)_classes.get(name);
  104. copy = (copy == null) ? new ArrayList<List<Integer>>() : copy;
  105. copy.add(0, pos);
  106. _classes.put(name, copy);
  107. return true;
  108. }
  109. public boolean insertVariableAccess(String name, Integer startLine, Integer startCol, Integer endLine, Integer endCol) {
  110. List<Integer> pos = new ArrayList<Integer>(4);
  111. pos.set(0, startLine); pos.set(1, startCol); pos.set(2, endLine); pos.set(3, endCol);
  112. List<List<Integer>> copy = (List<List<Integer>>)_classes.get(name);
  113. copy = (copy == null) ? new ArrayList<List<Integer>>() : copy;
  114. copy.add(pos);
  115. _classes.put(name, copy);
  116. return true;
  117. }
  118. public String toString() {
  119. return "";
  120. }
  121. }