Fix FLParam class

This commit is contained in:
Alex Harker
2019-11-27 00:44:40 +00:00
parent dc8359deb6
commit d83338155b
2 changed files with 34 additions and 22 deletions
+22 -20
View File
@@ -1,34 +1,36 @@
FLParam : UGen {
*ir { arg name, a;
*ir { arg tag, a;
parseTag(name, a);
^this.parseTag(tag, a);
}
parseTag()
{
arg tag, val;
*copyArray { arg args, source, offset;
var size = source.size;
args[offset] = size;
size.do()
{ arg i;
args[i + offset + 1] = source[i];
};
^(offset + size + 1);
}
*parseTag { arg tag, val;
if (tag.isKindOf(String))
{
var args = tag.ascii;
var size = args.size;
var asize = a.size;
var newArgs = Array.newClear(args.size + 3 + asize);
var args1 = tag.ascii;
var args2 = val;
var newArgs = Array.newClear(args1.size + args2.size + 4);
newArgs[0] = 'init';
newArgs[1] = 0;
newArgs[1] = args.size;
size.do()
{ arg i;
newArgs[i + 2] = args[i];
};
newArgs[size + 2] = a.size;
asize.do()
{ arg i;
newArgs[i + 3 + size] = a[i];
};
this.copyArray(newArgs, args2, this.copyArray(newArgs, args1, 2));
^this.new1( *newArgs );
}
+12 -2
View File
@@ -71,8 +71,14 @@ void FLParam_Ctor(FrameLib_Param_UGen* unit)
unit->mVector = nullptr;
unit->mVecLength = 0;
size_t pos = FLParam_String(unit, unit->mTag, 0);
FLParam_Vector(unit, unit->mVector, pos);
bool string = unit->mInput[0]->mScalarValue;
size_t pos = FLParam_String(unit, unit->mTag, 1);
if (string)
FLParam_String(unit, unit->mTag, 1);
else
FLParam_Vector(unit, unit->mVector, pos);
unit->mCalcFunc = (UnitCalcFunc) &FLTest_CalcZero;
}
@@ -519,6 +525,10 @@ PluginLoad(FrameLib)
(*ft->fDefinePlugInCmd)("FLParameters", &ParameterSetup, nullptr);
// Define parameter UGen
(*ft->fDefineUnit)("FLParam", sizeof(FrameLib_Param_UGen), (UnitCtorFunc)&FLParam_Ctor,(UnitDtorFunc)&FLParam_Dtor, 0);
DefineFrameLibExpUnit<FrameLib_Read>("FLRead");
DefineFrameLibExpUnit<FrameLib_Window>("FLWindow");
DefineFrameLibExpUnit<FrameLib_Map>("FLMap");