From 320ee072e644c0a67dc10ace2fe94d714669d0df Mon Sep 17 00:00:00 2001 From: Markus Triska Date: Wed, 3 Nov 2021 21:45:07 +0100 Subject: [PATCH] ENHANCED: Much faster Base64 encoding/decoding, using partial_string/1 for a quick check. --- src/lib/charsio.pl | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/lib/charsio.pl b/src/lib/charsio.pl index d186eaf4..92d3c443 100644 --- a/src/lib/charsio.pl +++ b/src/lib/charsio.pl @@ -10,6 +10,7 @@ :- use_module(library(iso_ext)). :- use_module(library(error)). :- use_module(library(lists)). +:- use_module(library(iso_ext), [partial_string/1]). fabricate_var_name(VarType, VarName, N) :- char_code('A', AC), @@ -235,10 +236,15 @@ chars_base64(Cs, Bs, Options) :- ; domain_error(charset, Charset, chars_base64/3) ), ( var(Cs) -> - must_be(list, Bs), - maplist(must_be(character), Bs), + must_be_characters(Bs), '$chars_base64'(Cs, Bs, Padding, Charset) - ; must_be(list, Cs), - maplist(must_be(character), Cs), + ; must_be_characters(Cs), '$chars_base64'(Cs, Bs, Padding, Charset) ). + +must_be_characters(Cs) :- + ( partial_string(Cs) -> + true + ; must_be(list, Cs), + maplist(must_be(character), Cs) + ). -- 2.54.0