Class KeywordMap


  • public class KeywordMap
    extends java.lang.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 Summary

      Fields 
      Modifier and Type Field Description
      protected int mapLength  
    • Constructor Summary

      Constructors 
      Constructor Description
      KeywordMap​(boolean ignoreCase)
      Creates a new KeywordMap.
      KeywordMap​(boolean ignoreCase, int mapLength)
      Creates a new KeywordMap.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void add​(java.lang.String keyword, byte id)
      Adds a key-value mapping.
      boolean getIgnoreCase()
      Returns true if the keyword map is set to be case insensitive, false otherwise.
      protected int getSegmentMapKey​(javax.swing.text.Segment s, int off, int len)  
      protected int getStringMapKey​(java.lang.String s)  
      byte lookup​(javax.swing.text.Segment text, int offset, int length)
      Looks up a key.
      void setIgnoreCase​(boolean ignoreCase)
      Sets if the keyword map should be case insensitive.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • mapLength

        protected int mapLength
    • Constructor Detail

      • 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 Detail

      • lookup

        public byte lookup​(javax.swing.text.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​(java.lang.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​(java.lang.String s)
      • getSegmentMapKey

        protected int getSegmentMapKey​(javax.swing.text.Segment s,
                                       int off,
                                       int len)