## mars.venus.editors.jeditsyntax
Class KeywordMap

    java.lang.Object
      mars.venus.editors.jeditsyntax.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.

Author:
  Slava Pestov, Mike Dillon

Field Summary
`protected int` `mapLength`

Constructor Summary
`KeywordMap(boolean ignoreCase)` Creates a new `KeywordMap`.
`KeywordMap(boolean ignoreCase, int mapLength)` Creates a new `KeywordMap`.

Method Summary
`void` `add(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(Segment s, int off, int len)`
`protected int` `getStringMapKey(String s)`
`byte` `lookup(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(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

### 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)