Source Files
Public Interface
- Tcl_DictObjPut
- Tcl_DictObjGet
- Tcl_DictObjRemove
- Tcl_DictObjSize
- Tcl_DictObjFirst
- Tcl_DictObjNext
- Tcl_DictObjDone
- Tcl_DictObjPutKeyList
- Tcl_DictObjRemoveKeyList
- Tcl_NewDictObj
- Tcl_DbNewDictObj
Private Interface
- TclTraceDictPath
- TclDictWithInit
- TclDictWithFinish
- TclInitDictCmd
- tclDictType
Directly Depends On Public Interface Of
- Hash Tables
- Tcl_Obj System
- Panic
- Parsing and Evaluation
- string Object Type
- index Object Type
- list Object Type
- String Processing
- numeric Object Types
- Variable Commands and Interfaces
Directly Depends On Private Interface of
- Bytecode
- Tcl_Obj System
- List Parsing
- list Object Type
- string Object Type
- Parsing and Evaluation
- Variable Commands and Interfaces
- namespace
Discussion
Tcl_DictObjSize returns an int, imposing the same INT_MAX size limitations as in other parts of Tcl.
The *KeyList functions use an int argument to specify the length of the key list. It's less clear whether this limit is as important. (Should dicts be deep as well as wide?)
I think it's not important. The key list interfaces are 'only' conveniences. They do not make anything fundamentally possible that repeated single key calls could not do. Contrast with the size limit, where a dict with too many keys is fundamentally unable to correctly report its size.
The filtering script of dict filter is not NRE-enabled. Perhaps it should not be (similar to lsort -command) ?