Packages Soup

one of the most important soups in the Newton system is the one that
holds packages.  there are several different entry types which use
this soup, holding raw package data and different classes of
application.


the structure is kinda odd: using ViewFrame, and the global
GetStores() method, you find:

GetStores() -> an array of frames, one per soup.  

the parent for these frames contains all the store methods.  why the
parent?  no idea why these are in the _parent slot, but they are.

the _proto for the soup frame is another frame:

  info: {lastrestorefromcard: <int>, defaultStore: true}
  signature: <int>
  ephemerals: <int>
  name: "Internal"
  nameIndex: 49

store: <int> value
soups: [weak array]
version: 4


the soups array is where the data is.  the entries i see are frames of
class 'PlainSoup

_parent: <frame, containing all soup methods>
_proto: <frame, 'DiskSoup>
class: 'PlainSoup
tStore: <int>
storeObj: <ref back to the owning store> 
theName: <string.nohint>
cache: [weak array]
indexObjects: <CObject>
indexnextuid: <int>
cursors: [weak array]


so Disk soup is the proto for PlainSoup

indexesModTime: <int>
lastUID: nil
infoModTime: <int>
class: 'DiskSoup
indexes: [{type:, path:, index:, structure:} -- indexArray ???]
info: {soupDef:{}, extrasState: 'initialised, NCKLastBackupTime: <int>}
signature: <int>
flags: 3


the soupDef frame is

ownerApp: 'ExtraDrawer
userDescr: "private"
indexes: [ <3 frames> ]
name: "Packages"
userName: "Extras"
ownerAppName: "Extras"


the indexes in the soupDef frame are:

0: {type: 'tags,
    path: '_tagList,
    tags: ['_icon, '_package, '_frozen, '_noBackup, '_buttonBar,
           '_soups, '_extensions, '_setup, '_help],
    structure: 'slot}

1: {type: 'string,
    path: 'packageName,
    structure: 'slot}

2: {type: 'int,
    path: 'sequence,
    structure: 'slot}


the cursors array contains frames

_parent: { <all cursor methods (all newCFunc objects) > }
tcursor: <CObject>
