using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var text = @"(void)memcpy(&a[0],(void * )hihi, (UBYTE) V_SIZE);
(void) memcpy((VOID*)abc, (const VOID*) dafa, (uint8)NUMBER_SIZE);
(void )memcpy(
(void *)p,
&abc, (uint8)DATE_SIZE);
";
var pattern = @"(?i)\(\s*((?:const\s+)?(?:u?(?:byte|int)\d*|void)(?:\s*\*)?)\s*\)\s*(\w+(?:\((?>[^()]+|(?<c>)\(|(?<-c>)\))*\))?)";
string tmp = string.Empty;
do
{
tmp = text;
text = Regex.Replace(text, pattern, "static_cast<$1>($2)");
}
while (text != tmp);
Console.WriteLine(text);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLklPOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciB0ZXh0ID0gQCIodm9pZCltZW1jcHkoJmFbMF0sKHZvaWQgKiApaGloaSwgKFVCWVRFKSBWX1NJWkUpOwoodm9pZCkgbWVtY3B5KChWT0lEKilhYmMsIChjb25zdCBWT0lEKikgZGFmYSwgKHVpbnQ4KU5VTUJFUl9TSVpFKTsKKHZvaWQgKW1lbWNweSgKICAgICAgICAodm9pZCAqKXAsCiAgICAgICAgJmFiYywgKHVpbnQ4KURBVEVfU0laRSk7CiI7CgkJdmFyIHBhdHRlcm4gPSBAIig/aSlcKFxzKigoPzpjb25zdFxzKyk/KD86dT8oPzpieXRlfGludClcZCp8dm9pZCkoPzpccypcKik/KVxzKlwpXHMqKFx3Kyg/OlwoKD8+W14oKV0rfCg/PGM+KVwofCg/PC1jPilcKSkqXCkpPykiOwoJCXN0cmluZyB0bXAgPSBzdHJpbmcuRW1wdHk7CgkJZG8KCQl7CgkJCXRtcCA9IHRleHQ7CgkJCXRleHQgPSBSZWdleC5SZXBsYWNlKHRleHQsIHBhdHRlcm4sICJzdGF0aWNfY2FzdDwkMT4oJDIpIik7CgkJfQoJCXdoaWxlICh0ZXh0ICE9IHRtcCk7CiAgICAJQ29uc29sZS5Xcml0ZUxpbmUodGV4dCk7Cgl9Cn0=
static_cast<void>(memcpy(&a[0],static_cast<void *>(hihi), static_cast<UBYTE>(V_SIZE)));
static_cast<void>(memcpy(static_cast<VOID*>(abc), static_cast<const VOID*>(dafa), static_cast<uint8>(NUMBER_SIZE)));
static_cast<void>(memcpy(
static_cast<void *>(p),
&abc, static_cast<uint8>(DATE_SIZE)));