Boost logo

Boost :

Subject: Re: [boost] [UUID] Code for UUIDs as PODs and other changes
From: Scott McMurray ([hidden])
Date: 2008-12-06 15:20:42

On Sat, Dec 6, 2008 at 14:48, Roman Yakovenko <roman.yakovenko_at_[hidden]> wrote:
> Sorry for noise. I didn't see "native_generator" typedef "on Windows".
> May be it worth to introduce "native_generator.hpp" header, which will
> select the platform and "include" the native generator?

No, the noise was a good thing. I think I like the native_generator
better, in retrospect. I'm thinking of something like this (with the
details better flushed out):


#include <uuid/uuid.h>

struct native_default {
    void generate(uuiid &u) { uuid_generate(&*u.begin()); }
struct native_time_based {
    void generate(uuiid &u) { uuid_generate_time(&*u.begin()); }
struct native_random {
    void generate(uuiid &u) { uuid_generate_random(&*u.begin()); }


#include <rpc.h>

struct native_default {
    void generate(uuiid &u) { UUID u_; UuidCreate(&u_);
u.assign((uint8_t*)&u_, 16+(uint8_t*)&u_); }

// And others, possibly


template <typename NativeStrategy = native_default>
struct native_generator : NativeStrategy {
    uuid operator()() const {
        uuid u; NativeStrategy::generate(u); return u;

Looks like less code duplication overall, too.

With SFINAE it should even work for SHA1 and MD5 generators, with an
overloaded constructor to pass a uuid to the Strategy's constructor,
and an overloaded operator() that takes a message to hash.

The one problem is if people wanted more choice. I was thinking that
the could provide another generator
in the old scheme, but that may also just be a waste of effort, since
it's less common than the e2fsprogs libs. Also, what it provides are
the same things that Boost.UUID provides natively, so...

~ Scott

Boost list run by bdawes at, gregod at, cpdaniel at, john at