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

42
LINES

< > BotCompany Repo | #1034495 // findFunctionDefs (finds static functions, backup)

JavaX fragment (include)

static Set<S> findFunctionDefs_keywords = new HashSet(splitAtSpace("static svoid ssvoid ssynchronized sbool sS sO sL"));

static LS findFunctionDefs(S s) {
  ret findFunctionDefs(javaTok(s));
}

static L<S> findFunctionDefs(L<S> tok) {
  new LS functions;
  
  if (tok instanceof IContentsIndexedList2) {
    for (S keyword : findFunctionDefs_keywords) {
      TreeSet<HasIndex> indices = tok/IContentsIndexedList2.indicesOf_treeSetOfHasIndex(keyword);
      if (indices != null)
        for (HasIndex i : indices)
          findFunctionDefs_step(tok, i.idx, functions);
    }
  } else {
    int n = l(tok);
    for (int i = 1; i < n; i += 2)
      if (findFunctionDefs_keywords.contains(tok.get(i)))
        findFunctionDefs_step(tok, i, functions);
  }
  ret functions;
}

// we found one of the keywords listed above at token i
// now scan forward for a function definition
svoid findFunctionDefs_step(LS tok, int i, LS functions) {
  S t = tok.get(i);
  int j = i+2, n = l(tok);
  while (j < n && !findFunctionsDefs_checkToken(tok.get(j)))
    j += 2;
  if (isIdentifier(tok.get(j-2)) &&
    eqGet(tok, j, "(") || eqGet(tok, j, "{") && eq(t, "svoid"))
    functions.add(tok.get(j-2));
}

sbool findFunctionsDefs_checkToken(S t) {
  if (t.length() != 1) false;
  char c = t.charAt(0);
  ret c == ';' || c == '=' || c == '(' || c == '{' /*|| c == '#' XXX*/;
}

Author comment

Began life as a copy of #1004051

download  show line numbers  debug dex  old transpilations   

Travelled to 3 computer(s): bhatertpkbcr, mowyntqkapby, mqqgnosmbjvj

No comments. add comment

Snippet ID: #1034495
Snippet name: findFunctionDefs (finds static functions, backup)
Eternal ID of this version: #1034495/1
Text MD5: f508aa26dc1a988d8990d66c679f1a7a
Author: stefan
Category: javax
Type: JavaX fragment (include)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2022-02-09 23:55:41
Source code size: 1402 bytes / 42 lines
Pitched / IR pitched: No / No
Views / Downloads: 141 / 159
Referenced in: [show references]