Like it says.  Is there one (or a suitable analogue), or do I have to roll
my own?

Cheers,
Roger.