88 lines
1.5 KiB
Modula-2
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();
|
|
};
|
|
};
|
|
|