Skip to content

Commit b53be4a

Browse files
[[ ExternalsV6 ]] Fixes the Obj-C conversion
1 parent e817a2a commit b53be4a

4 files changed

Lines changed: 42 additions & 22 deletions

File tree

engine/src/externalv1.cpp

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1752,7 +1752,7 @@ static MCExternalError MCExternalVariableStore(MCExternalVariableRef var, MCExte
17521752
if (p_value == nil)
17531753
return kMCExternalErrorNoValue;
17541754

1755-
switch(p_options & 0xf)
1755+
switch(p_options & 0xff)
17561756
{
17571757
case kMCExternalValueOptionAsVariable:
17581758
return var -> Set((MCExternalVariableRef)p_value);
@@ -1928,8 +1928,8 @@ static MCExternalError MCExternalVariableFetch(MCExternalVariableRef var, MCExte
19281928
return kMCExternalErrorNoValue;
19291929

19301930
MCExternalError t_error;
1931-
1932-
switch(p_options & 0xf)
1931+
1932+
switch(p_options & 0xff)
19331933
{
19341934
case kMCExternalValueOptionAsVariable:
19351935
return ((MCExternalVariableRef)p_value) -> Set(var);
@@ -2028,8 +2028,8 @@ static MCExternalError MCExternalVariableFetch(MCExternalVariableRef var, MCExte
20282028
*(CFNumberRef*)p_value = CFNumberCreate(NULL, kCFNumberFloat64Type, &t_real);
20292029

20302030
// NS types must be autoreleasing
2031-
if ((p_options & 0xf) == kMCExternalValueOptionAsNSNumber)
2032-
[*(NSArray**)p_value autorelease];
2031+
if ((p_options & 0xff) == kMCExternalValueOptionAsNSNumber)
2032+
[*(NSNumber**)p_value autorelease];
20332033

20342034
break;
20352035
}
@@ -2046,7 +2046,7 @@ static MCExternalError MCExternalVariableFetch(MCExternalVariableRef var, MCExte
20462046
return kMCExternalErrorOutOfMemory;
20472047

20482048
// NS types must be autoreleasing
2049-
if ((p_options & 0xf) == kMCExternalValueOptionAsNSString)
2049+
if ((p_options & 0xff) == kMCExternalValueOptionAsNSString)
20502050
[*(NSString**)p_value autorelease];
20512051
break;
20522052
}
@@ -2064,12 +2064,10 @@ static MCExternalError MCExternalVariableFetch(MCExternalVariableRef var, MCExte
20642064
if (!MCStringConvertToNative(*t_stringref, (char_t*&)t_chars, t_char_count))
20652065
return kMCExternalErrorOutOfMemory;
20662066

2067-
*(CFDataRef*)p_value = CFDataCreate(NULL, (UInt8*)t_chars, t_char_count);
2068-
2069-
MCMemoryDeleteArray(t_chars);
2067+
*(CFDataRef*)p_value = CFDataCreateWithBytesNoCopy(NULL, (UInt8*)t_chars, t_char_count, NULL);
20702068

20712069
// NS types must be autoreleasing
2072-
if ((p_options & 0xf) == kMCExternalValueOptionAsNSData)
2070+
if ((p_options & 0xff) == kMCExternalValueOptionAsNSData)
20732071
[*(NSData**)p_value autorelease];
20742072
break;
20752073
}
@@ -2085,7 +2083,7 @@ static MCExternalError MCExternalVariableFetch(MCExternalVariableRef var, MCExte
20852083
return t_error;
20862084

20872085
// NS types must be autoreleasing
2088-
if ((p_options & 0xf) == kMCExternalValueOptionAsNSArray)
2086+
if ((p_options & 0xff) == kMCExternalValueOptionAsNSArray)
20892087
[*(NSArray**)p_value autorelease];
20902088
return t_error;
20912089
}
@@ -2101,7 +2099,7 @@ static MCExternalError MCExternalVariableFetch(MCExternalVariableRef var, MCExte
21012099
return t_error;
21022100

21032101
// NS types must be autoreleasing
2104-
if ((p_options & 0xf) == kMCExternalValueOptionAsNSDictionary)
2102+
if ((p_options & 0xff) == kMCExternalValueOptionAsNSDictionary)
21052103
[*(NSDictionary**)p_value autorelease];
21062104

21072105
return t_error;
@@ -2122,7 +2120,7 @@ static MCExternalError MCExternalVariableAppend(MCExternalVariableRef var, MCExt
21222120
if (p_value == nil)
21232121
return kMCExternalErrorNoValue;
21242122

2125-
switch(p_options & 0xf)
2123+
switch(p_options & 0xff)
21262124
{
21272125
case kMCExternalValueOptionAsVariable:
21282126
return var -> Append(p_options, (MCExternalVariableRef)p_value);

revtestexternal/revtestexternal.ios.tmp

Lines changed: 0 additions & 1 deletion
This file was deleted.

revtestexternal/revtestexternal.lcidl

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,17 @@ function revTestExternalTestObjcDictionaries
7575
in dict as objc-dictionary
7676
return objc-dictionary
7777

78-
function revtestExternalTestObjcNumber
78+
function revTestExternalTestObjcNumber
7979
in number as objc-number
8080
return objc-number
8181

82-
function revTestExternalTestObbjcData
82+
function revTestExternalTestObjcData
8383
in data as objc-data
8484
return objc-data
85+
86+
function revTestExternalTestObjcString
87+
in data as objc-string
88+
return objc-string
8589

8690
use none on mac, linux, windows, android, ios
8791
use java on android

revtestexternal/src/revtestexternal.mm

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,29 +25,48 @@
2525

2626
NSArray *revTestExternalTestObjcArrays(NSArray *array)
2727
{
28+
[array setValue: @"Hello" forKey: @"greetings"];
2829
return array;
2930
}
3031

3132
NSDictionary *revTestExternalTestObjcDictionaries(NSDictionary *dictionary)
3233
{
34+
[dictionary setValue: @"Hello" forKey: @"greetings"];
3335
return dictionary;
3436
}
3537

36-
NSNumber * revtestExternalTestObjcNumber(NSNumber *number)
38+
NSNumber * revTestExternalTestObjcNumber(NSNumber *number)
3739
{
3840
double t_double;
3941
t_double = [number doubleValue];
4042

4143
t_double += 3.14;
4244

43-
NSNumber * t_nsnumber;
44-
[t_nsnumber initWithDouble:t_double];
45-
return t_nsnumber;
45+
return [NSNumber numberWithDouble: t_double];
4646
}
4747

48-
NSData* revTestExternalTestObbjcData(NSData* data)
48+
NSData* revTestExternalTestObjcData(NSData* data)
4949
{
50-
return data;
50+
char* t_bytes;
51+
uint32_t t_length;
52+
53+
fprintf(stderr, "revTestExternalTestObjcData\n");
54+
55+
t_length = [data length];
56+
t_bytes = (char*)malloc(t_length);
57+
58+
fprintf(stderr, "\tlength: %u\n", t_length);
59+
[data getBytes:t_bytes length:t_length];
60+
61+
for (uint32_t i = 0; i < t_length; ++i)
62+
t_bytes[i]++;
63+
64+
return [NSData dataWithBytes:t_bytes length:t_length];
65+
}
66+
67+
NSString* revTestExternalTestObjcString(NSString* string)
68+
{
69+
return [string stringByAppendingString: string];
5170
}
5271

5372
////////////////////////////////////////////////////////////////////////////////

0 commit comments

Comments
 (0)