class MyBaseClass {}
class MyDerivedClass : MyBaseClass {}
class OtherClass {}

namespace test;
class MyClass {}
class OtherClass {}

namespace default;

function PrintClassNames(PointerArray pa) {
   Object o;
   trace "\n";
   foreach o in pa {
      stdout "\t";
      String mcn <= o.yacMetaClassName();
      if(mcn != "")
      {
         stdout mcn;
      }
      else
      {
         stdout o.yacClassName();
      }
      stdout "\n";
   }
   trace "\n";
}

PointerArray pa;

TKS.findClassesByPrefix("yac", null) => pa;
stdout "all C++ classes: ";
PrintClassNames(pa);

TKS.findClassesByPrefix(null, null) => pa;
stdout "all classes: ";
PrintClassNames(pa);

TKS.findClassesByPrefix(null, "My") => pa;
stdout "all classes starting with \"My\": ";
PrintClassNames(pa);

TKS.findClassesByPrefix("test", null) => pa;
trace "all classes in namespace \"test\": ";
PrintClassNames(pa);

TKS.findClassesByPrefix("test", "My") => pa;
trace "all classes starting with \"My\" in namespace \"test\": ";
PrintClassNames(pa);