System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 276bf187210e5c07584adbd319a2a19eaabd71f8:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52 6f   * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f  bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65  bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 20 0d 0a  soft.com).. * ..
00b0: 20 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74   * Released to t
00c0: 68 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e  he public domain
00d0: 2c 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77  , use at your ow
00e0: 6e 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a  n risk!.. ******
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2a 2a 2f 0d 0a 0d 0a 75 73 69 6e 67 20 53 79 73  **/....using Sys
0130: 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e  tem.Collections.
0140: 47 65 6e 65 72 69 63 3b 0d 0a 75 73 69 6e 67 20  Generic;..using 
0150: 53 79 73 74 65 6d 2e 54 65 78 74 3b 0d 0a 75 73  System.Text;..us
0160: 69 6e 67 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65  ing System.Colle
0170: 63 74 69 6f 6e 73 2e 4f 62 6a 65 63 74 4d 6f 64  ctions.ObjectMod
0180: 65 6c 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 65  el;..using Syste
0190: 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e 73 3b 0d 0a  m.Collections;..
01a0: 0d 0a 23 69 66 20 4e 45 54 5f 34 30 20 7c 7c 20  ..#if NET_40 || 
01b0: 4e 45 54 5f 34 35 20 7c 7c 20 4e 45 54 5f 34 35  NET_45 || NET_45
01c0: 31 20 7c 7c 20 4e 45 54 5f 34 35 32 20 7c 7c 20  1 || NET_452 || 
01d0: 4e 45 54 5f 34 36 20 7c 7c 20 4e 45 54 5f 34 36  NET_46 || NET_46
01e0: 31 20 7c 7c 20 4e 45 54 5f 34 36 32 20 7c 7c 20  1 || NET_462 || 
01f0: 4e 45 54 5f 34 37 20 7c 7c 20 4e 45 54 5f 34 37  NET_47 || NET_47
0200: 31 20 7c 7c 20 4e 45 54 5f 34 37 32 0d 0a 75 73  1 || NET_472..us
0210: 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e 74 69  ing System.Runti
0220: 6d 65 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 23  me;..#endif....#
0230: 69 66 20 55 53 45 5f 45 4e 54 49 54 59 5f 46 52  if USE_ENTITY_FR
0240: 41 4d 45 57 4f 52 4b 5f 36 0d 0a 6e 61 6d 65 73  AMEWORK_6..names
0250: 70 61 63 65 20 53 79 73 74 65 6d 2e 44 61 74 61  pace System.Data
0260: 2e 53 51 4c 69 74 65 2e 45 46 36 0d 0a 23 65 6c  .SQLite.EF6..#el
0270: 73 65 0d 0a 6e 61 6d 65 73 70 61 63 65 20 53 79  se..namespace Sy
0280: 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
0290: 2e 4c 69 6e 71 0d 0a 23 65 6e 64 69 66 0d 0a 7b  .Linq..#endif..{
02a0: 0d 0a 09 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c  ...internal seal
02b0: 65 64 20 63 6c 61 73 73 20 4b 65 79 54 6f 4c 69  ed class KeyToLi
02c0: 73 74 4d 61 70 3c 54 4b 65 79 2c 20 54 56 61 6c  stMap<TKey, TVal
02d0: 75 65 3e 20 3a 20 49 6e 74 65 72 6e 61 6c 42 61  ue> : InternalBa
02e0: 73 65 0d 0a 09 7b 0d 0a 09 09 2f 2f 20 46 69 65  se...{....// Fie
02f0: 6c 64 73 0d 0a 09 09 70 72 69 76 61 74 65 20 44  lds....private D
0300: 69 63 74 69 6f 6e 61 72 79 3c 54 4b 65 79 2c 20  ictionary<TKey, 
0310: 4c 69 73 74 3c 54 56 61 6c 75 65 3e 3e 20 6d 5f  List<TValue>> m_
0320: 6d 61 70 3b 0d 0a 0d 0a 09 09 2f 2f 20 4d 65 74  map;......// Met
0330: 68 6f 64 73 0d 0a 09 09 69 6e 74 65 72 6e 61 6c  hods....internal
0340: 20 4b 65 79 54 6f 4c 69 73 74 4d 61 70 28 49 45   KeyToListMap(IE
0350: 71 75 61 6c 69 74 79 43 6f 6d 70 61 72 65 72 3c  qualityComparer<
0360: 54 4b 65 79 3e 20 63 6f 6d 70 61 72 65 72 29 0d  TKey> comparer).
0370: 0a 09 09 7b 0d 0a 09 09 09 74 68 69 73 2e 6d 5f  ...{.....this.m_
0380: 6d 61 70 20 3d 20 6e 65 77 20 44 69 63 74 69 6f  map = new Dictio
0390: 6e 61 72 79 3c 54 4b 65 79 2c 20 4c 69 73 74 3c  nary<TKey, List<
03a0: 54 56 61 6c 75 65 3e 3e 28 63 6f 6d 70 61 72 65  TValue>>(compare
03b0: 72 29 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 69 6e  r);....}......in
03c0: 74 65 72 6e 61 6c 20 76 6f 69 64 20 41 64 64 28  ternal void Add(
03d0: 54 4b 65 79 20 6b 65 79 2c 20 54 56 61 6c 75 65  TKey key, TValue
03e0: 20 76 61 6c 75 65 29 0d 0a 09 09 7b 0d 0a 09 09   value)....{....
03f0: 09 4c 69 73 74 3c 54 56 61 6c 75 65 3e 20 6c 69  .List<TValue> li
0400: 73 74 3b 0d 0a 09 09 09 69 66 20 28 21 74 68 69  st;.....if (!thi
0410: 73 2e 6d 5f 6d 61 70 2e 54 72 79 47 65 74 56 61  s.m_map.TryGetVa
0420: 6c 75 65 28 6b 65 79 2c 20 6f 75 74 20 6c 69 73  lue(key, out lis
0430: 74 29 29 0d 0a 09 09 09 7b 0d 0a 09 09 09 09 6c  t)).....{......l
0440: 69 73 74 20 3d 20 6e 65 77 20 4c 69 73 74 3c 54  ist = new List<T
0450: 56 61 6c 75 65 3e 28 29 3b 0d 0a 09 09 09 09 74  Value>();......t
0460: 68 69 73 2e 6d 5f 6d 61 70 5b 6b 65 79 5d 20 3d  his.m_map[key] =
0470: 20 6c 69 73 74 3b 0d 0a 09 09 09 7d 0d 0a 09 09   list;.....}....
0480: 09 6c 69 73 74 2e 41 64 64 28 76 61 6c 75 65 29  .list.Add(value)
0490: 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 69 6e 74 65  ;....}......inte
04a0: 72 6e 61 6c 20 76 6f 69 64 20 41 64 64 52 61 6e  rnal void AddRan
04b0: 67 65 28 54 4b 65 79 20 6b 65 79 2c 20 49 45 6e  ge(TKey key, IEn
04c0: 75 6d 65 72 61 62 6c 65 3c 54 56 61 6c 75 65 3e  umerable<TValue>
04d0: 20 76 61 6c 75 65 73 29 0d 0a 09 09 7b 0d 0a 09   values)....{...
04e0: 09 09 66 6f 72 65 61 63 68 20 28 54 56 61 6c 75  ..foreach (TValu
04f0: 65 20 6c 6f 63 61 6c 20 69 6e 20 76 61 6c 75 65  e local in value
0500: 73 29 0d 0a 09 09 09 7b 0d 0a 09 09 09 09 74 68  s).....{......th
0510: 69 73 2e 41 64 64 28 6b 65 79 2c 20 6c 6f 63 61  is.Add(key, loca
0520: 6c 29 3b 0d 0a 09 09 09 7d 0d 0a 09 09 7d 0d 0a  l);.....}....}..
0530: 0d 0a 09 09 69 6e 74 65 72 6e 61 6c 20 62 6f 6f  ....internal boo
0540: 6c 20 43 6f 6e 74 61 69 6e 73 4b 65 79 28 54 4b  l ContainsKey(TK
0550: 65 79 20 6b 65 79 29 0d 0a 09 09 7b 0d 0a 09 09  ey key)....{....
0560: 09 72 65 74 75 72 6e 20 74 68 69 73 2e 6d 5f 6d  .return this.m_m
0570: 61 70 2e 43 6f 6e 74 61 69 6e 73 4b 65 79 28 6b  ap.ContainsKey(k
0580: 65 79 29 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 69  ey);....}......i
0590: 6e 74 65 72 6e 61 6c 20 49 45 6e 75 6d 65 72 61  nternal IEnumera
05a0: 62 6c 65 3c 54 56 61 6c 75 65 3e 20 45 6e 75 6d  ble<TValue> Enum
05b0: 65 72 61 74 65 56 61 6c 75 65 73 28 54 4b 65 79  erateValues(TKey
05c0: 20 6b 65 79 29 0d 0a 09 09 7b 0d 0a 09 09 09 4c   key)....{.....L
05d0: 69 73 74 3c 54 56 61 6c 75 65 3e 20 76 61 6c 75  ist<TValue> valu
05e0: 65 73 3b 0d 0a 09 09 09 69 66 20 28 6d 5f 6d 61  es;.....if (m_ma
05f0: 70 2e 54 72 79 47 65 74 56 61 6c 75 65 28 6b 65  p.TryGetValue(ke
0600: 79 2c 20 6f 75 74 20 76 61 6c 75 65 73 29 29 0d  y, out values)).
0610: 0a 09 09 09 7b 0d 0a 09 09 09 09 66 6f 72 65 61  ....{......forea
0620: 63 68 20 28 54 56 61 6c 75 65 20 76 61 6c 75 65  ch (TValue value
0630: 20 69 6e 20 76 61 6c 75 65 73 29 20 7b 20 79 69   in values) { yi
0640: 65 6c 64 20 72 65 74 75 72 6e 20 76 61 6c 75 65  eld return value
0650: 3b 20 7d 0d 0a 09 09 09 7d 0d 0a 09 09 7d 0d 0a  ; }.....}....}..
0660: 0d 0a 09 09 69 6e 74 65 72 6e 61 6c 20 52 65 61  ....internal Rea
0670: 64 4f 6e 6c 79 43 6f 6c 6c 65 63 74 69 6f 6e 3c  dOnlyCollection<
0680: 54 56 61 6c 75 65 3e 20 4c 69 73 74 46 6f 72 4b  TValue> ListForK
0690: 65 79 28 54 4b 65 79 20 6b 65 79 29 0d 0a 09 09  ey(TKey key)....
06a0: 7b 0d 0a 09 09 09 72 65 74 75 72 6e 20 6e 65 77  {.....return new
06b0: 20 52 65 61 64 4f 6e 6c 79 43 6f 6c 6c 65 63 74   ReadOnlyCollect
06c0: 69 6f 6e 3c 54 56 61 6c 75 65 3e 28 74 68 69 73  ion<TValue>(this
06d0: 2e 6d 5f 6d 61 70 5b 6b 65 79 5d 29 3b 0d 0a 09  .m_map[key]);...
06e0: 09 7d 0d 0a 0d 0a 09 09 69 6e 74 65 72 6e 61 6c  .}......internal
06f0: 20 62 6f 6f 6c 20 52 65 6d 6f 76 65 4b 65 79 28   bool RemoveKey(
0700: 54 4b 65 79 20 6b 65 79 29 0d 0a 09 09 7b 0d 0a  TKey key)....{..
0710: 09 09 09 72 65 74 75 72 6e 20 74 68 69 73 2e 6d  ...return this.m
0720: 5f 6d 61 70 2e 52 65 6d 6f 76 65 28 6b 65 79 29  _map.Remove(key)
0730: 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 69 6e 74 65  ;....}......inte
0740: 72 6e 61 6c 20 6f 76 65 72 72 69 64 65 20 76 6f  rnal override vo
0750: 69 64 20 54 6f 43 6f 6d 70 61 63 74 53 74 72 69  id ToCompactStri
0760: 6e 67 28 53 74 72 69 6e 67 42 75 69 6c 64 65 72  ng(StringBuilder
0770: 20 62 75 69 6c 64 65 72 29 0d 0a 09 09 7b 0d 0a   builder)....{..
0780: 09 09 09 66 6f 72 65 61 63 68 20 28 54 4b 65 79  ...foreach (TKey
0790: 20 6c 6f 63 61 6c 20 69 6e 20 74 68 69 73 2e 4b   local in this.K
07a0: 65 79 73 29 0d 0a 09 09 09 7b 0d 0a 09 09 09 09  eys).....{......
07b0: 53 74 72 69 6e 67 55 74 69 6c 2e 46 6f 72 6d 61  StringUtil.Forma
07c0: 74 53 74 72 69 6e 67 42 75 69 6c 64 65 72 28 62  tStringBuilder(b
07d0: 75 69 6c 64 65 72 2c 20 22 7b 30 7d 22 2c 20 6e  uilder, "{0}", n
07e0: 65 77 20 6f 62 6a 65 63 74 5b 5d 20 7b 20 6c 6f  ew object[] { lo
07f0: 63 61 6c 20 7d 29 3b 0d 0a 09 09 09 09 62 75 69  cal });......bui
0800: 6c 64 65 72 2e 41 70 70 65 6e 64 28 22 3a 20 22  lder.Append(": "
0810: 29 3b 0d 0a 09 09 09 09 49 45 6e 75 6d 65 72 61  );......IEnumera
0820: 62 6c 65 3c 54 56 61 6c 75 65 3e 20 6c 69 73 74  ble<TValue> list
0830: 20 3d 20 74 68 69 73 2e 4c 69 73 74 46 6f 72 4b   = this.ListForK
0840: 65 79 28 6c 6f 63 61 6c 29 3b 0d 0a 09 09 09 09  ey(local);......
0850: 53 74 72 69 6e 67 55 74 69 6c 2e 54 6f 53 65 70  StringUtil.ToSep
0860: 61 72 61 74 65 64 53 74 72 69 6e 67 28 62 75 69  aratedString(bui
0870: 6c 64 65 72 2c 20 6c 69 73 74 2c 20 22 2c 22 2c  lder, list, ",",
0880: 20 22 6e 75 6c 6c 22 29 3b 0d 0a 09 09 09 09 62   "null");......b
0890: 75 69 6c 64 65 72 2e 41 70 70 65 6e 64 28 22 3b  uilder.Append(";
08a0: 20 22 29 3b 0d 0a 09 09 09 7d 0d 0a 09 09 7d 0d   ");.....}....}.
08b0: 0a 0d 0a 09 09 69 6e 74 65 72 6e 61 6c 20 62 6f  .....internal bo
08c0: 6f 6c 20 54 72 79 47 65 74 4c 69 73 74 46 6f 72  ol TryGetListFor
08d0: 4b 65 79 28 54 4b 65 79 20 6b 65 79 2c 20 6f 75  Key(TKey key, ou
08e0: 74 20 52 65 61 64 4f 6e 6c 79 43 6f 6c 6c 65 63  t ReadOnlyCollec
08f0: 74 69 6f 6e 3c 54 56 61 6c 75 65 3e 20 76 61 6c  tion<TValue> val
0900: 75 65 43 6f 6c 6c 65 63 74 69 6f 6e 29 0d 0a 09  ueCollection)...
0910: 09 7b 0d 0a 09 09 09 4c 69 73 74 3c 54 56 61 6c  .{.....List<TVal
0920: 75 65 3e 20 6c 69 73 74 3b 0d 0a 09 09 09 76 61  ue> list;.....va
0930: 6c 75 65 43 6f 6c 6c 65 63 74 69 6f 6e 20 3d 20  lueCollection = 
0940: 6e 75 6c 6c 3b 0d 0a 09 09 09 69 66 20 28 74 68  null;.....if (th
0950: 69 73 2e 6d 5f 6d 61 70 2e 54 72 79 47 65 74 56  is.m_map.TryGetV
0960: 61 6c 75 65 28 6b 65 79 2c 20 6f 75 74 20 6c 69  alue(key, out li
0970: 73 74 29 29 0d 0a 09 09 09 7b 0d 0a 09 09 09 09  st)).....{......
0980: 76 61 6c 75 65 43 6f 6c 6c 65 63 74 69 6f 6e 20  valueCollection 
0990: 3d 20 6e 65 77 20 52 65 61 64 4f 6e 6c 79 43 6f  = new ReadOnlyCo
09a0: 6c 6c 65 63 74 69 6f 6e 3c 54 56 61 6c 75 65 3e  llection<TValue>
09b0: 28 6c 69 73 74 29 3b 0d 0a 09 09 09 09 72 65 74  (list);......ret
09c0: 75 72 6e 20 74 72 75 65 3b 0d 0a 09 09 09 7d 0d  urn true;.....}.
09d0: 0a 09 09 09 72 65 74 75 72 6e 20 66 61 6c 73 65  ....return false
09e0: 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 2f 2f 20 50  ;....}......// P
09f0: 72 6f 70 65 72 74 69 65 73 0d 0a 09 09 69 6e 74  roperties....int
0a00: 65 72 6e 61 6c 20 49 45 6e 75 6d 65 72 61 62 6c  ernal IEnumerabl
0a10: 65 3c 54 56 61 6c 75 65 3e 20 41 6c 6c 56 61 6c  e<TValue> AllVal
0a20: 75 65 73 0d 0a 09 09 7b 0d 0a 09 09 09 67 65 74  ues....{.....get
0a30: 0d 0a 09 09 09 7b 0d 0a 09 09 09 09 66 6f 72 65  .....{......fore
0a40: 61 63 68 20 28 54 4b 65 79 20 6b 65 79 20 69 6e  ach (TKey key in
0a50: 20 4b 65 79 73 29 0d 0a 09 09 09 09 7b 0d 0a 09   Keys)......{...
0a60: 09 09 09 09 66 6f 72 65 61 63 68 20 28 54 56 61  ....foreach (TVa
0a70: 6c 75 65 20 76 61 6c 75 65 20 69 6e 20 4c 69 73  lue value in Lis
0a80: 74 46 6f 72 4b 65 79 28 6b 65 79 29 29 0d 0a 09  tForKey(key))...
0a90: 09 09 09 09 7b 0d 0a 09 09 09 09 09 09 79 69 65  ....{........yie
0aa0: 6c 64 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b  ld return value;
0ab0: 0d 0a 09 09 09 09 09 7d 0d 0a 09 09 09 09 7d 0d  .......}......}.
0ac0: 0a 09 09 09 7d 0d 0a 09 09 7d 0d 0a 0d 0a 09 09  ....}....}......
0ad0: 69 6e 74 65 72 6e 61 6c 20 49 45 6e 75 6d 65 72  internal IEnumer
0ae0: 61 62 6c 65 3c 54 4b 65 79 3e 20 4b 65 79 73 0d  able<TKey> Keys.
0af0: 0a 09 09 7b 0d 0a 09 09 09 67 65 74 0d 0a 09 09  ...{.....get....
0b00: 09 7b 0d 0a 09 09 09 09 72 65 74 75 72 6e 20 74  .{......return t
0b10: 68 69 73 2e 6d 5f 6d 61 70 2e 4b 65 79 73 3b 0d  his.m_map.Keys;.
0b20: 0a 09 09 09 7d 0d 0a 09 09 7d 0d 0a 0d 0a 09 09  ....}....}......
0b30: 69 6e 74 65 72 6e 61 6c 20 49 45 6e 75 6d 65 72  internal IEnumer
0b40: 61 62 6c 65 3c 4b 65 79 56 61 6c 75 65 50 61 69  able<KeyValuePai
0b50: 72 3c 54 4b 65 79 2c 20 4c 69 73 74 3c 54 56 61  r<TKey, List<TVa
0b60: 6c 75 65 3e 3e 3e 20 4b 65 79 56 61 6c 75 65 50  lue>>> KeyValueP
0b70: 61 69 72 73 0d 0a 09 09 7b 0d 0a 23 69 66 20 4e  airs....{..#if N
0b80: 45 54 5f 34 30 20 7c 7c 20 4e 45 54 5f 34 35 20  ET_40 || NET_45 
0b90: 7c 7c 20 4e 45 54 5f 34 35 31 20 7c 7c 20 4e 45  || NET_451 || NE
0ba0: 54 5f 34 35 32 20 7c 7c 20 4e 45 54 5f 34 36 20  T_452 || NET_46 
0bb0: 7c 7c 20 4e 45 54 5f 34 36 31 20 7c 7c 20 4e 45  || NET_461 || NE
0bc0: 54 5f 34 36 32 20 7c 7c 20 4e 45 54 5f 34 37 20  T_462 || NET_47 
0bd0: 7c 7c 20 4e 45 54 5f 34 37 31 20 7c 7c 20 4e 45  || NET_471 || NE
0be0: 54 5f 34 37 32 0d 0a 09 09 09 5b 54 61 72 67 65  T_472.....[Targe
0bf0: 74 65 64 50 61 74 63 68 69 6e 67 4f 70 74 4f 75  tedPatchingOptOu
0c00: 74 28 22 50 65 72 66 6f 72 6d 61 6e 63 65 20 63  t("Performance c
0c10: 72 69 74 69 63 61 6c 20 74 6f 20 69 6e 6c 69 6e  ritical to inlin
0c20: 65 20 74 68 69 73 20 74 79 70 65 20 6f 66 20 6d  e this type of m
0c30: 65 74 68 6f 64 20 61 63 72 6f 73 73 20 4e 47 65  ethod across NGe
0c40: 6e 20 69 6d 61 67 65 20 62 6f 75 6e 64 61 72 69  n image boundari
0c50: 65 73 22 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 09  es")]..#endif...
0c60: 09 09 67 65 74 0d 0a 09 09 09 7b 0d 0a 09 09 09  ..get.....{.....
0c70: 09 72 65 74 75 72 6e 20 74 68 69 73 2e 6d 5f 6d  .return this.m_m
0c80: 61 70 3b 0d 0a 09 09 09 7d 0d 0a 09 09 7d 0d 0a  ap;.....}....}..
0c90: 09 7d 0d 0a 7d 0d 0a                             .}..}..