Skip to content

Commit

Permalink
1.8
Browse files Browse the repository at this point in the history
  • Loading branch information
ugexe committed Dec 13, 2012
1 parent 8587c7a commit 8290b66
Show file tree
Hide file tree
Showing 6 changed files with 103 additions and 62 deletions.
3 changes: 3 additions & 0 deletions Changes
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
Revision history for Perl module Text::Levenshtein::Damerau::XS

1.8 Thu Dec 13 19:07:47
- Fixed bug created by last revision string check

1.7 Thu Dec 13 00:39:41
- Matching string check before calculations take place
- MIN_PERL_VERSION added back to Makefile using different number format
Expand Down
23 changes: 14 additions & 9 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
# CONFIGURE_REQUIRES => { }
# LICENSE => q[perl]
# META_MERGE => { resources=>{ repository=>q[https://github.com/ugexe/Text--Levenshtein--Damerau--XS], bugtracker=>q[https://rt.cpan.org/Public/Dist/Display.html?Name=Text-Levenshtein-Damerau-XS] } }
# MIN_PERL_VERSION => q[5.008008]
# NAME => q[Text::Levenshtein::Damerau::XS]
# PREREQ_PM => { }
# VERSION_FROM => q[lib/Text/Levenshtein/Damerau/XS.pm]
Expand Down Expand Up @@ -59,11 +60,11 @@ DIRFILESEP = /
DFSEP = $(DIRFILESEP)
NAME = Text::Levenshtein::Damerau::XS
NAME_SYM = Text_Levenshtein_Damerau_XS
VERSION = 1.5
VERSION = 1.8
VERSION_MACRO = VERSION
VERSION_SYM = 1_5
VERSION_SYM = 1_8
DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\"
XS_VERSION = 1.5
XS_VERSION = 1.8
XS_VERSION_MACRO = XS_VERSION
XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\"
INST_ARCHLIB = blib/arch
Expand Down Expand Up @@ -265,7 +266,7 @@ RCS_LABEL = rcs -Nv$(VERSION_SYM): -q
DIST_CP = best
DIST_DEFAULT = tardist
DISTNAME = Text-Levenshtein-Damerau-XS
DISTVNAME = Text-Levenshtein-Damerau-XS-1.5
DISTVNAME = Text-Levenshtein-Damerau-XS-1.8


# --- MakeMaker macro section:
Expand Down Expand Up @@ -585,11 +586,12 @@ metafile : create_distdir
$(NOECHO) $(ECHO) ' directory:' >> META_new.yml
$(NOECHO) $(ECHO) ' - t' >> META_new.yml
$(NOECHO) $(ECHO) ' - inc' >> META_new.yml
$(NOECHO) $(ECHO) 'requires: {}' >> META_new.yml
$(NOECHO) $(ECHO) 'requires:' >> META_new.yml
$(NOECHO) $(ECHO) ' perl: 5.008008' >> META_new.yml
$(NOECHO) $(ECHO) 'resources:' >> META_new.yml
$(NOECHO) $(ECHO) ' bugtracker: https://rt.cpan.org/Public/Dist/Display.html?Name=Text-Levenshtein-Damerau-XS' >> META_new.yml
$(NOECHO) $(ECHO) ' repository: https://github.com/ugexe/Text--Levenshtein--Damerau--XS' >> META_new.yml
$(NOECHO) $(ECHO) 'version: 1.5' >> META_new.yml
$(NOECHO) $(ECHO) 'version: 1.8' >> META_new.yml
-$(NOECHO) $(MV) META_new.yml $(DISTVNAME)/META.yml
$(NOECHO) $(ECHO) Generating META.json
$(NOECHO) $(ECHO) '{' > META_new.json
Expand Down Expand Up @@ -625,7 +627,9 @@ metafile : create_distdir
$(NOECHO) $(ECHO) ' }' >> META_new.json
$(NOECHO) $(ECHO) ' },' >> META_new.json
$(NOECHO) $(ECHO) ' "runtime" : {' >> META_new.json
$(NOECHO) $(ECHO) ' "requires" : {}' >> META_new.json
$(NOECHO) $(ECHO) ' "requires" : {' >> META_new.json
$(NOECHO) $(ECHO) ' "perl" : "5.008008"' >> META_new.json
$(NOECHO) $(ECHO) ' }' >> META_new.json
$(NOECHO) $(ECHO) ' }' >> META_new.json
$(NOECHO) $(ECHO) ' },' >> META_new.json
$(NOECHO) $(ECHO) ' "release_status" : "stable",' >> META_new.json
Expand All @@ -637,7 +641,7 @@ metafile : create_distdir
$(NOECHO) $(ECHO) ' "url" : "https://github.com/ugexe/Text--Levenshtein--Damerau--XS"' >> META_new.json
$(NOECHO) $(ECHO) ' }' >> META_new.json
$(NOECHO) $(ECHO) ' },' >> META_new.json
$(NOECHO) $(ECHO) ' "version" : "1.5"' >> META_new.json
$(NOECHO) $(ECHO) ' "version" : "1.8"' >> META_new.json
$(NOECHO) $(ECHO) '}' >> META_new.json
-$(NOECHO) $(MV) META_new.json $(DISTVNAME)/META.json

Expand Down Expand Up @@ -970,10 +974,11 @@ testdb_static :: pure_all $(MAP_TARGET)
# --- MakeMaker ppd section:
# Creates a PPD (Perl Package Description) for a binary distribution.
ppd :
$(NOECHO) $(ECHO) '<SOFTPKG NAME="$(DISTNAME)" VERSION="1.5">' > $(DISTNAME).ppd
$(NOECHO) $(ECHO) '<SOFTPKG NAME="$(DISTNAME)" VERSION="1.8">' > $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <ABSTRACT>XS Damerau Levenshtein edit distance.</ABSTRACT>' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <AUTHOR>Nick Logan &lt;ug@skunkds.org&gt;</AUTHOR>' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <IMPLEMENTATION>' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <PERLCORE VERSION="5,008008,0,0" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <ARCHITECTURE NAME="i486-linux-gnu-thread-multi-5.10" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <CODEBASE HREF="" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' </IMPLEMENTATION>' >> $(DISTNAME).ppd
Expand Down
69 changes: 46 additions & 23 deletions XS.c
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ static int scores(int src[],int tgt[],unsigned int ax,unsigned int ay,unsigned i
unsigned int i,j;
unsigned int scores[ax+2][ay+2];
item *head = NULL;
int INF = ax + ay;
unsigned int INF = ax + ay;
scores[0][0] = INF;

/* setup scoring matrix */
Expand Down Expand Up @@ -226,28 +226,51 @@ XS(XS_Text__Levenshtein__Damerau__XS_cxs_edistance)
int arrTarget [ lenTarget ];
unsigned int lenSource2 = 0;
unsigned int lenTarget2 = 0;

for (i=0; i < lenSource; i++) {
SV** elem = av_fetch(arraySource, i, 0);
int retval = (int)SvIV(*elem);

if (elem != NULL) {
arrSource[ i ] = retval;
lenSource2++;
}
}
for (j=0; j < lenTarget; j++) {
SV** elem = av_fetch(arrayTarget, j, 0);
int retval = (int)SvIV(*elem);

if (elem != NULL) {
arrTarget[ j ] = retval;
lenTarget2++;
}
}

RETVAL = scores(arrSource,arrTarget,lenSource2,lenTarget2,(int)SvIV(maxDistance));
#line 251 "XS.c"
int matchBool = 1;

if(lenSource > 0 && lenTarget > 0) {
if(lenSource != lenTarget)
matchBool = 0;

for (i=0; i < lenSource; i++) {
SV** elem = av_fetch(arraySource, i, 0);
int retval = (int)SvIV(*elem);

if (elem != NULL) {
arrSource[ i ] = retval;
lenSource2++;

/* checks for match */
if(i <= lenTarget)
if(arrSource[i] != arrTarget[i])
matchBool = 0;
}
}
for (j=0; j < lenTarget; j++) {
SV** elem = av_fetch(arrayTarget, j, 0);
int retval = (int)SvIV(*elem);

if (elem != NULL) {
arrTarget[ j ] = retval;
lenTarget2++;

/* checks for match */
if(j <= lenSource)
if(arrSource[j] != arrTarget[j])
matchBool = 0;
}
}

if(matchBool == 1)
RETVAL = 0;
else
RETVAL = scores(arrSource,arrTarget,lenSource2,lenTarget2,(int)SvIV(maxDistance));
}
else {
/* handle a blank string */
RETVAL = (lenSource>lenTarget)?lenSource:lenTarget;
}
#line 274 "XS.c"
XSprePUSH; PUSHi((IV)RETVAL);
}
XSRETURN(1);
Expand Down
Binary file modified XS.o
Binary file not shown.
68 changes: 39 additions & 29 deletions XS.xs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ static int scores(int src[],int tgt[],unsigned int ax,unsigned int ay,unsigned i
unsigned int i,j;
unsigned int scores[ax+2][ay+2];
item *head = NULL;
int INF = ax + ay;
unsigned int INF = ax + ay;
scores[0][0] = INF;

/* setup scoring matrix */
Expand Down Expand Up @@ -133,37 +133,47 @@ CODE:
unsigned int lenTarget2 = 0;
int matchBool = 1;

if(lenSource != lenTarget)
matchBool = 0;
if(lenSource > 0 && lenTarget > 0) {
if(lenSource != lenTarget)
matchBool = 0;

for (i=0; i < lenSource; i++) {
SV** elem = av_fetch(arraySource, i, 0);
int retval = (int)SvIV(*elem);

if (elem != NULL) {
arrSource[ i ] = retval;
lenSource2++;

for (i=0; i < lenSource; i++) {
SV** elem = av_fetch(arraySource, i, 0);
int retval = (int)SvIV(*elem);

if (elem != NULL) {
arrSource[ i ] = retval;
lenSource2++;
}
}
for (j=0; j < lenTarget; j++) {
SV** elem = av_fetch(arrayTarget, j, 0);
int retval = (int)SvIV(*elem);

if (elem != NULL) {
arrTarget[ j ] = retval;
lenTarget2++;

/* checks for match */
if(lenSource == lenTarget)
/* checks for match */
if(i <= lenTarget)
if(arrSource[i] != arrTarget[i])
matchBool = 0;
}
}
for (j=0; j < lenTarget; j++) {
SV** elem = av_fetch(arrayTarget, j, 0);
int retval = (int)SvIV(*elem);

if (elem != NULL) {
arrTarget[ j ] = retval;
lenTarget2++;

/* checks for match */
if(j <= lenSource)
if(arrSource[j] != arrTarget[j])
matchBool = 0;
}
}

if(matchBool == 1)
RETVAL = 0;
else
RETVAL = scores(arrSource,arrTarget,lenSource2,lenTarget2,(int)SvIV(maxDistance));
}
}

if(matchBool == 1)
RETVAL = 0;
else
RETVAL = scores(arrSource,arrTarget,lenSource2,lenTarget2,(int)SvIV(maxDistance));
}
else {
/* handle a blank string */
RETVAL = (lenSource>lenTarget)?lenSource:lenTarget;
}
OUTPUT:
RETVAL
2 changes: 1 addition & 1 deletion lib/Text/Levenshtein/Damerau/XS.pm
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ require Exporter;
*import = \&Exporter::import;
require DynaLoader;

$Text::Levenshtein::Damerau::XS::VERSION = '1.7';
$Text::Levenshtein::Damerau::XS::VERSION = '1.8';

DynaLoader::bootstrap Text::Levenshtein::Damerau::XS $Text::Levenshtein::Damerau::XS::VERSION;

Expand Down

0 comments on commit 8290b66

Please sign in to comment.