All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH] pkg-utils: describe the case conversion macros in more detail.
Date: Tue, 14 Oct 2014 16:45:54 +0200	[thread overview]
Message-ID: <20141014144553.GA4863@free.fr> (raw)
In-Reply-To: <1413278627-8504-1-git-send-email-arnout@mind.be>

Arnout, All,

On 2014-10-14 11:23 +0200, Arnout Vandecappelle (Essensium/Mind) spake thusly:
> After the refactoring of the case conversion macros in dd5e620ac, the
> macro became even harder to understand. Improve this explanation a
> little so future generations can make sense of what we're doing here.
> 
> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
> Cc: Thomas De Schampheleire <patrickdepinguin@gmail.com>

Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

Regards,
Yann E. MORIN.

> ---
> Very old patch that I forgot to push
> 
> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
> ---
>  package/pkg-utils.mk | 26 ++++++++++++++++++--------
>  1 file changed, 18 insertions(+), 8 deletions(-)
> 
> diff --git a/package/pkg-utils.mk b/package/pkg-utils.mk
> index ce39197..7eddc47 100644
> --- a/package/pkg-utils.mk
> +++ b/package/pkg-utils.mk
> @@ -5,14 +5,24 @@
>  #
>  ################################################################################
>  
> -# UPPERCASE Macro -- transform its argument to uppercase and replace dots and
> -# hyphens to underscores
> -
> -# Heavily inspired by the up macro from gmsl (http://gmsl.sf.net)
> -# This is approx 5 times faster than forking a shell and tr, and
> -# as this macro is used a lot it matters
> -# This works by creating translation character pairs (E.G. a:A b:B)
> -# and then looping though all of them running $(subst from,to,text)
> +# Case conversion macros. This is inspired by the 'up' macro from gmsl
> +# (http://gmsl.sf.net). It is optimised very heavily because these macros
> +# are used a lot. It is about 5 times faster than forking a shell and tr.
> +#
> +# The caseconvert-helper creates a definition of the case conversion macro.
> +# After expansion by the outer $(eval ), the UPPERCASE macro is defined as:
> +# $(strip $(eval __tmp := $(1))  $(eval __tmp := $(subst a,A,$(__tmp))) ... )
> +# In other words, every letter is substituted one by one.
> +#
> +# The caseconvert-helper allows us to create this definition out of the
> +# [FROM] and [TO] lists, so we don't need to write down every substition
> +# manually. The uses of $ and $$ quoting are chosen in order to do as
> +# much expansion as possible up-front.
> +#
> +# Note that it would be possible to conceive a slightly more optimal
> +# implementation that avoids the use of __tmp, but that would be even
> +# more unreadable and is not worth the effort.
> +
>  [FROM] := a b c d e f g h i j k l m n o p q r s t u v w x y z - .
>  [TO]   := A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ _
>  
> -- 
> 2.1.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

  reply	other threads:[~2014-10-14 14:45 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-14  9:23 [Buildroot] [PATCH] pkg-utils: describe the case conversion macros in more detail Arnout Vandecappelle
2014-10-14 14:45 ` Yann E. MORIN [this message]
2014-10-16 17:04 ` Thomas Petazzoni

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20141014144553.GA4863@free.fr \
    --to=yann.morin.1998@free.fr \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.