52 lines
1.3 KiB
D
52 lines
1.3 KiB
D
module director_binary_string_runme;
|
|
|
|
import director_binary_string.Callback;
|
|
import director_binary_string.Caller;
|
|
import std.string;
|
|
import std.conv : text;
|
|
import std.exception : enforce;
|
|
|
|
void main() {
|
|
auto caller = new Caller();
|
|
Callback callback = new DirectorBinaryStringCallback();
|
|
caller.setCallback(callback);
|
|
int sum = caller.call();
|
|
int sumData = caller.callWriteData();
|
|
caller.delCallback();
|
|
|
|
enforce(sum == 9*2*8 + 13*3*5, text("Unexpected sum: ", sum));
|
|
enforce(sumData == 9*2*8, text("Unexpected sumData: ", sumData));
|
|
|
|
new Callback().run(null, null);
|
|
callback = new DirectorBinaryStringCallback();
|
|
caller.setCallback(callback);
|
|
caller.call_null();
|
|
caller.delCallback();
|
|
}
|
|
|
|
class DirectorBinaryStringCallback : Callback {
|
|
public:
|
|
this() {
|
|
super();
|
|
}
|
|
override int run(string dataBufferAA, string dataBufferBB)
|
|
{
|
|
int ret = 0;
|
|
char[] aa = dataBufferAA.dup;
|
|
for (int i = 0; i < aa.length; i++)
|
|
ret += aa[i] * 2;
|
|
char[] bb = dataBufferBB.dup;
|
|
for (int i = 0; i < bb.length; i++)
|
|
ret += bb[i] * 3;
|
|
return ret;
|
|
}
|
|
override int writeData(string dataBufferAA)
|
|
{
|
|
int ret = 0;
|
|
char[] aa = dataBufferAA.dup;
|
|
for (int i = 0; i < aa.length; i++)
|
|
ret += aa[i] * 2;
|
|
return ret;
|
|
}
|
|
}
|