Skip to content

Commit de645fa

Browse files
author
Monte Goulding
committed
Add support for posting NSArray and NSDictionary to lcidlc externals
* LCArugmentsCreateV was still doing conversions to C types even though Objective-C conversions are now in the engine * LCArugmentsCreateV did not support NSArray or NSDictionary * H has been used as for dictionary because D is taken and H is possibly reasonable for hash table/map.
1 parent 7b0251f commit de645fa

1 file changed

Lines changed: 20 additions & 13 deletions

File tree

lcidlc/src/Support.mm

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1863,35 +1863,42 @@ static MCError LCArgumentsCreateV(const char *p_signature, va_list p_args, MCVar
18631863
case 'N': // NSNumber*
18641864
{
18651865
NSNumber* t_number;
1866-
t_number = va_arg(p_args, NSNumber *);
1867-
double t_real;
1868-
t_real = [t_number doubleValue];
1869-
t_error = MCVariableStore(t_argv[i], kMCOptionAsReal, &t_real);
1866+
t_number = va_arg(p_args, NSNumber *);
1867+
t_error = MCVariableStore(t_argv[i], kMCOptionAsObjcNumber, &t_number);
18701868
}
18711869
break;
18721870

18731871
case 'S': // NSString*
18741872
{
18751873
NSString *t_string;
18761874
t_string = va_arg(p_args, NSString *);
1877-
const char *t_cstring;
1878-
t_cstring = [t_string cStringUsingEncoding: NSMacOSRomanStringEncoding];
1879-
if (t_cstring == nil)
1880-
t_error = (MCError)kLCErrorCannotEncodeCString;
1881-
t_error = MCVariableStore(t_argv[i], kMCOptionAsCString, &t_cstring);
1875+
t_error = MCVariableStore(t_argv[i], kMCOptionAsObjcString, &t_string);
18821876
}
18831877
break;
18841878

18851879
case 'D': // NSData*
18861880
{
18871881
NSData *t_data;
18881882
t_data = va_arg(p_args, NSData *);
1889-
LCBytes t_string;
1890-
t_string . buffer = (char *)[t_data bytes];
1891-
t_string . length = [t_data length];
1892-
t_error = MCVariableStore(t_argv[i], kMCOptionAsString, &t_string);
1883+
t_error = MCVariableStore(t_argv[i], kMCOptionAsObjcData, &t_data);
18931884
}
18941885
break;
1886+
1887+
case 'A': // NSArray *
1888+
{
1889+
NSArray * t_array;
1890+
t_array = va_arg(p_args, NSArray *);
1891+
t_error = MCVariableStore(t_argv[i], kMCOptionAsObjcArray, &t_array);
1892+
}
1893+
break;
1894+
1895+
case 'H': // NSDictionary *
1896+
{
1897+
NSDictionary * t_dictionary;
1898+
t_dictionary = va_arg(p_args, NSDictionary *);
1899+
t_error = MCVariableStore(t_argv[i], kMCOptionAsObjcDictionary, &t_dictionary);
1900+
}
1901+
break;
18951902
#endif
18961903
}
18971904
}

0 commit comments

Comments
 (0)