51 cb::shared_ptr<GDBWatch> MakeWatch(
wxString const &symbol,
wxString const &value)
53 cb::shared_ptr<GDBWatch> w(
new GDBWatch(symbol));
63 CHECK_EQUAL(
wxT(
"a=\"5\""), w);
72 CHECK_EQUAL(
wxT(
"a= {b=\"5\",c=\"6\"}"), *w);
75 TEST(SimpleChildrenValue)
78 w->SetValue(
wxT(
"\"value\""));
82 CHECK_EQUAL(
wxT(
"a=\"value\" {b=\"5\",c=\"6\"}"), *w);
94 c = cb::shared_ptr<GDBWatch>(
new GDBWatch(
wxT(
"c")));
99 CHECK_EQUAL(
wxT(
"a= {b= {b1=\"5\",b2=\"6\"},c= {c1=\"5\",c2=\"6\"}}"), *w);
102 TEST(ComplexChildrenValue)
104 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"a")));
105 w->SetValue(
wxT(
"\"valueA\""));
106 cb::shared_ptr<GDBWatch> c(
new GDBWatch(
wxT(
"b")));
107 c->SetValue(
wxT(
"\"valueB\""));
112 c = cb::shared_ptr<GDBWatch>(
new GDBWatch(
wxT(
"c")));
113 c->SetValue(
wxT(
"\"valueC\""));
118 CHECK_EQUAL(
wxT(
"a=\"valueA\" {b=\"valueB\" {b1=\"5\",b2=\"6\"},c=\"valueC\" {c1=\"5\",c2=\"6\"}}"), *w);
129 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"a")));
131 CHECK_EQUAL(
wxT(
"a=0x60d088 \"test_test_test2\""), *w);
136 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"cmp")));
138 CHECK_EQUAL(
wxT(
"cmp= {a=5,b=7,c=1,d=2}"), *w);
143 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
145 CHECK_EQUAL(
wxT(
"t= {memberA= {flag=false},memberB= {flag=true}}"), *w);
148 TEST(GlobalEnumMembers1)
150 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
152 CHECK_EQUAL(
wxT(
"t= {a= {test=5,glob=GlobA},b= {test=B::T3}}"), *w);
155 TEST(GlobalEnumMembers2)
157 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
159 CHECK_EQUAL(
wxT(
"t= {a= {glob=GlobA,test=5},b= {test=B::T3}}"), *w);
162 TEST(CurlyBracketChar)
164 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
166 CHECK_EQUAL(
wxT(
"t= {a=1,ch=123 '{'}"), *w);
169 TEST(SingleInheritance)
171 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
173 wxT(
" members of DerivedA:\n c = 5,\n d = 10\n}")));
174 CHECK_EQUAL(
wxT(
"t= {<BaseA>= {a=15,b=20},c=5,d=10}"), *w);
177 TEST(MultipleInheritance)
179 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
181 wxT(
" <BaseB> = {\n a = 25,\n b = 30\n }, \n")
182 wxT(
" members of DerivedAB: \n e = 5,\n f = 10\n}")));
183 CHECK_EQUAL(
wxT(
"t= {<BaseA>= {a=15,b=20},<BaseB>= {a=25,b=30},e=5,f=10}"), *w);
186 TEST(TemplatedInheritance)
188 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
190 CHECK_EQUAL(
wxT(
"s= {VV=0x72dc440}"), *w);
195 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
196 CHECK(
ParseGDBWatchValue(w,
wxT(
"warning: can't find linker symbol for virtual table for `wxString' value\n")
197 wxT(
"warning: found `g_strEmpty' instead\n")
199 wxT(
"warning: can't find linker symbol for virtual table for `wxString' value\n")
200 wxT(
"warning: found `g_strEmpty' instead\n")
201 wxT(
" a = 5,\n b = 10\n }")));
202 CHECK_EQUAL(
wxT(
"t=(type) {a=5,b=10}"), *w);
207 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
209 CHECK_EQUAL(
wxT(
"t= {field= {[0]=<No data fields>}}"), *w);
214 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
216 CHECK_EQUAL(
wxT(
"t= {empty=}"), *w);
221 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
223 CHECK_EQUAL(
wxT(
"t= {[0]=1,[1]=2,[2]=3,[3]=4,[4]=5,[5]=6,[6]=7}"), *w);
228 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
230 CHECK_EQUAL(
wxT(
"t= {[0]= {a=1,b=2},[1]= {a=3,b=5}}"), *w);
233 TEST(StdStringWithCommas)
235 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
237 CHECK_EQUAL(
wxT(
"t= {b=0x3e24e4 \"AAAA,BBBB,CCCC,DDDDD\"}"), *w);
240 TEST(StringWithQuotes)
242 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
244 CHECK_EQUAL(
wxT(
"t= {b=0x3e24e4 \"AAAA,\\\"BBBB\\\",CCCC,DDDDD\"}"), *w);
247 TEST(StringWithQuotedQuotes)
249 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
251 wxT(
", m_pchData = 0x3106c98 L\"\\\"test\\\"\"}, <No data fields>}")));
252 CHECK_EQUAL(
wxT(
"s= {<wxStringBase>= {static npos=18446744073709551615,m_pchData=0x3106c98 L\"\\\"test\\\"\"},[1]=<No data fields>}"), *w);
255 TEST(RepeatingChars0)
257 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
259 CHECK_EQUAL(
wxT(
"t= {c=0x400d90 'A' <repeats 16 times>, \"aa\\\"a\"}"), *w);
262 TEST(RepeatingChars1)
264 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
265 CHECK(
ParseGDBWatchValue(w,
wxT(
"{\n\tc = 0x400d90 'A' <repeats 16 times>, ' ' <repeats 29 times>, \"aabba\"\n}")));
266 CHECK_EQUAL(
wxT(
"t= {c=0x400d90 'A' <repeats 16 times>, ' ' <repeats 29 times>, \"aabba\"}"), *w);
269 TEST(RepeatingChars2)
271 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
272 CHECK(
ParseGDBWatchValue(w,
wxT(
"{\n\tc = 0x400d90 'A' <repeats 16 times>, ' ' <repeats 29 times>, \"aaa\",\n\ta = 5}")));
273 CHECK_EQUAL(
wxT(
"t= {c=0x400d90 'A' <repeats 16 times>, ' ' <repeats 29 times>, \"aaa\",a=5}"), *w);
276 TEST(RepeatingChars3)
278 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
281 wxT(
" ' ' <repeats 29 times>, \\\"aaa\\\"}\"}")));
282 CHECK_EQUAL(
wxT(
"t= {c=0x400dd8 \"{c = 0x400d90 'A' <repeats 16 times>, ' ' <repeats 29 times>, \\\"aaa\\\"}\"}"), *w);
285 TEST(RepeatingChars4)
287 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
289 CHECK_EQUAL(
wxT(
"t= {name=\"bb\", '\\000' <repeats 14 times>}"), *w);
292 TEST(RepeatingChars5)
294 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
295 CHECK(
ParseGDBWatchValue(w,
wxT(
"{\n name = \"bb\", '\\000' <repeats 14 times>, \"aabbccddee\"\n}")));
296 CHECK_EQUAL(
wxT(
"t= {name=\"bb\", '\\000' <repeats 14 times>, \"aabbccddee\"}"), *w);
299 TEST(RepeatingChars6)
301 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
303 wxT(
" name2 = \"bb\", '\\000' <repeats 12 times>, \"aabbccddee\"\n}")));
304 CHECK_EQUAL(
wxT(
"t= {name1=\"aa\", '\\000' <repeats 14 times>,name2=\"bb\",")
305 wxT(
" '\\000' <repeats 12 times>, \"aabbccddee\"}"), *w);
307 TEST(RepeatingChars6_count)
309 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
311 wxT(
" name2 = \"bb\", '\\000' <repeats 12 times>, \"aabbccddee\"\n}")));
312 CHECK_EQUAL(2, w->GetChildCount());
315 TEST(RepeatingChars7)
317 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
318 CHECK(
ParseGDBWatchValue(w,
wxT(
"{\n name = \"bb\", '\\000' <repeats 14 times>, '\\000' <repeats 12 times>\n}")));
319 CHECK_EQUAL(
wxT(
"t= {name=\"bb\", '\\000' <repeats 14 times>, '\\000' <repeats 12 times>}"), *w);
321 TEST(RepeatingChars7_count)
323 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
324 CHECK(
ParseGDBWatchValue(w,
wxT(
"{\n name = \"bb\", '\\000' <repeats 14 times>, '\\000' <repeats 12 times>\n}")));
325 CHECK_EQUAL(1, w->GetChildCount());
328 TEST(RepeatingChars8)
330 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
332 wxT(
" '\\000' <repeats 12 times>, \"aabbccddee\"\n}")));
333 CHECK_EQUAL(
wxT(
"t= {name=\"bb\", '\\000' <repeats 14 times>, \"aabb\",")
334 wxT(
" '\\000' <repeats 12 times>, \"aabbccddee\"}"), *w);
336 TEST(RepeatingChars8_count)
338 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
340 wxT(
" '\\000' <repeats 12 times>, \"aabbccddee\"\n}")));
341 CHECK_EQUAL(1, w->GetChildCount());
345 TEST(RepeatingChars9)
347 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
348 CHECK(
ParseGDBWatchValue(w,
wxT(
"{0x400e90 \"1st\", 0x400e94 '.' <repeats 16 times>, 0x400ea5 \"3th\"}")));
349 CHECK_EQUAL(
wxT(
"t= {[0]=0x400e90 \"1st\",[1]=0x400e94 '.' <repeats 16 times>,[2]=0x400ea5 \"3th\"}"), *w);
351 TEST(RepeatingChars9_count)
353 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
354 CHECK(
ParseGDBWatchValue(w,
wxT(
"{0x400e90 \"1st\", 0x400e94 '.' <repeats 16 times>, 0x400ea5 \"3th\"}")));
355 CHECK_EQUAL(3, w->GetChildCount());
359 TEST(RepeatingChars10)
361 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
362 CHECK(
ParseGDBWatchValue(w,
wxT(
"{0x4080d8 \"1st\", 0x4080dc \"2nd\", '.' <repeats 48 times>, 0x408110 \"3th\"}")));
363 CHECK_EQUAL(
wxT(
"t= {[0]=0x4080d8 \"1st\",[1]=0x4080dc \"2nd\", '.' <repeats 48 times>,[2]=0x408110 \"3th\"}"), *w);
366 TEST(RepeatingChars10_count)
368 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
369 CHECK(
ParseGDBWatchValue(w,
wxT(
"{0x4080d8 \"1st\", 0x4080dc \"2nd\", '.' <repeats 48 times>, 0x408110 \"3th\"}")));
370 CHECK_EQUAL(3, w->GetChildCount());
374 TEST(RepeatingChars11)
376 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
378 wxT(
" \"#\", '&' <repeats 16 times>, 0x4080fc \"3th\"}")));
379 CHECK_EQUAL(
wxT(
"t= {[0]=0x4080d8 \"1st\",[1]=0x4080dc '.' <repeats 14 times>, \"#\", '&' <repeats 16 times>,")
380 wxT(
"[2]=0x4080fc \"3th\"}"), *w);
383 TEST(RepeatingChars11_children_count)
385 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
387 wxT(
" \"#\", '&' <repeats 16 times>, 0x4080fc \"3th\"}"));
388 CHECK_EQUAL(3, w->GetChildCount());
391 TEST(RepeatingChars11_children_name)
393 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
395 wxT(
" \"#\", '&' <repeats 16 times>, 0x4080fc \"3th\"}"));
396 CHECK_EQUAL(
wxT(
"[0]"),
getName(*w->GetChild(0)));
397 CHECK_EQUAL(
wxT(
"[1]"),
getName(*w->GetChild(1)));
398 CHECK_EQUAL(
wxT(
"[2]"),
getName(*w->GetChild(2)));
401 TEST(RepeatingChars12)
403 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
404 CHECK(
ParseGDBWatchValue(w,
wxT(
"{m_pchData = 0x75225a4 L'/' <repeats 12 times>, '/' <repeats 43 times>}")));
405 CHECK_EQUAL(
wxT(
"t= {m_pchData=0x75225a4 L'/' <repeats 12 times>, '/' <repeats 43 times>}"), *w);
408 TEST(RepeatingChars13)
410 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"t")));
411 CHECK(
ParseGDBWatchValue(w,
wxT(
"{<wxStringBase> = {static npos = 4294967295, m_pchData = 0x75225a4 L'/' ")
412 wxT(
"<repeats 43 times>, \"\\n//\\n\", '/' <repeats 43 times>}, <No data fields>}")));
413 CHECK_EQUAL(
wxT(
"t= {<wxStringBase>= {static npos=4294967295,m_pchData=0x75225a4 L'/' ")
414 wxT(
"<repeats 43 times>, \"\\n//\\n\", '/' <repeats 43 times>},[1]=<No data fields>}"),
420 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
422 CHECK_EQUAL(
wxT(
"s= {m_impl=L\"st\",m_test= {a=5}}"), *w);
427 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
429 CHECK_EQUAL(
wxT(
"s= {m_impl=L's',m_test= {a=5}}"), *w);
432 TEST(ShortenedString)
434 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
436 CHECK_EQUAL(1, w->GetChildCount());
437 CHECK_EQUAL(
wxT(
"s= {m_impl=L\"Created: \"...}"), *w);
440 TEST(ShortenedStringRepeatedChars)
442 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
444 CHECK_EQUAL(1, w->GetChildCount());
445 CHECK_EQUAL(
wxT(
"s= {m_impl=L\"/\", '*' <repeats 63 times>, \"Created: \"...}"), *w);
450 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"*s")));
453 CHECK_EQUAL(
wxT(
"*s= {number=29,real=36}"), *w);
458 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
461 CHECK_EQUAL(
wxT(
"s= {number=29,real=36}"), *w);
464 TEST(StructSummarySimple)
466 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
468 CHECK_EQUAL(
wxT(
"s=test {a=5}"), *w);
471 TEST(StructStaticOptimized)
473 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
475 CHECK_EQUAL(
wxT(
"s= {static mVar=<optimized out>,mValue=5}"), *w);
478 TEST(StructStaticOptimized_children_count)
480 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
482 CHECK_EQUAL(2,w->GetChildCount());
485 TEST(StructStaticOptimized_children_name)
487 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
489 CHECK_EQUAL(
wxT(
"static mVar"),
getName(*w->GetChild(0)));
490 CHECK_EQUAL(
wxT(
"mValue"),
getName(*w->GetChild(1)));
494 TEST(StructSummaryComplex)
496 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
498 CHECK_EQUAL(
wxT(
"s= {a=test2, test3 {b=5}}"), *w);
501 TEST(PythonSTLVector)
503 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
505 CHECK_EQUAL(
wxT(
"s=std::vector of length 4, capacity 4 {[0]=0,[1]=1,[2]=2,[3]=3}"), *w);
510 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
511 CHECK(
ParseGDBWatchValue(w,
wxT(
"std::map with 20 elements = {[\"BEGIN_EVENT_TABLE\"] = \"-END_EVENT_TABLE\"}")));
512 CHECK_EQUAL(
wxT(
"s=std::map with 20 elements {[\"BEGIN_EVENT_TABLE\"]=\"-END_EVENT_TABLE\"}"), *w);
515 TEST(PythonSTLMapVector)
517 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
519 wxT(
"[\"test1\"] = std::vector of length 1, capacity 2 = {0, 1, 2, 3}, ")
520 wxT(
"[\"test2\"] = std::vector of length 2, capacity 3 = {0, 1, 2, 3}, ")
521 wxT(
"[\"test3\"] = std::vector of length 3, capacity 4 = {0, 1, 2, 3}}")));
522 CHECK_EQUAL(
wxT(
"s=std::map with 3 elements {[\"test1\"]=std::vector of length 1, capacity 2 {[0]=0,[1]=1,[2]=2,[3]=3},")
523 wxT(
"[\"test2\"]=std::vector of length 2, capacity 3 {[0]=0,[1]=1,[2]=2,[3]=3},")
524 wxT(
"[\"test3\"]=std::vector of length 3, capacity 4 {[0]=0,[1]=1,[2]=2,[3]=3}}"), *w);
529 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
531 wxT(
" b = vector(4,5,6) = {x = 4,y = 5,z = 6}\n}")));
532 CHECK_EQUAL(
wxT(
"s= {a=vector(1,2,3) {x=1,y=2,z=3},b=vector(4,5,6) {x=4,y=5,z=6}}"), *w);
537 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
539 wxT(
" b = {x = 4,y = 5,z = 6}\n}")));
540 CHECK_EQUAL(
wxT(
"s= {a=vector(1,2,3) {x=1,y=2,z=3},b= {x=4,y=5,z=6}}"), *w);
543 TEST(PythonVector_count)
545 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
546 ParseGDBWatchValue(w,
wxT(
"{\n a = vector(1,2,3) = {x = 1,y = 2,z = 3},\n b = vector(4,5,6) = {x = 4,y = 5,z = 6}\n}"));
547 CHECK_EQUAL(2, w->GetChildCount());
550 TEST(PythonNegativeInt)
552 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
554 CHECK_EQUAL(
wxT(
"s= {a=-134225496,b=12}"), *w);
557 TEST(PythonSTLVectorEmptyInStruct)
559 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
561 CHECK_EQUAL(
wxT(
"s= {vec=vector size 0, capacity 0}"), *w);
564 TEST(PythonSTLVectorEmptyInStruct2)
566 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
567 CHECK(
ParseGDBWatchValue(w,
wxT(
"{vec1 = vector size 0, capacity 0, vec2 = vector size 0, capacity 1}")));
568 CHECK_EQUAL(
wxT(
"s= {vec1=vector size 0, capacity 0,vec2=vector size 0, capacity 1}"), *w);
571 TEST(PythonSTLVectorEmptyInStruct2_count)
573 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
575 CHECK_EQUAL(2, w->GetChildCount());
578 TEST(PythonSTLVectorEmptyInStruct3)
580 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
581 CHECK(
ParseGDBWatchValue(w,
wxT(
"{vec1 = vector size 0, capacity 0, vec2 = vector size 0, capacity 1,")
582 wxT(
"vec3 = vector size 0, capacity 2}")));
583 CHECK_EQUAL(
wxT(
"s= {vec1=vector size 0, capacity 0,vec2=vector size 0, capacity 1,")
584 wxT(
"vec3=vector size 0, capacity 2}"), *w);
587 TEST(PythonSTLVectorEmptyInStruct3_count)
589 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
590 CHECK(
ParseGDBWatchValue(w,
wxT(
"{vec1 = vector size 0, capacity 0, vec2 = vector size 0, capacity 1,")
591 wxT(
"vec3 = vector size 0, capacity 2}")));
592 CHECK_EQUAL(3, w->GetChildCount());
595 TEST(Python3dVectorInfiniteLoop)
597 cb::shared_ptr<GDBWatch> w(
new GDBWatch(
wxT(
"s")));
599 wxT(
"{x = 5.7, y = 2.9, z = -8.4}}")));
600 CHECK_EQUAL(2, w->GetChildCount());
601 CHECK_EQUAL(
wxT(
"s= {double=-3.18,vector=(x=5.7, y=2.9, z=-8.4) {x=5.7,y=2.9,z=-8.4}}"), *w);
cb::shared_ptr< cbWatch > GetChild(int index)
virtual void GetSymbol(wxString &symbol) const =0
bool ParseGDBWatchValue(cb::shared_ptr< GDBWatch > watch, wxString const &value, int &start, int length)
int GetChildCount() const
std::ostream & operator<<(std::ostream &stream, cbWatch const &w)
wxString WatchToString(cbWatch const &watch)
static void AddChild(cb::shared_ptr< cbWatch > parent, cb::shared_ptr< cbWatch > watch)
virtual void GetValue(wxString &value) const =0
wxString getName(cbWatch const &watch)
bool operator==(wxString const &s, cbWatch const &w)
virtual bool SetValue(const wxString &value)