Revert "Upgrade to Devel::PPPort 3.19_02" - we're frozen. This will be great when...
[p5sagit/p5-mst-13.2.git] / cpan / Devel-PPPort / parts / inc / memory
1 ################################################################################
2 ##
3 ##  $Revision: 5 $
4 ##  $Author: mhx $
5 ##  $Date: 2009/01/18 14:10:53 +0100 $
6 ##
7 ################################################################################
8 ##
9 ##  Version 3.x, Copyright (C) 2004-2009, Marcus Holland-Moritz.
10 ##  Version 2.x, Copyright (C) 2001, Paul Marquess.
11 ##  Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
12 ##
13 ##  This program is free software; you can redistribute it and/or
14 ##  modify it under the same terms as Perl itself.
15 ##
16 ################################################################################
17
18 =provides
19
20 __UNDEFINED__
21
22 =implementation
23
24 #ifdef HAS_MEMCMP
25 __UNDEFINED__  memNE(s1,s2,l)  (memcmp(s1,s2,l))
26 __UNDEFINED__  memEQ(s1,s2,l)  (!memcmp(s1,s2,l))
27 #else
28 __UNDEFINED__  memNE(s1,s2,l)  (bcmp(s1,s2,l))
29 __UNDEFINED__  memEQ(s1,s2,l)  (!bcmp(s1,s2,l))
30 #endif
31
32 __UNDEFINED__  MoveD(s,d,n,t)  memmove((char*)(d),(char*)(s), (n) * sizeof(t))
33 __UNDEFINED__  CopyD(s,d,n,t)  memcpy((char*)(d),(char*)(s), (n) * sizeof(t))
34 #ifdef HAS_MEMSET
35 __UNDEFINED__  ZeroD(d,n,t)    memzero((char*)(d), (n) * sizeof(t))
36 #else
37 __UNDEFINED__  ZeroD(d,n,t)    ((void)memzero((char*)(d), (n) * sizeof(t)), d)
38 #endif
39
40 __UNDEFINED__  PoisonWith(d,n,t,b)  (void)memset((char*)(d), (U8)(b), (n) * sizeof(t))
41 __UNDEFINED__  PoisonNew(d,n,t)     PoisonWith(d,n,t,0xAB)
42 __UNDEFINED__  PoisonFree(d,n,t)    PoisonWith(d,n,t,0xEF)
43 __UNDEFINED__  Poison(d,n,t)        PoisonFree(d,n,t)
44
45 __UNDEFINED__  Newx(v,n,t)     New(0,v,n,t)
46 __UNDEFINED__  Newxc(v,n,t,c)  Newc(0,v,n,t,c)
47 __UNDEFINED__  Newxz(v,n,t)    Newz(0,v,n,t)
48
49 =xsubs
50
51 int
52 checkmem()
53   PREINIT:
54     char *p;
55
56   CODE:
57     RETVAL = 0;
58     Newx(p, 6, char);
59     CopyD("Hello", p, 6, char);
60     if (memEQ(p, "Hello", 6))
61       RETVAL++;
62     ZeroD(p, 6, char);
63     if (memEQ(p, "\0\0\0\0\0\0", 6))
64       RETVAL++;
65     Poison(p, 6, char);
66     if (memNE(p, "\0\0\0\0\0\0", 6))
67       RETVAL++;
68     Safefree(p);
69
70     Newxz(p, 6, char);
71     if (memEQ(p, "\0\0\0\0\0\0", 6))
72       RETVAL++;
73     Safefree(p);
74
75     Newxc(p, 3, short, char);
76     Safefree(p);
77
78   OUTPUT:
79     RETVAL
80
81 =tests plan => 1
82
83 ok(Devel::PPPort::checkmem(), 4);
84