GlueGen v2.6.0-rc-20250712
GlueGen, Native Binding Generator for Java™ (public API).
PreprocessorInfoChannel.java
Go to the documentation of this file.
1package com.jogamp.gluegen.cgram;
2
3import java.util.*;
4
6{
7 Hashtable<Integer, Vector<Object>> lineLists = new Hashtable<Integer, Vector<Object>>(); // indexed by Token number
8 int firstValidTokenNumber = 0;
9 int maxTokenNumber = 0;
10
11 public void addLineForTokenNumber( final Object line, final Integer toknum )
12 {
13 if ( lineLists.containsKey( toknum ) ) {
14 final Vector<Object> lines = lineLists.get( toknum );
15 lines.addElement(line);
16 }
17 else {
18 final Vector<Object> lines = new Vector<Object>();
19 lines.addElement(line);
20 lineLists.put(toknum, lines);
21 if ( maxTokenNumber < toknum.intValue() ) {
22 maxTokenNumber = toknum.intValue();
23 }
24 }
25 }
26
27 public int getMaxTokenNumber()
28 {
29 return maxTokenNumber;
30 }
31
32 public Vector<Object> extractLinesPrecedingTokenNumber( final Integer toknum )
33 {
34 final Vector<Object> lines = new Vector<Object>();
35 if (toknum == null) return lines;
36 for (int i = firstValidTokenNumber; i < toknum.intValue(); i++){
37 final Integer inti = new Integer(i);
38 if ( lineLists.containsKey( inti ) ) {
39 final Vector<Object> tokenLineVector = lineLists.get( inti );
40 if ( tokenLineVector != null) {
41 final Enumeration<Object> tokenLines = tokenLineVector.elements();
42 while ( tokenLines.hasMoreElements() ) {
43 lines.addElement( tokenLines.nextElement() );
44 }
45 lineLists.remove(inti);
46 }
47 }
48 }
49 firstValidTokenNumber = toknum.intValue();
50 return lines;
51 }
52
53 @Override
54 public String toString()
55 {
56 final StringBuilder sb = new StringBuilder("PreprocessorInfoChannel:\n");
57 for (int i = 0; i <= maxTokenNumber + 1; i++){
58 final Integer inti = new Integer(i);
59 if ( lineLists.containsKey( inti ) ) {
60 final Vector<Object> tokenLineVector = lineLists.get( inti );
61 if ( tokenLineVector != null) {
62 final Enumeration<Object> tokenLines = tokenLineVector.elements();
63 while ( tokenLines.hasMoreElements() ) {
64 sb.append(inti + ":" + tokenLines.nextElement() + '\n');
65 }
66 }
67 }
68 }
69 return sb.toString();
70 }
71}
72
73
74
Vector< Object > extractLinesPrecedingTokenNumber(final Integer toknum)
void addLineForTokenNumber(final Object line, final Integer toknum)