1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
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;
}
}
|