r3735 - in /packages/libset-object-perl/trunk: Changes.pod META.yml
Object.xs README debian/changelog lib/Set/Object.pm
eloy at users.alioth.debian.org
eloy at users.alioth.debian.org
Thu Sep 14 12:48:54 UTC 2006
Author: eloy
Date: Thu Sep 14 12:48:53 2006
New Revision: 3735
URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=3735
Log:
new upstream version
Modified:
packages/libset-object-perl/trunk/Changes.pod
packages/libset-object-perl/trunk/META.yml
packages/libset-object-perl/trunk/Object.xs
packages/libset-object-perl/trunk/README
packages/libset-object-perl/trunk/debian/changelog
packages/libset-object-perl/trunk/lib/Set/Object.pm
Modified: packages/libset-object-perl/trunk/Changes.pod
URL: http://svn.debian.org/wsvn/pkg-perl/packages/libset-object-perl/trunk/Changes.pod?rev=3735&op=diff
==============================================================================
--- packages/libset-object-perl/trunk/Changes.pod (original)
+++ packages/libset-object-perl/trunk/Changes.pod Thu Sep 14 12:48:53 2006
@@ -1,5 +1,22 @@
=head1 REVISION HISTORY FOR Set::Object
+
+=head1 1.18, 14 Sep 2006
+
+=over
+
+=item *
+
+We could only build on gcc due to the use of variadic macros.
+use C<#ifdef> to hide this GCC-specific extension (used only for
+debugging) from non-GCC compilers.
+
+=item *
+
+Add note to man page on compatibility of C<Storable> serializations of
+C<Set::Object>s between revisions.
+
+=back
=head1 1.17, 1 Aug 2006
Modified: packages/libset-object-perl/trunk/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/packages/libset-object-perl/trunk/META.yml?rev=3735&op=diff
==============================================================================
--- packages/libset-object-perl/trunk/META.yml (original)
+++ packages/libset-object-perl/trunk/META.yml Thu Sep 14 12:48:53 2006
@@ -1,7 +1,7 @@
# http://module-build.sourceforge.net/META-spec.html
#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#
name: Set-Object
-version: 1.17
+version: 1.18
version_from: lib/Set/Object.pm
installdirs: site
requires:
Modified: packages/libset-object-perl/trunk/Object.xs
URL: http://svn.debian.org/wsvn/pkg-perl/packages/libset-object-perl/trunk/Object.xs?rev=3735&op=diff
==============================================================================
--- packages/libset-object-perl/trunk/Object.xs (original)
+++ packages/libset-object-perl/trunk/Object.xs Thu Sep 14 12:48:53 2006
@@ -11,23 +11,21 @@
#include "ppport.h"
+#if __GNUC__ >= 3 /* I guess. */
+#define _warn(msg, e...) warn("# (" __FILE__ ":%d): " msg, __LINE__, ##e)
+#else
+#define _warn warn
+#endif
+
// for debugging object-related functions
-#if 0
-#define DEBUG(msg, e...) warn("# (" __FILE__ ":%d): " msg, __LINE__, ##e)
-#else
-#define DEBUG(msg, e...)
-#endif
+#define IF_DEBUG(e)
// for debugging scalar-related functions
#define IF_REMOVE_DEBUG(e)
#define IF_INSERT_DEBUG(e)
// for debugging weakref-related functions
-#if 0
-#define SPELL_DEBUG(msg, e...) DEBUG(msg, ##e)
-#else
-#define SPELL_DEBUG(msg, e...)
-#endif
+#define IF_SPELL_DEBUG(e)
#define SET_OBJECT_MAGIC_backref (char)0x9f
@@ -59,7 +57,7 @@
New(0, pb->sv, 1, SV*);
pb->sv[0] = sv;
pb->n = 1;
- DEBUG("inserting 0x%.8x in bucket 0x%.8x offset %d", sv, pb, 0);
+ IF_DEBUG(_warn("inserting 0x%.8x in bucket 0x%.8x offset %d", sv, pb, 0));
}
else
{
@@ -85,7 +83,7 @@
*hole = sv;
- DEBUG("inserting 0x%.8x in bucket 0x%.8x offset %d", sv, pb, iter - pb->sv);
+ IF_DEBUG(_warn("inserting 0x%.8x in bucket 0x%.8x offset %d", sv, pb, iter - pb->sv));
}
return 1;
@@ -97,28 +95,28 @@
char* key = 0;
if (!s->flat) {
- IF_INSERT_DEBUG(warn("iset_insert_scalar(%x): creating scalar hash", s));
+ IF_INSERT_DEBUG(_warn("iset_insert_scalar(%x): creating scalar hash", s));
s->flat = newHV();
}
//SvGETMAGIC(sv);
key = SvPV(sv, len);
- IF_INSERT_DEBUG(warn("iset_insert_scalar(%x): sv (%x, rc = %d, str= '%s')!", s, sv, SvREFCNT(sv), SvPV_nolen(sv)));
+ IF_INSERT_DEBUG(_warn("iset_insert_scalar(%x): sv (%x, rc = %d, str= '%s')!", s, sv, SvREFCNT(sv), SvPV_nolen(sv)));
if (!hv_exists(s->flat, key, len)) {
if (!hv_store(s->flat, key, len, &PL_sv_undef, 0)) {
- warn("hv store failed[?] set=%x", s);
- }
-
- IF_INSERT_DEBUG(warn("iset_insert_scalar(%x): inserted OK!", s));
+ _warn("hv store failed[?] set=%x", s);
+ }
+
+ IF_INSERT_DEBUG(_warn("iset_insert_scalar(%x): inserted OK!", s));
return 1;
}
else {
- IF_INSERT_DEBUG(warn("iset_insert_scalar(%x): already there!", s));
+ IF_INSERT_DEBUG(_warn("iset_insert_scalar(%x): already there!", s));
return 0;
}
@@ -130,24 +128,24 @@
char* key = 0;
if (!s->flat) {
- IF_REMOVE_DEBUG(warn("iset_remove_scalar(%x): shortcut for %x(str = '%s') (no hash)", s, sv, SvPV_nolen(sv)));
+ IF_REMOVE_DEBUG(_warn("iset_remove_scalar(%x): shortcut for %x(str = '%s') (no hash)", s, sv, SvPV_nolen(sv)));
return 0;
}
//DEBUG("Checking for existance of %s", SvPV_nolen(sv));
//SvGETMAGIC(sv);
- IF_REMOVE_DEBUG(warn("iset_remove_scalar(%x): sv (%x, rc = %d, str= '%s')!", s, sv, SvREFCNT(sv), SvPV_nolen(sv)));
+ IF_REMOVE_DEBUG(_warn("iset_remove_scalar(%x): sv (%x, rc = %d, str= '%s')!", s, sv, SvREFCNT(sv), SvPV_nolen(sv)));
key = SvPV(sv, len);
if ( hv_delete(s->flat, key, len, 0) ) {
- IF_REMOVE_DEBUG(warn("iset_remove_scalar(%x): deleted key", s));
+ IF_REMOVE_DEBUG(_warn("iset_remove_scalar(%x): deleted key", s));
return 1;
} else {
- IF_REMOVE_DEBUG(warn("iset_remove_scalar(%x): key not absent", s));
+ IF_REMOVE_DEBUG(_warn("iset_remove_scalar(%x): key not absent", s));
return 0;
}
@@ -194,11 +192,11 @@
++s->elems;
++ins;
if (s->is_weak) {
- DEBUG("rc of 0x%.8x left as-is, casting magic", el);
+ IF_DEBUG(_warn("rc of 0x%.8x left as-is, casting magic", el));
_cast_magic(s, el);
} else {
SvREFCNT_inc(el);
- DEBUG("rc of 0x%.8x bumped to %d", el, SvREFCNT(el));
+ IF_DEBUG(_warn("rc of 0x%.8x bumped to %d", el, SvREFCNT(el)));
}
}
@@ -210,7 +208,7 @@
BUCKET *bucket_first, *bucket_iter, *bucket_last, *new_bucket;
int i;
- DEBUG("Reindexing, n = %d", s->elems);
+ IF_DEBUG(_warn("Reindexing, n = %d", s->elems));
Renew(s->bucket, newn, BUCKET);
Zero(s->bucket + oldn, oldn, BUCKET);
@@ -245,8 +243,8 @@
}
new_bucket = bucket_first + index;
- DEBUG("0x%.8x moved from bucket %d:0x%.8x to %d:0x%.8x",
- sv, i, bucket_iter, index, new_bucket);
+ IF_DEBUG(_warn("0x%.8x moved from bucket %d:0x%.8x to %d:0x%.8x",
+ sv, i, bucket_iter, index, new_bucket));
insert_in_bucket(new_bucket, sv);
}
@@ -291,16 +289,16 @@
{
if (*el_iter)
{
- DEBUG("freeing 0x%.8x, rc = %d, bucket = 0x%.8x(%d) pos = %d",
+ IF_DEBUG(_warn("freeing 0x%.8x, rc = %d, bucket = 0x%.8x(%d)) pos = %d",
*el_iter, SvREFCNT(*el_iter),
bucket_iter, bucket_iter - s->bucket,
- el_iter - bucket_iter->sv);
+ el_iter - bucket_iter->sv));
if (s->is_weak) {
- SPELL_DEBUG("dispelling magic");
+ IF_SPELL_DEBUG(_warn("dispelling magic"));
_dispel_magic(s,*el_iter);
} else {
- SPELL_DEBUG("removing element");
+ IF_SPELL_DEBUG(_warn("removing element"));
SvREFCNT_dec(*el_iter);
}
*el_iter = 0;
@@ -329,8 +327,8 @@
_dispel_magic(ISET* s, SV* sv) {
SV* self_svrv = s->is_weak;
MAGIC* mg = _detect_magic(sv);
- SPELL_DEBUG("dispelling magic from 0x%.8x (self = 0x%.8x, mg = 0x%.8x)",
- sv, self_svrv, mg);
+ IF_SPELL_DEBUG(_warn("dispelling magic from 0x%.8x (self = 0x%.8x, mg = 0x%.8x)",
+ sv, self_svrv, mg));
if (mg) {
AV* wand = mg->mg_obj;
SV ** const svp = AvARRAY(wand);
@@ -396,14 +394,14 @@
if (strong) {
_dispel_magic(s, *el_iter);
SvREFCNT_inc(*el_iter);
- DEBUG("bumped RC of 0x%.8x to %d", *el_iter,
- SvREFCNT(*el_iter));
+ IF_DEBUG(_warn("bumped RC of 0x%.8x to %d", *el_iter,
+ SvREFCNT(*el_iter)));
}
else {
_cast_magic(s, *el_iter);
SvREFCNT_dec(*el_iter);
- DEBUG("reduced RC of 0x%.8x to %d", *el_iter,
- SvREFCNT(*el_iter));
+ IF_DEBUG(_warn("reduced RC of 0x%.8x to %d", *el_iter,
+ SvREFCNT(*el_iter)));
}
}
}
@@ -416,21 +414,21 @@
SV ** const svp = AvARRAY(av);
I32 i = AvFILLp(av);
- SPELL_DEBUG("_spell_effect (SV=0x%.8x, av_len=%d)", sv,
- av_len(av));
+ IF_SPELL_DEBUG(_warn("_spell_effect (SV=0x%.8x, av_len=%d)", sv,
+ av_len(av)));
while (i >= 0) {
- SPELL_DEBUG("_spell_effect %d", i);
+ IF_SPELL_DEBUG(_warn("_spell_effect %d", i));
if (svp[i] && SvIV(svp[i])) {
ISET* s = INT2PTR(ISET*, SvIV(svp[i]));
- SPELL_DEBUG("_spell_effect i = %d, SV = 0x%.8x", i, svp[i]);
+ IF_SPELL_DEBUG(_warn("_spell_effect i = %d, SV = 0x%.8x", i, svp[i]));
if (!s->is_weak)
Perl_croak(aTHX_ "panic: set_object_magic_killbackrefs (flags=%"UVxf")",
(UV)SvFLAGS(svp[i]));
/* SvREFCNT_dec(svp[i]); */
svp[i] = newSViv(0);
if (iset_remove_one(s, sv, 1) != 1) {
- warn("Set::Object magic backref hook called on non-existent item (0x%x, self = 0x%x)", sv, s->is_weak);
+ _warn("Set::Object magic backref hook called on non-existent item (0x%x, self = 0x%x)", sv, s->is_weak);
};
}
i--;
@@ -453,12 +451,12 @@
mg = _detect_magic(sv);
if (mg) {
- SPELL_DEBUG("sv_magicext reusing wand 0x%.8x for 0x%.8x", wand, sv);
+ IF_SPELL_DEBUG(_warn("sv_magicext reusing wand 0x%.8x for 0x%.8x", wand, sv));
wand = mg->mg_obj;
}
else {
wand=newAV();
- SPELL_DEBUG("sv_magicext(0x%.8x, 0x%.8x, %ld, 0x%.8x, NULL, 0)", sv, wand, how, vtable);
+ IF_SPELL_DEBUG(_warn("sv_magicext(0x%.8x, 0x%.8x, %ld, 0x%.8x, NULL, 0)", sv, wand, how, vtable));
sv_magicext(sv, wand, how, vtable, NULL, 0);
SvRMAGICAL_on(sv);
}
@@ -479,10 +477,10 @@
}
if (free == -1) {
- SPELL_DEBUG("casting self 0x%.8x with av_push", self_svrv, free);
+ IF_SPELL_DEBUG(_warn("casting self 0x%.8x with av_push", self_svrv, free));
av_push(wand, self_svrv);
} else {
- SPELL_DEBUG("casting self 0x%.8x to slot %d", self_svrv, free);
+ IF_SPELL_DEBUG(_warn("casting self 0x%.8x to slot %d", self_svrv, free));
svp[free] = self_svrv;
}
/*
@@ -498,12 +496,12 @@
SV **el_iter, **el_last, **el_out_iter;
BUCKET* bucket;
- DEBUG("removing scalar 0x%.8x from set 0x%.8x", el, s);
+ IF_DEBUG(_warn("removing scalar 0x%.8x from set 0x%.8x", el, s));
if (SvOK(el) && !SvROK(el)) {
- DEBUG("scalar is not a ref (flags = 0x%.8x)", SvFLAGS(el));
+ IF_DEBUG(_warn("scalar is not a ref (flags = 0x%.8x)", SvFLAGS(el)));
if (s->flat) {
- DEBUG("calling remove_scalar for 0x%.8x", el);
+ IF_DEBUG(_warn("calling remove_scalar for 0x%.8x", el));
if (iset_remove_scalar(s, el))
return 1;
}
@@ -524,7 +522,7 @@
el_iter = bucket->sv;
el_out_iter = el_iter;
el_last = el_iter + bucket->n;
- DEBUG("remove: el_last = 0x%.8x, el_iter = 0x%.8x", el_last, el_iter);
+ IF_DEBUG(_warn("remove: el_last = 0x%.8x, el_iter = 0x%.8x", el_last, el_iter));
for (; el_iter != el_last; ++el_iter)
{
@@ -532,14 +530,14 @@
{
if (s->is_weak) {
if (!spell_in_progress) {
- SPELL_DEBUG("Removing ST(0x%.8x) magic", referant);
+ IF_SPELL_DEBUG(_warn("Removing ST(0x%.8x) magic", referant));
_dispel_magic(s,referant);
} else {
- SPELL_DEBUG("Not removing ST(0x%.8x) magic (spell in progress)", referant);
+ IF_SPELL_DEBUG(_warn("Not removing ST(0x%.8x) magic (spell in progress)", referant));
}
} else {
- SPELL_DEBUG("Not removing ST(0x%.8x) magic from Muggle", referant);
+ IF_SPELL_DEBUG(_warn("Not removing ST(0x%.8x) magic from Muggle", referant));
SvREFCNT_dec(referant);
}
*el_iter = 0;
@@ -548,7 +546,7 @@
}
else
{
- SPELL_DEBUG("ST(0x%.8x) != 0x%.8x", referant, *el_iter);
+ IF_SPELL_DEBUG(_warn("ST(0x%.8x) != 0x%.8x", referant, *el_iter));
}
}
return 0;
@@ -571,14 +569,14 @@
SV* isv;
New(0, s, 1, ISET);
- //warn("created set id = %x", s);
+ //_warn("created set id = %x", s);
s->elems = 0;
s->bucket = 0;
s->buckets = 0;
s->flat = 0;
s->is_weak = 0;
- // warning: cast from pointer to integer of different size
+ // _warning: cast from pointer to integer of different size
isv = newSViv( PTR2IV(s) );
sv_2mortal(isv);
@@ -592,7 +590,7 @@
ISET_INSERT(s, ST(item));
}
- DEBUG("set!");
+ IF_DEBUG(_warn("set!"));
PUSHs(self);
XSRETURN(1);
@@ -610,11 +608,11 @@
for (item = 1; item < items; ++item)
{
if ((SV*)s == ST(item)) {
- warn("INSERTING SET UP OWN ARSE");
+ _warn("INSERTING SET UP OWN ARSE");
}
if ISET_INSERT(s, ST(item))
inserted++;
- DEBUG("inserting 0x%.8x 0x%.8x size = %d", ST(item), SvRV(ST(item)), s->elems);
+ IF_DEBUG(_warn("inserting 0x%.8x 0x%.8x size = %d", ST(item), SvRV(ST(item)), s->elems));
}
@@ -653,7 +651,7 @@
if (s->flat) {
if (HvKEYS(s->flat)) {
- //warn("got some keys: %d\n", HvKEYS(s->flat));
+ //_warn("got some keys: %d\n", HvKEYS(s->flat));
XSRETURN_UNDEF;
}
}
@@ -715,7 +713,7 @@
SV* rv;
if (!SvROK(el)) {
- DEBUG("includes! el = %s", SvPV_nolen(el));
+ IF_DEBUG(_warn("includes! el = %s", SvPV_nolen(el)));
if (!iset_includes_scalar(s, el))
XSRETURN_NO;
goto next;
@@ -730,8 +728,8 @@
index = hash & (s->buckets - 1);
bucket = s->bucket + index;
- DEBUG("includes: looking for 0x%.8x in bucket %d:0x%.8x",
- rv, index, bucket);
+ IF_DEBUG(_warn("includes: looking for 0x%.8x in bucket %d:0x%.8x",
+ rv, index, bucket));
if (!bucket->sv)
XSRETURN_NO;
@@ -795,7 +793,7 @@
PUSHs(HeSVKEY_force(he));
}
}
-//warn("that's all, folks");
+//_warn("that's all, folks");
void
clear(self)
@@ -807,7 +805,7 @@
iset_clear(s);
if (s->flat) {
hv_clear(s->flat);
- IF_REMOVE_DEBUG(warn("iset_clear(%x): cleared", s));
+ IF_REMOVE_DEBUG(_warn("iset_clear(%x): cleared", s));
}
void
@@ -816,7 +814,7 @@
CODE:
ISET* s = INT2PTR(ISET*, SvIV(SvRV(self)));
- DEBUG("aargh!");
+ IF_DEBUG(_warn("aargh!"));
iset_clear(s);
if (s->flat) {
hv_undef(s->flat);
@@ -844,7 +842,7 @@
if (s->is_weak)
XSRETURN_UNDEF;
- DEBUG("weakening set (0x%.8x)", SvRV(self));
+ IF_DEBUG(_warn("weakening set (0x%.8x)", SvRV(self)));
s->is_weak = SvRV(self);
@@ -860,7 +858,7 @@
if (!s->is_weak)
XSRETURN_UNDEF;
- DEBUG("strengthening set (0x%.8x)", SvRV(self));
+ IF_DEBUG(_warn("strengthening set (0x%.8x)", SvRV(self)));
_fiddle_strength(s, 1);
@@ -916,15 +914,15 @@
MAGIC* mg;
SV* magic;
if (! SvROK(sv)) {
- warn("tried to get magic from non-reference");
+ _warn("tried to get magic from non-reference");
XSRETURN_UNDEF;
}
if (! (mg = _detect_magic(SvRV(sv))) )
XSRETURN_UNDEF;
- SPELL_DEBUG("found magic on 0x%.8x - 0x%.8x", sv, mg);
- SPELL_DEBUG("mg_obj = 0x%.8x", mg->mg_obj);
+ IF_SPELL_DEBUG(_warn("found magic on 0x%.8x - 0x%.8x", sv, mg));
+ IF_SPELL_DEBUG(_warn("mg_obj = 0x%.8x", mg->mg_obj));
/*magic = newSV(0);
SvRV(magic) = mg->mg_obj;
@@ -1127,7 +1125,7 @@
ISET_INSERT(s, ST(item));
}
- DEBUG("set!");
+ IF_DEBUG(_warn("set!"));
PUSHs(obj);
XSRETURN(1);
Modified: packages/libset-object-perl/trunk/README
URL: http://svn.debian.org/wsvn/pkg-perl/packages/libset-object-perl/trunk/README?rev=3735&op=diff
==============================================================================
--- packages/libset-object-perl/trunk/README (original)
+++ packages/libset-object-perl/trunk/README Thu Sep 14 12:48:53 2006
@@ -1,13 +1,13 @@
-README for Set::Object 1.17
+README for Set::Object 1.18
~~~~~~~~~~~~~~~~~~~~~~~~~~~
-There used to be a reproduction of the man page here, but that's just
-silly.
+Set::Object provides for sets of Perl objects - scalars and references.
-So now I guess I should put the normal things here, like how to
-install the module, etc.
+INSTALLATION
-Oh, look, just go and read another module's README. It's just the
-same, honest. Nothing to see here, move along.
+To install this module type the following:
-Cheers,
-Sam.
+ perl Makefile.PL
+ make
+ make test
+ su root -c "make install"
+
Modified: packages/libset-object-perl/trunk/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-perl/packages/libset-object-perl/trunk/debian/changelog?rev=3735&op=diff
==============================================================================
--- packages/libset-object-perl/trunk/debian/changelog (original)
+++ packages/libset-object-perl/trunk/debian/changelog Thu Sep 14 12:48:53 2006
@@ -1,3 +1,9 @@
+libset-object-perl (1.18-1) unstable; urgency=low
+
+ * New upstream release
+
+ -- Krzysztof Krzyzaniak (eloy) <eloy at debian.org> Thu, 14 Sep 2006 14:45:47 +0200
+
libset-object-perl (1.17-1) unstable; urgency=low
* New upstream release
Modified: packages/libset-object-perl/trunk/lib/Set/Object.pm
URL: http://svn.debian.org/wsvn/pkg-perl/packages/libset-object-perl/trunk/lib/Set/Object.pm?rev=3735&op=diff
==============================================================================
--- packages/libset-object-perl/trunk/lib/Set/Object.pm (original)
+++ packages/libset-object-perl/trunk/lib/Set/Object.pm Thu Sep 14 12:48:53 2006
@@ -308,6 +308,26 @@
test suite and send it to me, otherwise it could get pulled.
=back
+
+=head1 SERIALIZATION
+
+It is possible to serialize C<Set::Object> objects via L<Storable> and
+duplicate via C<dclone>; such support was added in release 1.04. As
+of C<Set::Object> version 1.15, it is possible to freeze scalar items,
+too.
+
+However, the support for freezing scalar items introduced a backwards
+incompatibility. Earlier versions than 1.15 will C<thaw> sets frozen
+using Set::Object 1.15 and later as a set with one item - an array
+that contains the actual members.
+
+Additionally, version 1.15 had a bug that meant that it would not
+detect C<freeze> protocol upgrades, instead reverting to pre-1.15
+behaviour.
+
+C<Set::Object> 1.16 and above are capable of dealing correctly with
+all serialized forms, as well as correctly aborting if a "newer"
+C<freeze> protocol is detected during C<thaw>.
=head1 PERFORMANCE
@@ -395,7 +415,7 @@
@EXPORT_OK = qw( ish_int is_int is_string is_double blessed reftype
refaddr is_overloaded is_object is_key set );
-$VERSION = '1.17';
+$VERSION = '1.18';
bootstrap Set::Object $VERSION;
More information about the Pkg-perl-cvs-commits
mailing list