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

34
LINES

< > BotCompany Repo | #1008142 // findFullFunctionDefs - static functions only

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

Libraryless. Click here for Pure Java version (2477L/16K).

1  
static Set<S> findFullFunctionDefs_keywords = new HashSet(splitAtSpace("static svoid ssvoid ssynchronized sbool sS sO sL"));
2  
3  
// returns actual CNC
4  
static LL<S> findFullFunctionDefs(L<S> tok, bool topLevelOnly) {
5  
  int n = l(tok);
6  
  new LL<S> functions;
7  
  for (int i = 1; i < n; i += 2) {
8  
    S t = tok.get(i);
9  
    if (topLevelOnly && eq(t, "{")) i = findEndOfBlock(tok, i)-1;
10  
    else if (findFullFunctionDefs_keywords.contains(t)) {
11  
      ifdef findFullFunctionDefs_debug
12  
        print("Keyword! " + t);
13  
      endifdef
14  
      int j = i+2;
15  
      while (j < n && !eqOneOf(tok.get(j), ";", "=", "(", "{"))
16  
        j += 2;
17  
      if ((eqGet(tok, j, "(") || eq(t, "svoid") && eqGet(tok, j, "{"))
18  
        && isIdentifier(tok.get(j-2))
19  
        && !contains(subList(tok, i, j), "new")) {
20  
        int k = smartIndexOf(tok, "{", j);
21  
        if (k < l(tok)) {
22  
          k = findEndOfBlock(tok, k)+1;
23  
          functions.add(subList(tok, i-1, k));
24  
          i = k-2;
25  
        }
26  
      }
27  
    }
28  
  }
29  
  ret functions;
30  
}
31  
32  
static LL<S> findFullFunctionDefs(S s, bool topLevelOnly) {
33  
  ret findFullFunctionDefs(javaTok(s), topLevelOnly);
34  
}

Author comment

Began life as a copy of #1004051

download  show line numbers  debug dex  old transpilations   

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

No comments. add comment

Snippet ID: #1008142
Snippet name: findFullFunctionDefs - static functions only
Eternal ID of this version: #1008142/8
Text MD5: 8a6220c23cbbf05c49e1abc579d15882
Transpilation MD5: 51f221af5bee1b19f1259f784da79e4e
Author: stefan
Category: javax
Type: JavaX fragment (include)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2020-02-17 16:47:00
Source code size: 1151 bytes / 34 lines
Pitched / IR pitched: No / No
Views / Downloads: 517 / 632
Version history: 7 change(s)
Referenced in: [show references]