D言語からObjective-CとCocoaAPIを使いたい

NSArray[NSString]からD言語stringに変換したい

NSImage の imageTypes から扱える画像の種類情報を得たい。

string関係 の API を分離してみました。

サンプルコード

Powered by Prism

img_types/dub.json

{
    "authors": ["hidhok"],
    "description": "A D/Objective-C Cocoa application.",
    "name": "img_types",
    "dflags": ["-L-framework", "-LCocoa"],
    "sourceFiles": ["../cocoa/strings"]
}               
img_types/source/app.d

/**
 *		img_types/source/app.d     Version 0.0.4
 */
module img_types.main;
import core.attribute : optional, selector;
import std.conv : to;
import std.stdio : writefln;
import cocoa.strings;

void main() {
    NSArray fileTypes = NSImage.imageTypes;
    ulong cnt = fileTypes.count;
    writefln("imageTypes の配列の要素数 %2d個", cnt);
    foreach (i; 0..cnt ) {
        writefln(" %2d  %s", i + 1, fileTypes.strAtIndex(i).toDs);
    }
}

extern (Objective-C)
extern class NSImage : NSObject {
    static NSArray imageTypes() @selector("imageTypes");
}

extern (Objective-C)
extern class NSArray : NSObject {
    static NSArray array() @selector("array");
    NSString strAtIndex(NSUInteger) @selector("objectAtIndex:");
    NSUInteger count() @selector("count");
}               
cocoa/strings.d
Terminal

(base) hidhok % dmd -L-framework -LCocoa img_types.d
(base) hidhok % ./img_types 
imageTypes の配列の要素数 57個
  1  com.adobe.pdf
  2  com.apple.pict
  3  com.adobe.encapsulated-postscript
  4  public.jpeg
  5  public.png
  6  com.compuserve.gif
  7  com.canon.tif-raw-image
  8  com.adobe.raw-image
  9  com.dxo.raw-image
 10  com.canon.cr2-raw-image
 11  com.canon.cr3-raw-image
 12  com.leafamerica.raw-image
 13  com.hasselblad.fff-raw-image
 14  com.hasselblad.3fr-raw-image
 15  com.nikon.raw-image
 16  com.nikon.nrw-raw-image
 17  com.pentax.raw-image
 18  com.samsung.raw-image
 19  com.sony.raw-image
 20  com.sony.sr2-raw-image
 21  com.sony.arw-raw-image
 22  com.epson.raw-image
 23  com.kodak.raw-image
 24  public.tiff
 25  public.jpeg-2000
 26  com.apple.atx
 27  org.khronos.astc
 28  org.khronos.ktx
 29  public.avci
 30  public.heic
 31  public.heics
 32  public.heif
 33  com.canon.crw-raw-image
 34  com.fuji.raw-image
 35  com.panasonic.raw-image
 36  com.panasonic.rw2-raw-image
 37  com.leica.raw-image
 38  com.leica.rwl-raw-image
 39  com.konicaminolta.raw-image
 40  com.olympus.sr-raw-image
 41  com.olympus.or-raw-image
 42  com.olympus.raw-image
 43  com.phaseone.raw-image
 44  com.microsoft.ico
 45  com.microsoft.bmp
 46  com.apple.icns
 47  com.adobe.photoshop-image
 48  com.microsoft.cur
 49  com.truevision.tga-image
 50  com.ilm.openexr-image
 51  org.webmproject.webp
 52  com.sgi.sgi-image
 53  public.radiance
 54  public.pbm
 55  public.mpo-image
 56  public.pvr
 57  com.microsoft.dds 
(base) hidhok %