X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fcom%2Fstevesoft%2Fpat%2FpatInt.java;h=df0d0285e10ed689ba88bea26057c2a9eb47e9c0;hb=506d60f0e188723ddc91c26824b41ac7034df3fe;hp=f997a52aa7e76f243efd6e84a739a83bb0b590f4;hpb=7bc226b58110fa26d9dbd3f0c78095d06909ffc3;p=jalview.git diff --git a/src/com/stevesoft/pat/patInt.java b/src/com/stevesoft/pat/patInt.java index f997a52..df0d028 100755 --- a/src/com/stevesoft/pat/patInt.java +++ b/src/com/stevesoft/pat/patInt.java @@ -1,171 +1,180 @@ -// -// This software is now distributed according to -// the Lesser Gnu Public License. Please see -// http://www.gnu.org/copyleft/lesser.txt for -// the details. -// -- Happy Computing! -// -package com.stevesoft.pat; - -/** This is just an integer that can have infinite value. - It is used internally to implement the *, and + parts - of regular expressions. - */ -public class patInt -{ - int i; - boolean inf; - /** Initialize to zero. */ - public patInt() - { - i = 0; - inf = false; - } - - /** Initialize to the value of init. */ - public patInt(int init) - { - i = init; - inf = false; - } - - /** Initialize to the value of p. */ - public patInt(patInt p) - { - i = p.i; - inf = p.inf; - } - - /** set this int to infinity. */ - public void setInf(boolean b) - { - inf = b; - if (b) - { - i = Integer.MAX_VALUE; - } - } - - /** Increment the value of this by 1. */ - public final void inc() - { - if (!inf) - { - i++; - } - } - - /** Decrement the value of this by 1. */ - public final void dec() - { - if (!inf) - { - i--; - } - } - - /** Test to see if this is less than or equal to j. */ - public final boolean lessEq(patInt j) - { /* - if(inf) return false; - if(j.inf) return true; - return i <= j.i; */ - return!inf && (j.inf || i <= j.i); - } - - /** Test to see if two patterns are equal. */ - public final boolean equals(patInt j) - { - return!j.inf && !inf && i == j.i; - } - - /** Formats the pattern as a String. Contrary to - what you might expect, infinity is formatted as "" */ - final public String toString() - { - if (inf) - { - return ""; - } - else - { - return "" + i; - } - } - - /** This would be operator+=(patInt) if I were programming - in C++. */ - public final patInt pluseq(patInt p) - { - if (inf || p.inf) - { - setInf(true); - } - else - { - i += p.i; - } - return this; - } - - /** Returns a patInt with value equal to the product - of the value of p and this. */ - public final patInt mul(patInt p) - { - if (inf || p.inf) - { - return new patInf(); - } - return new patInt(i * p.i); - } - - /** If the argument p has a smaller value than this, - then set this Object equal to p. */ - public final patInt mineq(patInt p) - { - if (p.inf) - { - return this; - } - if (inf) - { - i = p.i; - } - else if (p.i < i) - { - i = p.i; - } - setInf(false); - return this; - } - - /** If the argument p has a greater than this, - then set this object equal to p. */ - public final patInt maxeq(patInt p) - { - if (inf || p.inf) - { - setInf(true); - return this; - } - if (p.i > i) - { - i = p.i; - } - return this; - } - - /** Tests to see if this represents an infinite quantity. */ - public boolean finite() - { - return!inf; - } - - /** Converts to a patInt to an int. Infinity is - mapped Integer.MAX_VALUE; - */ - public int intValue() - { - return inf ? Integer.MAX_VALUE : i; - } -}; +// +// This software is now distributed according to +// the Lesser Gnu Public License. Please see +// http://www.gnu.org/copyleft/lesser.txt for +// the details. +// -- Happy Computing! +// +package com.stevesoft.pat; + +/** + * This is just an integer that can have infinite value. It is used internally + * to implement the *, and + parts of regular expressions. + */ +public class patInt +{ + int i; + + boolean inf; + + /** Initialize to zero. */ + public patInt() + { + i = 0; + inf = false; + } + + /** Initialize to the value of init. */ + public patInt(int init) + { + i = init; + inf = false; + } + + /** Initialize to the value of p. */ + public patInt(patInt p) + { + i = p.i; + inf = p.inf; + } + + /** set this int to infinity. */ + public void setInf(boolean b) + { + inf = b; + if (b) + { + i = Integer.MAX_VALUE; + } + } + + /** Increment the value of this by 1. */ + public final void inc() + { + if (!inf) + { + i++; + } + } + + /** Decrement the value of this by 1. */ + public final void dec() + { + if (!inf) + { + i--; + } + } + + /** Test to see if this is less than or equal to j. */ + public final boolean lessEq(patInt j) + { /* + * if(inf) return false; if(j.inf) return true; return i <= j.i; + */ + return !inf && (j.inf || i <= j.i); + } + + /** Test to see if two patterns are equal. */ + public final boolean equals(patInt j) + { + return !j.inf && !inf && i == j.i; + } + + /** + * Formats the pattern as a String. Contrary to what you might expect, + * infinity is formatted as "" + */ + final public String toString() + { + if (inf) + { + return ""; + } + else + { + return "" + i; + } + } + + /** + * This would be operator+=(patInt) if I were programming in C++. + */ + public final patInt pluseq(patInt p) + { + if (inf || p.inf) + { + setInf(true); + } + else + { + i += p.i; + } + return this; + } + + /** + * Returns a patInt with value equal to the product of the value of p and + * this. + */ + public final patInt mul(patInt p) + { + if (inf || p.inf) + { + return new patInf(); + } + return new patInt(i * p.i); + } + + /** + * If the argument p has a smaller value than this, then set this Object equal + * to p. + */ + public final patInt mineq(patInt p) + { + if (p.inf) + { + return this; + } + if (inf) + { + i = p.i; + } + else if (p.i < i) + { + i = p.i; + } + setInf(false); + return this; + } + + /** + * If the argument p has a greater than this, then set this object equal to p. + */ + public final patInt maxeq(patInt p) + { + if (inf || p.inf) + { + setInf(true); + return this; + } + if (p.i > i) + { + i = p.i; + } + return this; + } + + /** Tests to see if this represents an infinite quantity. */ + public boolean finite() + { + return !inf; + } + + /** + * Converts to a patInt to an int. Infinity is mapped Integer.MAX_VALUE; + */ + public int intValue() + { + return inf ? Integer.MAX_VALUE : i; + } +};