beautypg.com

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

Page 484

background image

C H A P T E R 1 1

Data Storage and Retrieval

11-52

Using Newton Data Storage Objects

W A R N I N G

Index keys are limited to a total of 39 unicode characters (80
bytes, 2 of which are used internally) per soup entry. Keys that
exceed this limit may be truncated when passed to an

indexValidTest

function. This 80-byte limit applies to the

entire key space allocated for an entry, not for individual keys. As
a result, subordinate keys in multiple-slot indexes may be
truncated or missing when the total key size for the entry is
greater than 80 bytes. For more information, see the description of
the

indexValidTest

function in “Query Specification Frame”

(page 9-9) in Newton Programmer’s Reference. See also the
description of the

MakeKey

method (page 9-45) in Newton

Programmer’s Reference.

Limitations of Index Keys

11

Under the following conditions, a string may not match its index key exactly:

Keys of type '

string

are truncated after 39 unicode characters.

Ink data is stripped from '

string

keys.

Subkeys in multiple-slot indexes may be truncated or missing when the total key
size is greater than 80 bytes.

You can use the

MakeKey

function to determine precisely the index key that the

system generates for a particular string. The interface to this function looks like the
following code fragment:

soup

:MakeKey(

string

,

indexPath

)

The following examples presume that

mySoup

is a valid soup (not a union soup)

having the multiple-slot index specified by the following code fragment:

myMultiSlotIndexSpec := {structure: ' multislot,

path: ['name.first,

'cardType,

'name.last],

type : ['string, 'int, 'string]};

Each of the soup’s entries has a

name

slot and a

cardType

slot. The

name

slot

holds a frame containing the slots

first

and

last

, which contain string data. The

cardType

slot holds integer data.

The first example illustrates the truncation of string keys longer than 39 characters.
Evaluating the following code fragment in the Inspector