static public byte [] Pack (string description, params object [] args)
{
int argn = 0;
PackContext b = new PackContext ();
b.conv = CopyConv;
b.description = description;
for (b.i = 0; b.i < description.Length; ){
object oarg;
if (argn < args.Length)
oarg = args [argn];
else {
if (b.repeat != 0)
break;
oarg = null;
}
int save = b.i;
if (PackOne (b, oarg)){
argn++;
if (b.repeat > 0){
if (--b.repeat > 0)
b.i = save;
else
b.i++;
} else
b.i++;
} else
b.i++;
}
return b.Get ();
}