can you call C++ methods from Smalltalk

This commit is contained in:
tildearrow 2022-06-24 13:17:43 -05:00
parent e39a923b23
commit 3366099dbe
1 changed files with 20 additions and 26 deletions

View File

@ -22,32 +22,26 @@ static NSArray *BuildAllowedFileTypes( const std::vector<std::string>& filterLis
// NSMutableArray *buildFilterList = NSMutableArray::alloc()->init();
NSMutableArray *buildFilterList = [[NSMutableArray alloc] init];
char typebuf[NFD_MAX_STRLEN] = {0};
size_t filterListLen = strlen(filterList);
char *p_typebuf = typebuf;
for ( size_t i = 0; i < filterListLen+1; ++i )
{
if ( filterList[i] == ',' || filterList[i] == ';' || filterList[i] == '\0' )
{
if (filterList[i] != '\0')
++p_typebuf;
*p_typebuf = '\0';
// or this: NSString::stringWithUTF8String(typebuf);
// buildFilterList->addObject(thisType);
// really? did you have to make this mess?!
NSString *thisType = [NSString stringWithUTF8String: typebuf];
[buildFilterList addObject:thisType];
p_typebuf = typebuf;
*p_typebuf = '\0';
}
else
{
*p_typebuf = filterList[i];
++p_typebuf;
String typebuf;
for (std::string& i: filterList) {
typebuf="";
for (char& j: i) {
if (j==' ' || j==',' || j ==';') {
// or this: NSString::stringWithUTF8String(typebuf);
// buildFilterList->addObject(thisType);
// really? did you have to make this mess?!
NSString *thisType = [NSString stringWithUTF8String: [typebuf c_str]];
[buildFilterList addObject:thisType];
typebuf="";
} else if (j!='.' && j!='*') {
typebuf+=j;
}
}
if (!typebuf.empty()) {
// I don't think this will work, but come on...
NSString *thisType = [NSString stringWithUTF8String: [typebuf c_str]];
[buildFilterList addObject:thisType];
}
}
NSArray *returnArray = [NSArray arrayWithArray:buildFilterList];
@ -58,7 +52,7 @@ static NSArray *BuildAllowedFileTypes( const std::vector<std::string>& filterLis
static void AddFilterListToDialog( NSSavePanel *dialog, const std::vector<std::string>& filterList )
{
if ( !filterList || strlen(filterList) == 0 )
if ( filterList.size()&1 )
return;
NSArray *allowedFileTypes = BuildAllowedFileTypes( filterList );