[Issue 983] constant cfstrings for Darwin
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun Sep 23 18:22:26 PDT 2007
http://d.puremagic.com/issues/show_bug.cgi?id=983
dvdfrdmn at users.sf.net changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution| |FIXED
------- Comment #7 from dvdfrdmn at users.sf.net 2007-09-23 20:22 -------
A inline function will not work because the non-inlined original will pass a
non-constant char* to __builtin___CFStringMakeConstantString (and fail to
compile). Making CFString a void*...
alias __builtin___CFStringMakeConstantString CFSTR;
alias void * CFStringRef;
... is probably okay except that it becomes possible to this:
CFString x = <pointer to something that is not a CFString....>
This is another possibility...
static if ( is( typeof(__builtin___CFStringMakeConstantString) ret == return
) ) {
alias ret CFStringRef;
alias typeof(*CFStringRef) CFString;
alias __builtin___CFStringMakeConstantString CFSTR;
} else {
struct CFString;
alias CFString * CFStringRef;
}
... but typeid(CFStringRef) could differ across object modules depending on the
compiler version, flags, etc.
We may just have to wait for AST macros to get the perfect solution.
(Closing the issue since CFStringMakeConstantString now works.)
--
More information about the D.gnu
mailing list