Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

42
LINES

< > BotCompany Repo | #1004051 // findFunctionDefs (finds static functions, LIVE in #759)

JavaX fragment (include) [tags: use-pretranspiled]

Libraryless. Click here for Pure Java version (5294L/30K).

1  
static LS findFunctionDefs(S s) {
2  
  ret findFunctionDefs(javaTok(s));
3  
}
4  
5  
static L<S> findFunctionDefs(L<S> tok) {
6  
  new LS functions;
7  
  
8  
  var keywords = findFunctionDefs_keywords();
9  
  
10  
  if (tok instanceof IContentsIndexedList2) {
11  
    for (S keyword : keywords) {
12  
      TreeSet<HasIndex> indices = tok/IContentsIndexedList2.indicesOf_treeSetOfHasIndex(keyword);
13  
      if (indices != null)
14  
        for (HasIndex i : indices)
15  
          findFunctionDefs_step(tok, i.idx, functions);
16  
    }
17  
  } else {
18  
    int n = l(tok);
19  
    for (int i = 1; i < n; i += 2)
20  
      if (keywords.contains(tok.get(i)))
21  
        findFunctionDefs_step(tok, i, functions);
22  
  }
23  
  ret functions;
24  
}
25  
26  
// we found one of the keywords listed above at token i
27  
// now scan forward for a function definition
28  
svoid findFunctionDefs_step(LS tok, int i, LS functions) {
29  
  S t = tok.get(i);
30  
  int j = i+2, n = l(tok);
31  
  while (j < n && !findFunctionsDefs_checkToken(tok.get(j)))
32  
    j += 2;
33  
  if (isIdentifier(tok.get(j-2)) &&
34  
    eqGet(tok, j, "(") || eqGet(tok, j, "{") && eq(t, "svoid"))
35  
    functions.add(tok.get(j-2));
36  
}
37  
38  
sbool findFunctionsDefs_checkToken(S t) {
39  
  if (t.length() != 1) false;
40  
  char c = t.charAt(0);
41  
  ret c == ';' || c == '=' || c == '(' || c == '{' /*|| c == '#' XXX*/;
42  
}

download  show line numbers  debug dex  old transpilations   

Travelled to 16 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, ddnzoavkxhuk, gwrvuhgaqvyk, irmadwmeruwu, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt, xrpafgyirdlv

Comments [hide]

ID Author/Program Comment Date
1301 stefan TODO: skip inner classes 2016-09-23 19:18:36

add comment

Snippet ID: #1004051
Snippet name: findFunctionDefs (finds static functions, LIVE in #759)
Eternal ID of this version: #1004051/14
Text MD5: 991b5de70b6bc732582100d275abf574
Transpilation MD5: 6af53dcd03c9257cfc552fa4650042fb
Author: stefan
Category: javax
Type: JavaX fragment (include)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2022-02-10 00:13:35
Source code size: 1295 bytes / 42 lines
Pitched / IR pitched: No / No
Views / Downloads: 884 / 1387
Version history: 13 change(s)
Referenced in: [show references]