あなたは誰ですか?

JavaとC♯にはオブジェクトの型を調べる演算子があります。Javaでは"instanceof"、C♯では"is"という演算子がこれに該当します。例えばこのようにして使います。

void add(Component comp) {
  if (comp instanceof Label) {
    Label l = (Label)comp;
     :
  } else if (comp instanceof Button) {
    Button b = (Button)comp;
     :
  }
}

BayGUIではこれを以下のようにして実現できます。

void add(Component* comp) {
  if (comp->instanceof(baygui_awt_Label)) {
    Label* l = (Label*)comp;
     :
  } else if (comp->instanceof(baygui_awt_Button)) {
    Button* b = (Button*)comp;
     :
  }
}

以下のような使い方にも対応しています。

Label l;
bool b = false;
b = l.instanceof(baygui_awt_Label); // true
b = l.instanceof(baygui_awt_Component); // true
b = l.instanceof(baygui_lang_Object); // true
b = l.instanceof(baygui_awt_Button); // false

ちなみに文字列の比較は以下のようにします。

String s = "hoge";
bool b = false;
b = s.equals("hoge"); // true
b = s.startsWith("ho"); // true
b = s.endsWith("ge"); // true
b = s.equals("fuga"); // false