beautypg.com

Apple Newton Programmer’s Newton 2.0 (for Newton 2.0) User Manual

Page 402

background image

C H A P T E R 1 0

Recognition: Advanced Topics

10-26

Using Advanced Topics in Recognition

symbol

'custom

as its argument, which specifies that the new dictionary is for

this application’s use only.

Note

Although the token returned by the

NewDictionary

function

currently evaluates to an integer in the NTK Inspector, the type of
value returned by this function may change on future Newton
devices. Do not rely on the

NewDictionary

function returning

an integer.

Adding Words to RAM-Based Dictionaries

10

Once you have created a blank dictionary, you need to populate it with your
dictionary items. You can use the

AddWordToDictionary

function to add a

specified string to a specified RAM-based dictionary.

The first argument to this function is the identifier of the dictionary to which the
string is to be added; this identifier is returned by the

NewDictionary

function. The

previous code example stored this identifier in the

mySpecialDictionary

slot.

The second argument to this function is the string to be added to the dictionary. If
this argument is not a string, the

AddWordToDictionary

function throws an

exception. If the word is added successfully, this function returns

true

. If the

specified word cannot be added, this function returns

nil

.

The

AddWordToDictionary

function may return

nil

when the word to be

added is already present in the specified dictionary, or it may return

nil

because of

resource limitations. It is possible to run out of system memory for dictionaries,
with potentially serious consequences. Do not rely on a specific number of
dictionary entries as the maximum amount that may be added safely. It is strongly
recommended that you use custom dictionaries sparingly and keep them as small as
possible, taking into account the possibility that other applications may require
system memory for their own dictionaries or for other uses.

To populate the dictionary, you need to call the

AddWordToDictionary

function once for each item to be added. There are many ways to call a function
iteratively; the best approach for your needs is an application-specific detail that
cannot be anticipated here. The following code example shows one way to populate
a blank dictionary.

myAdder:= func()

begin

local element;

// items slot contains an array of dictionary strings

foreach element in items do

AddWordToDictionary(mySpecialDictionary, element);

end