Attachment "dict-getwithdefault.c" to
ticket [2370575fff]
added by
dkf
2019-04-01 09:10:28.
0000: 2f 2a 0a 20 2a 20 54 61 62 6c 65 20 6f 66 20 64 /*. * Table of d
0010: 69 63 74 20 73 75 62 63 6f 6d 6d 61 6e 64 20 6e ict subcommand n
0020: 61 6d 65 73 20 61 6e 64 20 69 6d 70 6c 65 6d 65 ames and impleme
0030: 6e 74 61 74 69 6f 6e 73 2e 0a 20 2a 2f 0a 0a 73 ntations.. */..s
0040: 74 61 74 69 63 20 63 6f 6e 73 74 20 45 6e 73 65 tatic const Ense
0050: 6d 62 6c 65 49 6d 70 6c 4d 61 70 20 69 6d 70 6c mbleImplMap impl
0060: 65 6d 65 6e 74 61 74 69 6f 6e 4d 61 70 5b 5d 20 ementationMap[]
0070: 3d 20 7b 0a 20 20 20 20 7b 22 61 70 70 65 6e 64 = {. {"append
0080: 22 2c 09 44 69 63 74 41 70 70 65 6e 64 43 6d 64 ",.DictAppendCmd
0090: 2c 09 54 63 6c 43 6f 6d 70 69 6c 65 44 69 63 74 ,.TclCompileDict
00a0: 41 70 70 65 6e 64 43 6d 64 20 7d 2c 0a 20 20 20 AppendCmd },.
00b0: 20 7b 22 63 72 65 61 74 65 22 2c 09 44 69 63 74 {"create",.Dict
00c0: 43 72 65 61 74 65 43 6d 64 20 7d 2c 0a 20 20 20 CreateCmd },.
00d0: 20 7b 22 65 78 69 73 74 73 22 2c 09 44 69 63 74 {"exists",.Dict
00e0: 45 78 69 73 74 73 43 6d 64 20 7d 2c 0a 20 20 20 ExistsCmd },.
00f0: 20 7b 22 66 69 6c 74 65 72 22 2c 09 44 69 63 74 {"filter",.Dict
0100: 46 69 6c 74 65 72 43 6d 64 20 7d 2c 0a 20 20 20 FilterCmd },.
0110: 20 7b 22 66 6f 72 22 2c 09 44 69 63 74 46 6f 72 {"for",.DictFor
0120: 43 6d 64 2c 09 54 63 6c 43 6f 6d 70 69 6c 65 44 Cmd,.TclCompileD
0130: 69 63 74 46 6f 72 43 6d 64 2c 20 44 69 63 74 46 ictForCmd, DictF
0140: 6f 72 4e 52 43 6d 64 20 7d 2c 0a 20 20 20 20 7b orNRCmd },. {
0150: 22 67 65 74 22 2c 09 44 69 63 74 47 65 74 43 6d "get",.DictGetCm
0160: 64 2c 09 54 63 6c 43 6f 6d 70 69 6c 65 44 69 63 d,.TclCompileDic
0170: 74 47 65 74 43 6d 64 20 7d 2c 0a 20 20 20 20 7b tGetCmd },. {
0180: 22 67 65 74 77 69 74 68 64 65 66 61 75 6c 74 22 "getwithdefault"
0190: 2c 09 44 69 63 74 47 65 74 57 69 74 68 44 65 66 ,.DictGetWithDef
01a0: 61 75 6c 74 43 6d 64 20 7d 2c 0a 20 20 20 20 7b aultCmd },. {
01b0: 22 69 6e 63 72 22 2c 09 44 69 63 74 49 6e 63 72 "incr",.DictIncr
01c0: 43 6d 64 2c 09 54 63 6c 43 6f 6d 70 69 6c 65 44 Cmd,.TclCompileD
01d0: 69 63 74 49 6e 63 72 43 6d 64 20 7d 2c 0a 20 20 ictIncrCmd },.
01e0: 20 20 7b 22 69 6e 66 6f 22 2c 09 44 69 63 74 49 {"info",.DictI
01f0: 6e 66 6f 43 6d 64 20 7d 2c 0a 20 20 20 20 7b 22 nfoCmd },. {"
0200: 6b 65 79 73 22 2c 09 44 69 63 74 4b 65 79 73 43 keys",.DictKeysC
0210: 6d 64 20 7d 2c 0a 20 20 20 20 7b 22 6c 61 70 70 md },. {"lapp
0220: 65 6e 64 22 2c 09 44 69 63 74 4c 61 70 70 65 6e end",.DictLappen
0230: 64 43 6d 64 2c 09 54 63 6c 43 6f 6d 70 69 6c 65 dCmd,.TclCompile
0240: 44 69 63 74 4c 61 70 70 65 6e 64 43 6d 64 20 7d DictLappendCmd }
0250: 2c 0a 20 20 20 20 7b 22 6d 65 72 67 65 22 2c 09 ,. {"merge",.
0260: 44 69 63 74 4d 65 72 67 65 43 6d 64 20 7d 2c 0a DictMergeCmd },.
0270: 20 20 20 20 7b 22 72 65 6d 6f 76 65 22 2c 09 44 {"remove",.D
0280: 69 63 74 52 65 6d 6f 76 65 43 6d 64 20 7d 2c 0a ictRemoveCmd },.
0290: 20 20 20 20 7b 22 72 65 70 6c 61 63 65 22 2c 09 {"replace",.
02a0: 44 69 63 74 52 65 70 6c 61 63 65 43 6d 64 20 7d DictReplaceCmd }
02b0: 2c 0a 20 20 20 20 7b 22 73 65 74 22 2c 09 44 69 ,. {"set",.Di
02c0: 63 74 53 65 74 43 6d 64 2c 09 54 63 6c 43 6f 6d ctSetCmd,.TclCom
02d0: 70 69 6c 65 44 69 63 74 53 65 74 43 6d 64 20 7d pileDictSetCmd }
02e0: 2c 0a 20 20 20 20 7b 22 73 69 7a 65 22 2c 09 44 ,. {"size",.D
02f0: 69 63 74 53 69 7a 65 43 6d 64 20 7d 2c 0a 20 20 ictSizeCmd },.
0300: 20 20 7b 22 75 6e 73 65 74 22 2c 09 44 69 63 74 {"unset",.Dict
0310: 55 6e 73 65 74 43 6d 64 20 7d 2c 0a 20 20 20 20 UnsetCmd },.
0320: 7b 22 75 70 64 61 74 65 22 2c 09 44 69 63 74 55 {"update",.DictU
0330: 70 64 61 74 65 43 6d 64 2c 09 54 63 6c 43 6f 6d pdateCmd,.TclCom
0340: 70 69 6c 65 44 69 63 74 55 70 64 61 74 65 43 6d pileDictUpdateCm
0350: 64 20 7d 2c 0a 20 20 20 20 7b 22 76 61 6c 75 65 d },. {"value
0360: 73 22 2c 09 44 69 63 74 56 61 6c 75 65 73 43 6d s",.DictValuesCm
0370: 64 20 7d 2c 0a 20 20 20 20 7b 22 77 69 74 68 22 d },. {"with"
0380: 2c 09 44 69 63 74 57 69 74 68 43 6d 64 20 7d 2c ,.DictWithCmd },
0390: 0a 20 20 20 20 7b 4e 55 4c 4c 7d 0a 7d 3b 0a 0a . {NULL}.};..
03a0: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 20 20 /***********.*
03b0: 20 20 20 20 20 20 20 20 2a 0a 2a 20 20 5b 73 6e *.* [sn
03c0: 69 70 5d 20 20 2a 0a 2a 20 20 20 20 20 20 20 20 ip] *.*
03d0: 20 20 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f *.***********/
03e0: 0a 0a 0c 0a 2f 2a 0a 20 2a 2d 2d 2d 2d 2d 2d 2d ..../*. *-------
03f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0400: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0410: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0420: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a ---------------.
0430: 20 2a 0a 20 2a 20 44 69 63 74 47 65 74 57 69 74 *. * DictGetWit
0440: 68 44 65 66 61 75 6c 74 43 6d 64 20 2d 2d 0a 20 hDefaultCmd --.
0450: 2a 0a 20 2a 09 54 68 69 73 20 66 75 6e 63 74 69 *. *.This functi
0460: 6f 6e 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68 on implements th
0470: 65 20 22 64 69 63 74 20 67 65 74 77 69 74 68 64 e "dict getwithd
0480: 65 66 61 75 6c 74 22 20 54 63 6c 20 63 6f 6d 6d efault" Tcl comm
0490: 61 6e 64 2e 20 0a 20 2a 09 53 65 65 20 74 68 65 and. . *.See the
04a0: 20 75 73 65 72 20 64 6f 63 75 6d 65 6e 74 61 74 user documentat
04b0: 69 6f 6e 20 66 6f 72 20 64 65 74 61 69 6c 73 20 ion for details
04c0: 6f 6e 20 77 68 61 74 20 69 74 20 64 6f 65 73 2c on what it does,
04d0: 20 61 6e 64 20 0a 20 2a 09 54 49 50 23 33 3f 3f and . *.TIP#3??
04e0: 20 66 6f 72 20 74 68 65 20 66 6f 72 6d 61 6c 20 for the formal
04f0: 73 70 65 63 69 66 69 63 61 74 69 6f 6e 2e 0a 20 specification..
0500: 2a 0a 20 2a 20 52 65 73 75 6c 74 73 3a 0a 20 2a *. * Results:. *
0510: 09 41 20 73 74 61 6e 64 61 72 64 20 54 63 6c 20 .A standard Tcl
0520: 72 65 73 75 6c 74 2e 0a 20 2a 0a 20 2a 20 53 69 result.. *. * Si
0530: 64 65 20 65 66 66 65 63 74 73 3a 0a 20 2a 09 54 de effects:. *.T
0540: 68 65 20 73 61 6d 65 20 61 73 20 66 6f 72 20 44 he same as for D
0550: 69 63 74 45 78 69 73 74 73 43 6d 64 2e 0a 20 2a ictExistsCmd.. *
0560: 0a 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d . *-------------
0570: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0580: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0590: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
05a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 2a 2f 0a 0a 73 ---------. */..s
05b0: 74 61 74 69 63 20 69 6e 74 0a 44 69 63 74 47 65 tatic int.DictGe
05c0: 74 57 69 74 68 44 65 66 61 75 6c 74 43 6d 64 28 tWithDefaultCmd(
05d0: 0a 20 20 20 20 43 6c 69 65 6e 74 44 61 74 61 20 . ClientData
05e0: 64 75 6d 6d 79 2c 0a 20 20 20 20 54 63 6c 5f 49 dummy,. Tcl_I
05f0: 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 0a 20 nterp *interp,.
0600: 20 20 20 69 6e 74 20 6f 62 6a 63 2c 0a 20 20 20 int objc,.
0610: 20 54 63 6c 5f 4f 62 6a 20 2a 63 6f 6e 73 74 20 Tcl_Obj *const
0620: 2a 6f 62 6a 76 29 0a 7b 0a 20 20 20 20 54 63 6c *objv).{. Tcl
0630: 5f 4f 62 6a 20 2a 64 69 63 74 50 74 72 2c 20 2a _Obj *dictPtr, *
0640: 76 61 6c 75 65 50 74 72 3b 0a 20 20 20 20 69 6e valuePtr;. in
0650: 74 20 72 65 73 75 6c 74 3b 0a 0a 20 20 20 20 69 t result;.. i
0660: 66 20 28 6f 62 6a 63 20 3c 20 34 29 20 7b 0a 09 f (objc < 4) {..
0670: 54 63 6c 5f 57 72 6f 6e 67 4e 75 6d 41 72 67 73 Tcl_WrongNumArgs
0680: 28 69 6e 74 65 72 70 2c 20 31 2c 20 6f 62 6a 76 (interp, 1, objv
0690: 2c 20 0a 09 09 22 64 69 63 74 69 6f 6e 61 72 79 , ..."dictionary
06a0: 20 6b 65 79 20 3f 6b 65 79 20 2e 2e 2e 3f 20 64 key ?key ...? d
06b0: 65 66 61 75 6c 74 22 29 3b 0a 09 72 65 74 75 72 efault");..retur
06c0: 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 20 20 n TCL_ERROR;.
06d0: 20 7d 0a 0a 20 20 20 20 64 69 63 74 50 74 72 20 }.. dictPtr
06e0: 3d 20 54 63 6c 54 72 61 63 65 44 69 63 74 50 61 = TclTraceDictPa
06f0: 74 68 28 69 6e 74 65 72 70 2c 20 6f 62 6a 76 5b th(interp, objv[
0700: 31 5d 2c 20 6f 62 6a 63 2d 34 2c 20 6f 62 6a 76 1], objc-4, objv
0710: 2b 32 2c 0a 09 20 20 20 20 44 49 43 54 5f 50 41 +2,.. DICT_PA
0720: 54 48 5f 45 58 49 53 54 53 29 3b 0a 20 20 20 20 TH_EXISTS);.
0730: 69 66 20 28 64 69 63 74 50 74 72 20 3d 3d 20 4e if (dictPtr == N
0740: 55 4c 4c 29 20 7b 0a 09 72 65 74 75 72 6e 20 54 ULL) {..return T
0750: 43 4c 5f 45 52 52 4f 52 3b 0a 20 20 20 20 7d 0a CL_ERROR;. }.
0760: 20 20 20 20 69 66 20 28 64 69 63 74 50 74 72 20 if (dictPtr
0770: 3d 3d 20 44 49 43 54 5f 50 41 54 48 5f 4e 4f 4e == DICT_PATH_NON
0780: 5f 45 58 49 53 54 45 4e 54 29 20 7b 0a 09 54 63 _EXISTENT) {..Tc
0790: 6c 5f 53 65 74 4f 62 6a 52 65 73 75 6c 74 28 69 l_SetObjResult(i
07a0: 6e 74 65 72 70 2c 20 6f 62 6a 76 5b 6f 62 6a 63 nterp, objv[objc
07b0: 2d 31 5d 29 3b 0a 09 72 65 74 75 72 6e 20 54 43 -1]);..return TC
07c0: 4c 5f 4f 4b 3b 0a 20 20 20 20 7d 0a 20 20 20 20 L_OK;. }.
07d0: 72 65 73 75 6c 74 20 3d 20 54 63 6c 5f 44 69 63 result = Tcl_Dic
07e0: 74 4f 62 6a 47 65 74 28 69 6e 74 65 72 70 2c 20 tObjGet(interp,
07f0: 64 69 63 74 50 74 72 2c 20 6f 62 6a 76 5b 6f 62 dictPtr, objv[ob
0800: 6a 63 2d 32 5d 2c 20 26 76 61 6c 75 65 50 74 72 jc-2], &valuePtr
0810: 29 3b 0a 20 20 20 20 69 66 20 28 72 65 73 75 6c );. if (resul
0820: 74 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 09 t != TCL_OK) {..
0830: 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 20 return result;.
0840: 20 20 20 7d 0a 20 20 20 20 54 63 6c 5f 53 65 74 }. Tcl_Set
0850: 4f 62 6a 52 65 73 75 6c 74 28 69 6e 74 65 72 70 ObjResult(interp
0860: 2c 20 76 61 6c 75 65 50 74 72 20 21 3d 20 4e 55 , valuePtr != NU
0870: 4c 4c 20 3f 20 76 61 6c 75 65 50 74 72 20 3a 20 LL ? valuePtr :
0880: 6f 62 6a 76 5b 6f 62 6a 63 2d 31 5d 29 3b 0a 20 objv[objc-1]);.
0890: 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 4f 4b return TCL_OK
08a0: 3b 0a 7d 0a 0c 0a 0a 0a 2f 2a 0a 0a 4d 61 74 65 ;.}...../*..Mate
08b0: 72 69 61 6c 20 66 6f 72 20 64 69 63 74 2e 74 65 rial for dict.te
08c0: 73 74 3a 0a 0a 74 65 73 74 20 64 69 63 74 2d 32 st:..test dict-2
08d0: 33 2e 31 20 7b 64 69 63 74 20 67 65 74 77 69 74 3.1 {dict getwit
08e0: 68 64 65 66 61 75 6c 74 20 63 6f 6d 6d 61 6e 64 hdefault command
08f0: 7d 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 64 69 } -body {. di
0900: 63 74 20 67 65 74 77 69 74 68 64 65 66 61 75 6c ct getwithdefaul
0910: 74 20 7b 61 20 62 7d 20 61 20 63 0a 7d 20 2d 72 t {a b} a c.} -r
0920: 65 73 75 6c 74 20 62 0a 74 65 73 74 20 64 69 63 esult b.test dic
0930: 74 2d 32 33 2e 32 20 7b 64 69 63 74 20 67 65 74 t-23.2 {dict get
0940: 77 69 74 68 64 65 66 61 75 6c 74 20 63 6f 6d 6d withdefault comm
0950: 61 6e 64 7d 20 2d 62 6f 64 79 20 7b 0a 20 20 20 and} -body {.
0960: 20 64 69 63 74 20 67 65 74 77 69 74 68 64 65 66 dict getwithdef
0970: 61 75 6c 74 20 7b 61 20 62 7d 20 62 20 63 0a 7d ault {a b} b c.}
0980: 20 2d 72 65 73 75 6c 74 20 63 0a 74 65 73 74 20 -result c.test
0990: 64 69 63 74 2d 32 33 2e 33 20 7b 64 69 63 74 20 dict-23.3 {dict
09a0: 67 65 74 77 69 74 68 64 65 66 61 75 6c 74 20 63 getwithdefault c
09b0: 6f 6d 6d 61 6e 64 7d 20 2d 62 6f 64 79 20 7b 0a ommand} -body {.
09c0: 20 20 20 20 64 69 63 74 20 67 65 74 77 69 74 68 dict getwith
09d0: 64 65 66 61 75 6c 74 20 7b 61 20 7b 62 20 63 7d default {a {b c}
09e0: 7d 20 61 20 62 20 64 0a 7d 20 2d 72 65 73 75 6c } a b d.} -resul
09f0: 74 20 63 0a 74 65 73 74 20 64 69 63 74 2d 32 33 t c.test dict-23
0a00: 2e 34 20 7b 64 69 63 74 20 67 65 74 77 69 74 68 .4 {dict getwith
0a10: 64 65 66 61 75 6c 74 20 63 6f 6d 6d 61 6e 64 7d default command}
0a20: 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 64 69 63 -body {. dic
0a30: 74 20 67 65 74 77 69 74 68 64 65 66 61 75 6c 74 t getwithdefault
0a40: 20 7b 61 20 7b 62 20 63 7d 7d 20 61 20 63 20 64 {a {b c}} a c d
0a50: 0a 7d 20 2d 72 65 73 75 6c 74 20 64 0a 74 65 73 .} -result d.tes
0a60: 74 20 64 69 63 74 2d 32 33 2e 35 20 7b 64 69 63 t dict-23.5 {dic
0a70: 74 20 67 65 74 77 69 74 68 64 65 66 61 75 6c 74 t getwithdefault
0a80: 20 63 6f 6d 6d 61 6e 64 7d 20 2d 62 6f 64 79 20 command} -body
0a90: 7b 0a 20 20 20 20 64 69 63 74 20 67 65 74 77 69 {. dict getwi
0aa0: 74 68 64 65 66 61 75 6c 74 20 7b 61 20 7b 62 20 thdefault {a {b
0ab0: 63 7d 7d 20 62 20 63 20 64 0a 7d 20 2d 72 65 73 c}} b c d.} -res
0ac0: 75 6c 74 20 64 0a 74 65 73 74 20 64 69 63 74 2d ult d.test dict-
0ad0: 32 33 2e 36 20 7b 64 69 63 74 20 67 65 74 77 69 23.6 {dict getwi
0ae0: 74 68 64 65 66 61 75 6c 74 20 63 6f 6d 6d 61 6e thdefault comman
0af0: 64 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 d} -returnCodes
0b00: 65 72 72 6f 72 20 2d 62 6f 64 79 20 7b 0a 20 20 error -body {.
0b10: 20 20 64 69 63 74 20 67 65 74 77 69 74 68 64 65 dict getwithde
0b20: 66 61 75 6c 74 20 7b 61 20 7b 62 20 63 20 64 7d fault {a {b c d}
0b30: 7d 20 61 20 62 20 64 0a 7d 20 2d 72 65 73 75 6c } a b d.} -resul
0b40: 74 20 7b 6d 69 73 73 69 6e 67 20 76 61 6c 75 65 t {missing value
0b50: 20 74 6f 20 67 6f 20 77 69 74 68 20 6b 65 79 7d to go with key}
0b60: 0a 74 65 73 74 20 64 69 63 74 2d 32 33 2e 37 20 .test dict-23.7
0b70: 7b 64 69 63 74 20 67 65 74 77 69 74 68 64 65 66 {dict getwithdef
0b80: 61 75 6c 74 20 63 6f 6d 6d 61 6e 64 7d 20 2d 72 ault command} -r
0b90: 65 74 75 72 6e 43 6f 64 65 73 20 65 72 72 6f 72 eturnCodes error
0ba0: 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 64 69 63 -body {. dic
0bb0: 74 20 67 65 74 77 69 74 68 64 65 66 61 75 6c 74 t getwithdefault
0bc0: 0a 7d 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e .} -result {wron
0bd0: 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 g # args: should
0be0: 20 62 65 5c 0a 20 20 20 20 22 64 69 63 74 20 67 be\. "dict g
0bf0: 65 74 77 69 74 68 64 65 66 61 75 6c 74 20 64 69 etwithdefault di
0c00: 63 74 69 6f 6e 61 72 79 20 6b 65 79 20 3f 6b 65 ctionary key ?ke
0c10: 79 20 2e 2e 2e 3f 20 64 65 66 61 75 6c 74 22 7d y ...? default"}
0c20: 0a 74 65 73 74 20 64 69 63 74 2d 32 33 2e 38 20 .test dict-23.8
0c30: 7b 64 69 63 74 20 67 65 74 77 69 74 68 64 65 66 {dict getwithdef
0c40: 61 75 6c 74 20 63 6f 6d 6d 61 6e 64 7d 20 2d 72 ault command} -r
0c50: 65 74 75 72 6e 43 6f 64 65 73 20 65 72 72 6f 72 eturnCodes error
0c60: 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 64 69 63 -body {. dic
0c70: 74 20 67 65 74 77 69 74 68 64 65 66 61 75 6c 74 t getwithdefault
0c80: 20 7b 7d 0a 7d 20 2d 72 65 73 75 6c 74 20 7b 77 {}.} -result {w
0c90: 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f rong # args: sho
0ca0: 75 6c 64 20 62 65 5c 0a 20 20 20 20 22 64 69 63 uld be\. "dic
0cb0: 74 20 67 65 74 77 69 74 68 64 65 66 61 75 6c 74 t getwithdefault
0cc0: 20 64 69 63 74 69 6f 6e 61 72 79 20 6b 65 79 20 dictionary key
0cd0: 3f 6b 65 79 20 2e 2e 2e 3f 20 64 65 66 61 75 6c ?key ...? defaul
0ce0: 74 22 7d 0a 0a 0a 2a 2f t"}...*/