Пример #1
0
  public static CObject parse(CLibrary parent, boolean protocol, Stream s) {
    String name = s.consumeID();
    CObject obj = protocol ? parent.getInterface(name) : parent.getObject(name);
    Reporter.setObject(obj);

    // Remove categories
    if (s.peekChar() == '(') s.consumeBalanced('(', ')');

    // Find superclass
    if (s.peekChar() == ':') {
      s.consumeChars(1);
      obj.setSuperclass(s.consumeID());
    }

    // Find interfaces
    if (s.peekChar() == '<') {
      String interfs = s.consumeBalanced('<', '>');
      interfs = interfs.substring(1, interfs.length() - 1).trim();
      StringTokenizer tk = new StringTokenizer(interfs, ",");
      while (tk.hasMoreTokens()) obj.addInterface(tk.nextToken().trim());
    }
    if (s.peekChar() == '{') s.consumeBalanced('{', '}');
    if (s.peekChar() == ';') s.consumeChars(1);

    return obj;
  }