java.lang.Object
com.inductiveautomation.ignition.client.jedittextarea.KeywordMap

public class KeywordMap extends Object
A KeywordMap is similar to a hashtable in that it maps keys to values. However, the `keys' are Swing segments. This allows lookups of text substrings without the overhead of creating a new string object.

This class is used by CTokenMarker to map keywords to ids.

  • Field Details

    • mapLength

      protected int mapLength
  • Constructor Details

    • KeywordMap

      public KeywordMap(boolean ignoreCase)
      Creates a new KeywordMap.
      Parameters:
      ignoreCase - True if keys are case insensitive
    • KeywordMap

      public KeywordMap(boolean ignoreCase, int mapLength)
      Creates a new KeywordMap.
      Parameters:
      ignoreCase - True if the keys are case insensitive
      mapLength - The number of `buckets' to create. A value of 52 will give good performance for most maps.
  • Method Details

    • lookup

      public byte lookup(Segment text, int offset, int length)
      Looks up a key.
      Parameters:
      text - The text segment
      offset - The offset of the substring within the text segment
      length - The length of the substring
    • add

      public void add(String keyword, byte id)
      Adds a key-value mapping.
      Parameters:
      keyword - The key
      id - The value
    • getIgnoreCase

      public boolean getIgnoreCase()
      Returns true if the keyword map is set to be case insensitive, false otherwise.
    • setIgnoreCase

      public void setIgnoreCase(boolean ignoreCase)
      Sets if the keyword map should be case insensitive.
      Parameters:
      ignoreCase - True if the keyword map should be case insensitive, false otherwise
    • getStringMapKey

      protected int getStringMapKey(String s)
    • getSegmentMapKey

      protected int getSegmentMapKey(Segment s, int off, int len)