Tcl Source Code

Hex Artifact Content
Login

Artifact 8b8de311982cb1acf4b89ed3ec1e44d082f6e4e980a0863ff6bfba3a2b89ce9b:

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"}...*/