001 package org.bridj.objc;
002 import org.bridj.*;
003 import static org.bridj.Pointer.*;
004 import static org.bridj.objc.ObjectiveCRuntime.*;
005
006 public class SEL extends TypedPointer {
007 public SEL(long peer) { super(peer); }
008 public SEL(Pointer<?> ptr) { super(ptr); }
009
010 public static SEL valueOf(String name) {
011 return sel_registerName(pointerToCString(name));
012 }
013
014 protected volatile String name;
015 public String getName() {
016 if (name == null)
017 name = sel_getName(this).getCString();
018 return name;
019 }
020 public String toString() {
021 return "@selector(" + getName() + ")";
022 }
023 public boolean equals(Object o) {
024 if (!(o instanceof SEL))
025 return false;
026 return getName().equals(((SEL)o).getName());
027 }
028 public int hashCode() {
029 return getName().hashCode();
030 }
031 }
032