2012-03-02 10 views
3

だから、私はNSArraysたくさん使うので、私はここにマクロをもとに、渡されたプリミティブから配列を作成するマクロを作成しようとすることを決めた。だから、基本的に オートボックスNSArray?

#define $array(values...) ({ void *v[] = { values }; const char *encodings[] = { /* how do I get the @encode-ings for each? */ }; _boxArray(v, encodings, sizeof(values)/sizeof(void *))}) 

NSValue *_box(void *value, const char *encoding); // defined by CollectionUtils 

NSArray *_boxArray(void **values, const char **encodings, int count) 
{ 
    id objects[count]; 

    for (int i = 0; i < count; i++) { 
     // how can I box all of the values that need boxing? 
     objects[i] = _box(values[i], encodings[i]); 
    } 

    return [NSArray arrayWithObjects:objects count:count]; 
} 

https://bitbucket.org/snej/myutilities/src/319441e240fa/CollectionUtils.h

、私が求めているのは、どのように私はvariadicマクロを使って、マクロに渡される各引数に対して操作を実行できますか?

+0

ナッシング:

は、ルックをお持ちですか? –

答えて

1

これはあなたの質問に対する直接的な回答ではありませんが、 プリミティブのオートボクシング機能を含むLLVM 4.0を待つだけでしょうか?えっ、全然http://blog.ablepear.com/2012/02/something-wonderful-new-objective-c.html

+0

興味深い。しかし、私はこの答えを受け入れるつもりはない。 LLVM 4.0が出てきても答えが出なければ、私はこの答えを受け入れます。 –

+0

オートボクシングについては、特定のクラスをインスタンス化するための簡潔な構文はありません。私は何かを紛失していますか、間違ったリンクを投稿しましたか? – Chuck

+0

ちょうど言ったように、LLVM 4.0が出て、あなたの答えを受け入れました。 –