[swift-dev] Swift C enum Case Mapping

Austin Zheng austinzheng at gmail.com
Sun Jan 10 15:25:28 CST 2016


I spoke too soon, the cases are also defined as values of that type. So, a working version of your code:

extension fe_type : CustomStringConvertible {
  public var description: String {
    switch self {
    case FE_QPSK: return "QPSK"
    case FE_QAM: return "QAM"
    case FE_OFDM: return "OFDM"
    case FE_ATSC: return "ATSC"
    default: fatalError("can't be exhaustive")
    }
  }
}

Best,
Austin

> On Jan 10, 2016, at 1:22 PM, Austin Zheng <austinzheng at gmail.com> wrote:
> 
> Hi Ryan,
> 
> Apologies, I should have been more clear. In Xcode you can alt(?)-click on a type (e.g the 'MyType' in "let a : MyType = 123") in the IDE to pop up a little window that shows you the definition, including the type and some other information. If you're on a Linux box or not using an IDE you probably don't have that option.
> 
> The only methods I see exposed on the Swift imported type are initializers taking a integer raw value, and a 'rawValue' property for getting back out the raw value. Hope that helps.
> 
> Austin
> 
>> On Jan 10, 2016, at 1:18 PM, Ryan Lovelett <swift-dev at ryan.lovelett.me <mailto:swift-dev at ryan.lovelett.me>> wrote:
>> 
>> Austin,
>>  
>> I guess I should say that the `typedef` is coming from a Linux kernel header <http://lxr.free-electrons.com/source/include/linux/dvb/frontend.h?v=3.2>. So I don't think I'm going to be able to add any macros to the definition.
>>  
>> What do you mean about alt-click? Alt click where?
>>  
>> On Sun, Jan 10, 2016, at 04:12 PM, Austin Zheng wrote:
>>> fe_type is being imported as a struct (alt-click 'fe_type' in Swift). I think if you want it to be imported as an enum you need to use the NS_ENUM macro in the definition, which might not be possible in your case.
>>>  
>>> Austin
>>>  
>>>> On Jan 10, 2016, at 1:06 PM, Ryan Lovelett via swift-dev <swift-dev at swift.org <mailto:swift-dev at swift.org>> wrote:
>>>>  
>>>> typedef enum fe_type {
>>>>  FE_QPSK,
>>>>  FE_QAM,
>>>>  FE_OFDM,
>>>>  FE_ATSC
>>>> } fe_type_t;
>>  
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-dev/attachments/20160110/d38194e3/attachment.html>


More information about the swift-dev mailing list