Skip to content

Instantly share code, notes, and snippets.

@bartlomiejn
bartlomiejn / VideoFrame.h
Last active March 26, 2017 17:42
C header file example for swift-explorations.ghost.io
typedef struct VideoFrameStruct {
void *address;
int width;
int height;
int stride;
} VideoFrame;
void doSomethingWithFrame(VideoFrame frame);
@bartlomiejn
bartlomiejn / VideoFrame.swift
Last active March 26, 2017 19:54
Swift C struct usage example for swifty-explorations.ghost.io
let frame = VideoFrame(address: someAddress, width: 640, height: 480, stride: 8) // VideoFrame type
let frameWidth = frame.width // Int32 type
doSomethingWithFrame(frame: frame)
@bartlomiejn
bartlomiejn / CppClass.hpp
Created March 26, 2017 17:32
C bridge for C++ class example for swift-explorations.ghost.io
#ifdef __cplusplus
extern "C" {
#endif
void* makeObject(const char* storedValue);
void setNewStoredValue(void* object, const char* newValue);
const char* getStoredValue(void* object);
void removeObject(void* object);
#ifdef __cplusplus
@bartlomiejn
bartlomiejn / CppClass.cpp
Created March 26, 2017 17:34
C++ class with C bridge definition file for swift-explorations.ghost.io
class CppClass {
public:
CppClass(const char* value) {
storedValue = value;
}
const char* storedValue;
};
extern "C" void* makeObject(const char* storedValue) {
return (void*) new CppClass(storedValue);
@bartlomiejn
bartlomiejn / CppClass.cpp
Created March 26, 2017 17:34
C++ class with C bridge definition file for swift-explorations.ghost.io
class CppClass {
public:
CppClass(const char* value) {
storedValue = value;
}
const char* storedValue;
};
extern "C" void* makeObject(const char* storedValue) {
return (void*) new CppClass(storedValue);
@bartlomiejn
bartlomiejn / SwiftCppClass.swift
Last active March 26, 2017 17:52
C bridge usage in Swift for swifty-explorations.ghost.io
let object = makeObject(("Value" as NSString).utf8String) // UnsafeMutableRawPointer? type
setNewStoredValue(object, ("New value" as NSString).utf8String)
print(String(cString: getStoredValue(object))) // New value
removeObject(object)
@bartlomiejn
bartlomiejn / SwiftCppClass.swift
Created March 26, 2017 17:37
Swift wrapper for C bridge for swifty-explorations.ghost.io
final class SwiftCppClass {
private let cppClass: UnsafeMutableRawPointer
var storedValue: String! {
get {
guard
let currentValue = getStoredValue(cppClass),
let currentString = String(utf8String: currentValue)
else {
@bartlomiejn
bartlomiejn / CppClassWrapper.h
Created March 26, 2017 17:38
Objective-C C++ class wrapper for swifty-explorations.ghost.io
@interface CppClassWrapper : NSObject
@property (nonatomic, copy) NSString* _Nonnull storedValue;
- (instancetype)initWithStoredValue:(NSString* _Nonnull)value;
@end
@bartlomiejn
bartlomiejn / CppClassWrapper.m
Created March 26, 2017 17:39
Objective-C++ C++ class wrapper for swifty-exporations.ghost.io
@interface CppClassWrapper ()
@property (nonatomic) CppClass* cppClass;
@end
@implementation CppClassWrapper
- (void)setStoredValue:(NSString*) storedValue {
self.cppClass->storedValue = [storedValue UTF8String];
}
@bartlomiejn
bartlomiejn / CppClassWrapper.swift
Last active March 26, 2017 17:46
Example usage of CppClassWrapper in Swift for swifty-explorations.ghost.io
let cppClass = CppClassWrapper(storedValue: „Some value”)!
print(cppClass.storedValue) // Some value
cppClass.storedValue = „New value”
print(cppClass.storedValue) // New value