How do I list the Protocols an Object Conforms to?
<p>Using the Objective-C runtime, I can get a list of all of the <code>@objc</code> protocols an object conforms to:</p>

<pre><code>let obj = NSObject()

var pc: UInt32 = 0
let plist = class_copyProtocolList(object_getClass(obj), &amp;pc)

print("\(obj.dynamicType) conforms to \(pc) protocols")

for i in 0 ..&lt; Int(pc) {
    print(String(format: "Protocol #%d: %s", arguments: [i, protocol_getName(plist[i])]))
}
</code></pre>

<p>or all of the Objective-C protocols loaded by the runtime:</p>

<pre><code>var allProtocolCount: UInt32 = 0

let protocols = objc_copyProtocolList(&amp;allProtocolCount)

print("\(allProtocolCount) total protocols")

for i in 0 ..&lt; Int(allProtocolCount) {
    print(String(format: "Protocol #%d: %s", arguments: [i, protocol_getName(protocols[i])]))
}
</code></pre>

<p>But neither of these list any Swift protocols:</p>

<pre><code>func == (lhs: MyClass, rhs: MyClass) -&gt; Bool {
    return lhs.value == rhs.value
}

class MyClass: Equatable, Hashable {

    var value: Int
    var hashValue: Int {
        return value
    }

    init(value: Int) {
        self.value = value
    }
}

var count: UInt32 = 0;

let strProtocols = class_copyProtocolList(MyClass.self, &amp;count) // 0x0000000000000000
</code></pre>

<p><code>strProtocols</code> is 0 when I would expect it to return <code>sizeof(Protocol) * 2</code> (since <code>MyClass</code> conforms to <code>Equatable</code> and <code>Hashable</code>).</p>

<p>Is there an interface exposed by the runtime to get a list of protocols an object conforms to?</p>