Changeset 4270


Ignore:
Timestamp:
10/09/03 18:00:30 (19 years ago)
Author:
piso
Message:

%STRING-NOT-LESSP, %STRING-NOT-GREATERP

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/StringFunctions.java

    r4269 r4270  
    33 *
    44 * Copyright (C) 2003 Peter Graves
    5  * $Id: StringFunctions.java,v 1.9 2003-10-09 17:38:30 piso Exp $
     5 * $Id: StringFunctions.java,v 1.10 2003-10-09 18:00:30 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    354354            int start2 = Fixnum.getInt(args[4]);
    355355            int end2 = Fixnum.getInt(args[5]);
    356             int i, j;
    357             for (i = start1, j = start2; i < end1 && j < end2; i++, j++) {
     356            int i = start1;
     357            int j = start2;
     358            while (true) {
     359                if (i == end1) {
     360                    // Reached end of string1.
     361                    if (j == end2)
     362                        return new Fixnum(i); // Strings are identical.
     363                    return NIL;
     364                }
     365                if (j == end2) {
     366                    // Reached end of string2.
     367                    return new Fixnum(i);
     368                }
    358369                char c1 = Utilities.toUpperCase(array1[i]);
    359370                char c2 = Utilities.toUpperCase(array2[j]);
    360                 if (c1 == c2)
    361                     continue;
    362                 if (c1 > c2)
    363                     return new Fixnum(i);
    364                 if (c1 < c2)
    365                     return NIL;
    366             }
    367             // Strings are equal.
    368             return new Fixnum(i);
     371                if (c1 == c2) {
     372                    ++i;
     373                    ++j;
     374                    continue;
     375                }
     376                if (c1 > c2)
     377                    return new Fixnum(i);
     378                if (c1 < c2)
     379                    return NIL;
     380            }
    369381        }
    370382    };
     
    384396            int start2 = Fixnum.getInt(args[4]);
    385397            int end2 = Fixnum.getInt(args[5]);
    386             int i, j;
    387             for (i = start1, j = start2; i < end1 && j < end2; i++, j++) {
     398            int i = start1;
     399            int j = start2;
     400            while (true) {
     401                if (i == end1) {
     402                    // Reached end of string1.
     403                    return new Fixnum(i);
     404                }
     405                if (j == end2) {
     406                    // Reached end of string2.
     407                    return NIL;
     408                }
    388409                char c1 = Utilities.toUpperCase(array1[i]);
    389410                char c2 = Utilities.toUpperCase(array2[j]);
    390                 if (c1 == c2)
    391                     continue;
    392                 if (c1 < c2)
    393                     return new Fixnum(i);
    394                 if (c1 > c2)
    395                     return NIL;
    396             }
    397             // Strings are equal.
    398             return new Fixnum(i);
     411                if (c1 == c2) {
     412                    ++i;
     413                    ++j;
     414                    continue;
     415                }
     416                if (c1 > c2)
     417                    return NIL;
     418                if (c1 < c2)
     419                    return new Fixnum(i);
     420            }
    399421        }
    400422    };
Note: See TracChangeset for help on using the changeset viewer.