head 1.9; access; symbols UUID_1_6_2:1.8 UUID_1_6_1:1.8 UUID_1_6_0:1.7 UUID_1_5_1:1.6 UUID_1_5_0:1.6 UUID_1_4_2:1.6 UUID_1_4_1:1.6 UUID_1_4_0:1.6 UUID_1_3_2:1.5 UUID_1_3_1:1.5 UUID_1_3_0:1.5 UUID_1_2_1:1.5 UUID_1_2_0:1.4 UUID_1_1_2:1.4 UUID_1_1_1:1.3 UUID_1_1_0:1.3 UUID_1_0_4:1.3 UUID_1_0_3:1.3 UUID_1_0_2:1.3 UUID_1_0_1:1.3 UUID_1_0_0:1.3 UUID_0_9_7:1.3 UUID_0_9_6:1.3 UUID_0_9_5:1.3 UUID_0_9_4:1.3 UUID_0_9_3:1.3 UUID_0_9_2:1.3 UUID_0_9_1:1.1; locks; strict; comment @ * @; 1.9 date 2008.07.05.12.58.16; author rse; state dead; branches; next 1.8; commitid XLXN7vUmABwPcC9t; 1.8 date 2008.01.10.14.18.47; author rse; state Exp; branches; next 1.7; commitid LqMgFGBgTR7clSMs; 1.7 date 2007.01.01.18.14.54; author rse; state Exp; branches; next 1.6; commitid jOXiIO8S8v7xFP0s; 1.6 date 2006.01.13.06.44.30; author rse; state Exp; branches; next 1.5; commitid hYfQc9JIMh4bcphr; 1.5 date 2005.03.29.19.01.41; author rse; state Exp; branches; next 1.4; 1.4 date 2004.12.31.19.20.34; author rse; state Exp; branches; next 1.3; 1.3 date 2004.01.15.15.36.51; author rse; state Exp; branches; next 1.2; 1.2 date 2004.01.15.13.41.36; author rse; state Exp; branches; next 1.1; 1.1 date 2004.01.13.19.43.14; author rse; state Exp; branches; next ; desc @@ 1.9 log @remove OSSP uuid from CVS -- it is now versioned controlled in a Monotone repository @ text @/* ** OSSP uuid - Universally Unique Identifier ** Copyright (c) 2004-2008 Ralf S. Engelschall ** Copyright (c) 2004-2008 The OSSP Project ** ** This file is part of OSSP uuid, a library for the generation ** of UUIDs which can found at http://www.ossp.org/pkg/lib/uuid/ ** ** Permission to use, copy, modify, and distribute this software for ** any purpose with or without fee is hereby granted, provided that ** the above copyright notice and this permission notice appear in all ** copies. ** ** THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED ** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ** IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR ** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF ** USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT ** OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ** SUCH DAMAGE. ** ** uuid_bm.c: bitmask API implementation */ #ifndef __UUID_BM_H__ #define __UUID_BM_H__ /* * Bitmask Calculation Macros (up to 32 bit only) * (Notice: bit positions are counted n...0, i.e. lowest bit is position 0) */ /* generate a bitmask consisting of 1 bits from (and including) bit position `l' (left) to (and including) bit position `r' */ #define BM_MASK(l,r) \ ((((unsigned int)1<<(((l)-(r))+1))-1)<<(r)) /* extract a value v from a word w at position `l' to `r' and return value */ #define BM_GET(w,l,r) \ (((w)>>(r))&BM_MASK((l)-(r),0)) /* insert a value v into a word w at position `l' to `r' and return word */ #define BM_SET(w,l,r,v) \ ((w)|(((v)&BM_MASK((l)-(r),0))<<(r))) /* generate a single bit `b' (0 or 1) at bit position `n' */ #define BM_BIT(n,b) \ ((b)<<(n)) /* generate a quad word octet of bits (a half byte, i.e. bit positions 3 to 0) */ #define BM_QUAD(b3,b2,b1,b0) \ (BM_BIT(3,(b3))|BM_BIT(2,(b2))|BM_BIT(1,(b1))|BM_BIT(0,(b0))) /* generate an octet word of bits (a byte, i.e. bit positions 7 to 0) */ #define BM_OCTET(b7,b6,b5,b4,b3,b2,b1,b0) \ ((BM_QUAD(b7,b6,b5,b4)<<4)|BM_QUAD(b3,b2,b1,b0)) /* generate the value 2^n */ #define BM_POW2(n) \ BM_BIT(n,1) /* shift word w k bits to the left or to the right */ #define BM_SHL(w,k) \ ((w)<<(k)) #define BM_SHR(w,k) \ ((w)>>(k)) /* rotate word w (of bits n..0) k bits to the left or to the right */ #define BM_ROL(w,n,k) \ ((BM_SHL((w),(k))&BM_MASK(n,0))|BM_SHR(((w)&BM_MASK(n,0)),(n)-(k))) #define BM_ROR(w,n,k) \ ((BM_SHR(((w)&BM_MASK(n,0)),(k)))|BM_SHL(((w),(n)-(k))&BM_MASK(n,0))) #endif /* __UUID_BM_H__ */ @ 1.8 log @adjust copyright messages for 2008 and bump version in advance @ text @@ 1.7 log @Adjust copyright messages for new year 2007. @ text @d3 2 a4 2 ** Copyright (c) 2004-2007 Ralf S. Engelschall ** Copyright (c) 2004-2007 The OSSP Project @ 1.6 log @Adjust copyright messages for new year 2006. @ text @d3 2 a4 2 ** Copyright (c) 2004-2006 Ralf S. Engelschall ** Copyright (c) 2004-2006 The OSSP Project @ 1.5 log @Cleanup the source code even more by following a large set of FlexeLint's suggestions. @ text @d3 2 a4 2 ** Copyright (c) 2004-2005 Ralf S. Engelschall ** Copyright (c) 2004-2005 The OSSP Project @ 1.4 log @Adjust copyright messages for new year 2005. @ text @d41 1 a41 1 (((1<<((l)-(r)+1))-1)<<(r)) d75 1 a75 1 (BM_SHL((w),(k))&BM_MASK(n,0))|BM_SHR(((w)&BM_MASK(n,0)),(n)-(k)) d77 1 a77 1 (BM_SHR(((w)&BM_MASK(n,0)),(k)))|BM_SHL(((w),(n)-(k))&BM_MASK(n,0)) @ 1.3 log @fix implementation bug @ text @d3 2 a4 2 ** Copyright (c) 2004 Ralf S. Engelschall ** Copyright (c) 2004 The OSSP Project @ 1.2 log @remember that the macros use 'int' type implicitly so are 32 bit only @ text @d65 1 a65 1 BM_BIT(1,n) @ 1.1 log @Implement uuid_dump() and corresponding uuid CLI "-d" option for dumping a given UUID into clear text. For convinience reasons add uuid_bm.h (bit mask API) and uuid_str (string formatting API) sub-modules. @ text @d34 1 a34 1 * Bitmask Calculation Macros @