using System;
public class Kublies
{
Func<int[], int[], int> cbfunc;
public void register_cb(Func<int[], int[], int> cb)
{
cbfunc = cb;
}
public int call_cb(int[] dat_in)
{
int res;
int[] xform = new int[dat_in.Length];
Console.Write("In: [");
foreach (int j in dat_in)
Console.Write(" " + j.ToString());
res = cbfunc(dat_in, xform);
Console.WriteLine("]");
Console.Write("Xform: [");
foreach (int j in xform)
Console.Write(" " + j.ToString());
Console.WriteLine("]");
return res;
}
}
public class Test
{
private int xfandsum(int[] din, int[] dout)
{
int j;
int res = 0;
for (j = 0; j < din.Length; j++)
{
res += din[j];
dout[j] = din[j] * 2 + 3;
}
return res;
}
public static void Main()
{
int val;
Test tes = new Test();
Kublies kub = new Kublies();
int[] testdata = {3, 9, 7, 1, 2, 8, 4};
kub.register_cb(tes.xfandsum);
val = kub.call_cb(testdata);
Console.WriteLine("Result: " + val.ToString());
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIEt1YmxpZXMKewoJRnVuYzxpbnRbXSwgaW50W10sIGludD4gY2JmdW5jOwoKCXB1YmxpYyB2b2lkIHJlZ2lzdGVyX2NiKEZ1bmM8aW50W10sIGludFtdLCBpbnQ+IGNiKQoJewoJCWNiZnVuYyA9IGNiOwoJfQoJCglwdWJsaWMgaW50IGNhbGxfY2IoaW50W10gZGF0X2luKQoJewoJCWludCByZXM7CgkJaW50W10geGZvcm0gPSBuZXcgaW50W2RhdF9pbi5MZW5ndGhdOwoJCQoJCUNvbnNvbGUuV3JpdGUoIkluOiAgICBbIik7CgoJCWZvcmVhY2ggKGludCBqIGluIGRhdF9pbikKCQkJQ29uc29sZS5Xcml0ZSgiICIgKyBqLlRvU3RyaW5nKCkpOwoKCQlyZXMgPSBjYmZ1bmMoZGF0X2luLCB4Zm9ybSk7CgoJCUNvbnNvbGUuV3JpdGVMaW5lKCJdIik7CgkJQ29uc29sZS5Xcml0ZSgiWGZvcm06IFsiKTsKCQkKCQlmb3JlYWNoIChpbnQgaiBpbiB4Zm9ybSkKCQkJQ29uc29sZS5Xcml0ZSgiICIgKyBqLlRvU3RyaW5nKCkpOwoKCQlDb25zb2xlLldyaXRlTGluZSgiXSIpOwoJCQoJCXJldHVybiByZXM7Cgl9Cn0KCnB1YmxpYyBjbGFzcyBUZXN0CnsKCXByaXZhdGUgaW50IHhmYW5kc3VtKGludFtdIGRpbiwgaW50W10gZG91dCkKCXsKCQlpbnQgajsKCQlpbnQgcmVzID0gMDsKCQoJCWZvciAoaiA9IDA7IGogPCBkaW4uTGVuZ3RoOyBqKyspCgkJewoJCQlyZXMgKz0gZGluW2pdOwoJCQlkb3V0W2pdID0gZGluW2pdICogMiArIDM7CgkJfQoJCQoJCXJldHVybiByZXM7Cgl9CgoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCWludCB2YWw7CgkJVGVzdCB0ZXMgPSBuZXcgVGVzdCgpOwoJCUt1YmxpZXMga3ViID0gbmV3IEt1YmxpZXMoKTsKCQlpbnRbXSB0ZXN0ZGF0YSA9IHszLCA5LCA3LCAxLCAyLCA4LCA0fTsKCQkKCQlrdWIucmVnaXN0ZXJfY2IodGVzLnhmYW5kc3VtKTsKCQl2YWwgPSBrdWIuY2FsbF9jYih0ZXN0ZGF0YSk7CgkJCgkJQ29uc29sZS5Xcml0ZUxpbmUoIlJlc3VsdDogIiArIHZhbC5Ub1N0cmluZygpKTsKCX0KfQo=