Sha256: 6ccc9f78028451767ab0d995e604955d4fe40ca28e7d8b34c9e40e55410954a1

Contents?: true

Size: 1.86 KB

Versions: 8

Compression:

Stored size: 1.86 KB

Contents

#import "OCSObjectiveCtoCBridge.h"
#import "OCSReturnValue.h"
#import "SlimList.h"
#import "SlimListSerializer.h"
#import <objc/runtime.h>

char* NSStringToCString(NSString* string) {
    return (char*)[string UTF8String];
}

NSString* CStringToNSString(char const* cString) {
    return [NSString stringWithUTF8String: cString];
}

NSArray* SlimList_ToNSArray(SlimList* self) {
    int length = SlimList_GetLength(self);
    NSMutableArray* array = [NSMutableArray array];
    for(int i=0; i<length; i++) {
        [array addObject: SlimList_GetNSStringAt(self, i)];
    }
    return array;
}

NSString* SlimList_GetNSStringAt(SlimList* self, int index) {
    return CStringToNSString(SlimList_GetStringAt(self, index));
}

void SlimList_AddNSString(SlimList* self, NSString* string) {
    SlimList_AddString(self, NSStringToCString(string));
}

SlimList* NSDictionary_ToSlimList(NSDictionary* self) {
    
    SlimList* list = SlimList_Create();
    
    [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
        SlimList *pair = SlimList_Create();
        NSString *kee = [OCSReturnValue forObject:key];
        NSString *value = [OCSReturnValue forObject:obj];
        SlimList_AddString(pair, NSStringToCString(kee));
        SlimList_AddString(pair, NSStringToCString(value));
        SlimList_AddList(list, pair);
        SlimList_Destroy(pair);
    }];
    
    return list;
}

SlimList* NSArray_ToSlimList(NSArray* self) {
    SlimList *list = SlimList_Create();
    for (id object in self) {
        if ([object isKindOfClass:[NSDictionary class]]) {
            SlimList *result = NSDictionary_ToSlimList(object);
            SlimList_AddList(list, result);
            SlimList_Destroy(result);
        } else {
            NSString *item = [OCSReturnValue forObject:object];
            SlimList_AddString(list, NSStringToCString(item));
        }
    }
    return list;
}

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
xcfit-0.9.0 XCFitDemo/Pods/cslim/src/ExecutorObjectiveC/OCSObjectiveCtoCBridge.m
xcfit-0.8.0 XCFitDemo/Pods/cslim/src/ExecutorObjectiveC/OCSObjectiveCtoCBridge.m
xcfit-0.7.0 XCFitDemo/Pods/cslim/src/ExecutorObjectiveC/OCSObjectiveCtoCBridge.m
xcfit-0.6.0 XCFitDemo/Pods/cslim/src/ExecutorObjectiveC/OCSObjectiveCtoCBridge.m
xcfit-0.5.0 XCFitDemo/Pods/cslim/src/ExecutorObjectiveC/OCSObjectiveCtoCBridge.m
xcfit-0.4.0 XCFitDemo/Pods/cslim/src/ExecutorObjectiveC/OCSObjectiveCtoCBridge.m
xcfit-0.3.0 XCFitDemo/Pods/cslim/src/ExecutorObjectiveC/OCSObjectiveCtoCBridge.m
xcfit-0.2.0 XCFitDemo/Pods/cslim/src/ExecutorObjectiveC/OCSObjectiveCtoCBridge.m