Runtime support for invocables in ScriptGroups
This also includes support for InvokeID
Change-Id: I5b59df166ea30b309b8dd9623825ac0e72d03856
diff --git a/rsScript.cpp b/rsScript.cpp
index 3059833..b89c96e 100644
--- a/rsScript.cpp
+++ b/rsScript.cpp
@@ -109,37 +109,25 @@
}
ScriptKernelID::ScriptKernelID(Context *rsc, Script *s, int slot, int sig)
- : ObjectBase(rsc) {
-
- mScript = s;
- mSlot = slot;
+ : IDBase(rsc, s, slot) {
mHasKernelInput = (sig & 1) != 0;
mHasKernelOutput = (sig & 2) != 0;
}
-ScriptKernelID::~ScriptKernelID() {
-
-}
-
-void ScriptKernelID::serialize(Context *rsc, OStream *stream) const {
-
-}
-
RsA3DClassID ScriptKernelID::getClassId() const {
return RS_A3D_CLASS_ID_SCRIPT_KERNEL_ID;
}
-ScriptFieldID::ScriptFieldID(Context *rsc, Script *s, int slot) : ObjectBase(rsc) {
- mScript = s;
- mSlot = slot;
+ScriptInvokeID::ScriptInvokeID(Context *rsc, Script *s, int slot)
+ : IDBase(rsc, s, slot) {
}
-ScriptFieldID::~ScriptFieldID() {
-
+RsA3DClassID ScriptInvokeID::getClassId() const {
+ return RS_A3D_CLASS_ID_SCRIPT_INVOKE_ID;
}
-void ScriptFieldID::serialize(Context *rsc, OStream *stream) const {
-
+ScriptFieldID::ScriptFieldID(Context *rsc, Script *s, int slot) :
+ IDBase(rsc, s, slot) {
}
RsA3DClassID ScriptFieldID::getClassId() const {
@@ -156,6 +144,12 @@
return kid;
}
+RsScriptInvokeID rsi_ScriptInvokeIDCreate(Context *rsc, RsScript vs, uint32_t slot) {
+ ScriptInvokeID *iid = new ScriptInvokeID(rsc, (Script *)vs, slot);
+ iid->incUserRef();
+ return iid;
+}
+
RsScriptFieldID rsi_ScriptFieldIDCreate(Context *rsc, RsScript vs, int slot) {
ScriptFieldID *fid = new ScriptFieldID(rsc, (Script *)vs, slot);
fid->incUserRef();