18#ifndef __STRINGMAP_H__
19#define __STRINGMAP_H__
21#include "StringBasics.h"
36 void Grow(
int newsize);
43 void * Object(
int i)
const
47 void * Object(const ::String & key)
const
49 int index = Find(key);
50 return (index >= 0) ? objects[index] : NULL;
52 void * Object(const ::String & key,
void *(*create_object)())
54 return objects[Find(key, create_object)];
57 void SetObject(
int i,
void *
object)
61 void SetObject(const ::String & key,
void *
object)
66 int Add(const ::String & s,
void *
object = NULL);
67 int Find(const ::String & s,
void *(*create_object)() = NULL);
68 int Find(const ::String & s)
const;
69 int FindStem(const ::String & stem)
const;
70 int FindFirstStem(const ::String & stem)
const;
74 const ::String & operator [](
int i)
const
87 static void * CreateMap();
89 void Delete(
int index);
105 void Grow(
int newsize);
112 int Integer(
int i)
const
116 int Integer(const ::String & key)
const
118 int index = Find(key);
119 return (index >= 0) ? (int) integers[index] : -1;
122 void SetInteger(
int i,
int value)
126 void SetInteger(const ::String & key,
int value)
131 int Add(const ::String & s,
int i);
132 int Find(const ::String & s,
int defaultValue);
133 int Find(const ::String & s)
const;
134 int FindStem(const ::String & stem)
const;
138 const ::String & operator [](
int i)
const
140 return *(strings[i]);
144 return *(strings[i]);
148 return *(strings[i]);
151 static void * CreateMap();
153 int IncrementCount(const ::String & key);
154 int DecrementCount(const ::String & key);
155 int GetCount(const ::String & key)
const;
156 int GetCount(
int index)
const
158 return integers[index];
161 void Delete(
int index);