asclass ILCCompactIndex { S its(int idx) { ret itemToString(idx); } abstract S itemToString(int idx); abstract int numLeftPairs(int symbol); abstract int numRightPairs(int symbol); abstract int[] getLeftPairs(int symbol); abstract int[] getRightPairs(int symbol); abstract int getProdLength(int idx); abstract int getOccurrences(int idx); abstract int lookupLiteral(char c); int pairLeft(int idx) { ret firstIntFromLong(getPair(idx)); } int pairRight(int idx) { ret secondIntFromLong(getPair(idx)); } abstract long getPair(int idx); abstract int numberOfSymbols(); abstract S filePartToString(int iFile, int from, int to); abstract IntegerIterator getRightPairsStartingWith(int symbol, S from); abstract IntegerIterator getLeftPairsEndingWith(int symbol, S from); abstract L symbolToFiles(int symbol); // values start at numberOfSymbols() abstract S symbolToProtocol(int symbol, O... _); abstract int getFile(int iFile); // iFile starts at 0 abstract int getFileLength(int iFile); // iFile starts at 0 abstract int nFiles(); abstract int nLiterals(); abstract bool isPair(int symbol); abstract CharacterIterator itemCharIteratorWithSkip(int symbol, int skip); }