//auto str = " this code 10.89.973.8.3.00.34-8 is special 23.456-2 car";
auto str = " this code 10.89.973.8.3.00.34/8 is special 23.456/2 car";

//print("loadlib", sqpcre.loadlib("/home/mingo/dev/c/A_libs/pcre-8.38/.libs/libpcre.so.1.2.6"));
print("loadlib", sqpcre2.loadlib("/home/mingo/dev/c/A_libs/pcre2-10.20/.libs/libpcre2-8.so"));

local function mycallout(cb_idx, cb_str, start_match, current_position, p)
{
	print("mycallout", cb_idx, cb_str, start_match, current_position, p);
	return 0;
}

//auto pcre = sqpcre(@"(\d+[.,\-])+\d+");
//auto pcre = sqpcre(@"(?:\d+[.,\-/])+\d+");
auto pcre = sqpcre2(@"(?:\d+[.,\-/]\n*)+(?C'number found')\d+");
pcre.set_callout(mycallout, "myparam");
print(pcre, typeof(pcre));
print(pcre.version());

pcre.set_callout_param(str);
print("match", pcre.match(str));

pcre.gmatch(str,
	function(...){
		print("gmatch vargv.len()", vargv.len());
		foreach(idx, elm in vargv) print(idx, elm);
		return true;
	});
	
auto new_str = pcre.gsub(str, "@$0@");
print(new_str);

auto result = [];
auto rc, start_pos;

auto max_loop = 1;

auto start_time = os.getmillicount();
for(auto i=0; i < max_loop; ++i)
{
	start_pos = 0;
	while( (rc = pcre.exec(str, result, start_pos)) > 0)
	{
		print(rc, result.len());

		if(rc > 0)
		{
			//foreach(idx, elm in result) 
			print(str.slice(result[0], result[1]));
			start_pos = result[1] + 1;
		}
	}
}
print("Spent time", os.getmillicount() - start_time);

/*
start_time = os.getmillicount();
for(auto i=0; i < max_loop; ++i)
{
	start_pos = 0;
	while( (rc = str.find_lua("(%d[,.%-])", result, start_pos)) > 0)
	{
		print(rc, result.len());

		if(rc > 0)
		{
			foreach(idx, elm in result) print(idx, elm, str.slice(result[0], result[1]));
			start_pos = result[1] + 1;
		}
	}
}
print("Spent time", os.getmillicount() - start_time);
*/
