Files
kotlin-fork/kotlin-native/backend.native/tests/interop/cpp/skia.def
T
2021-07-30 12:54:51 +03:00

88 lines
1.5 KiB
Modula-2

language = C++
compilerOpts = -std=c++17
plugin = org.jetbrains.kotlin.native.interop.skia
package = org.jetbrains.skiko.skia.native
headers = stdio.h
---
// TODO: this one checks the syntactic aspect for now.
// To be updated for proper c++ destructor and
// kotlin garbage collection interaction.
template <typename T> class sk_sp {
public:
sk_sp(T* obj) : data(obj) {}
T* release() {
return data;
}
private:
T* data;
};
template <typename T> sk_sp<T> sk_ref_sp(T* obj) {
return sk_sp<T>(obj);
}
class SkValue {
public:
SkValue() {
printf("SkValue()\n");
};
void unref() {
printf("unref\n");
};
int data;
void setData(int val) {
data = val;
};
};
class SkData {
public:
SkData() {
printf("SkData()\n");
};
~SkData() {
printf("~SkData()\n");
};
int data;
void setData(int val) {
data = val;
};
};
class SkFoo {
public:
SkFoo() {
printf("SkFoo()\n");
};
~SkFoo() {
printf("~SkFoo()\n");
};
virtual sk_sp<SkValue> foo(SkData *obj) {
SkValue* value = new SkValue();
value->setData(obj->data);
return sk_sp<SkValue>(value);
};
virtual SkData* bar(sk_sp<SkValue> obj) {
SkValue* value = obj.release();
SkData* data = new SkData();
data->setData(value->data);
return data;
};
virtual SkData* qux() {
return new SkData();
};
};