| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 | 
							- /*=============================================================================
 
-   Library: CTK
 
-   Copyright (c) 2010 German Cancer Research Center,
 
-     Division of Medical and Biological Informatics
 
-   Licensed under the Apache License, Version 2.0 (the "License");
 
-   you may not use this file except in compliance with the License.
 
-   You may obtain a copy of the License at
 
-     http://www.apache.org/licenses/LICENSE-2.0
 
-   Unless required by applicable law or agreed to in writing, software
 
-   distributed under the License is distributed on an "AS IS" BASIS,
 
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
-   See the License for the specific language governing permissions and
 
-   limitations under the License.
 
- =============================================================================*/
 
- #include "ctkVersionRange_p.h"
 
- #include <stdexcept>
 
-   const ctkVersionRange& ctkVersionRange::defaultVersionRange()
 
-   {
 
-     static ctkVersionRange defaultVR;
 
-     return defaultVR;
 
-   }
 
-   ctkVersionRange::ctkVersionRange(const QString& vr)
 
-   {
 
-     bool op = vr.startsWith("(");
 
-     bool ob = vr.startsWith("[");
 
-     if (op || ob) {
 
-       bool cp = vr.endsWith(")");
 
-       bool cb = vr.endsWith("]");
 
-       int comma = vr.indexOf(',');
 
-       if (comma > 0 && (cp || cb))
 
-       {
 
-         low = new ctkVersion(vr.mid(1, comma-1).trimmed());
 
-         high = new ctkVersion(vr.mid(comma+1, vr.length()-comma-2).trimmed());
 
-         lowIncluded = ob;
 
-         highIncluded = cb;
 
-       }
 
-       else
 
-       {
 
-         throw std::invalid_argument("Illegal version range: " + vr.toStdString());
 
-       }
 
-     }
 
-     else
 
-     {
 
-       low = new ctkVersion(vr);
 
-       high = 0;
 
-       lowIncluded = true;
 
-       highIncluded = false;
 
-     }
 
-   }
 
-   ctkVersionRange::ctkVersionRange()
 
-   {
 
-     low = new ctkVersion(ctkVersion::emptyVersion());
 
-     high = 0;
 
-     lowIncluded = true;
 
-     highIncluded = false;
 
-   }
 
-   ctkVersionRange::~ctkVersionRange()
 
-   {
 
-     delete low;
 
-     delete high;
 
-   }
 
-   bool ctkVersionRange::isSpecified() const
 
-   {
 
-     return !(*this == defaultVersionRange());
 
-   }
 
-   bool ctkVersionRange::withinRange(const ctkVersion& ver) const
 
-   {
 
-     if (*this == defaultVersionRange())
 
-     {
 
-       return true;
 
-     }
 
-     int c = low->compare(ver);
 
-     if (c < 0 || (c == 0 && lowIncluded))
 
-     {
 
-       if (!high)
 
-       {
 
-         return true;
 
-       }
 
-       c = high->compare(ver);
 
-       return c > 0 || (c == 0 && highIncluded);
 
-     }
 
-     return false;
 
-   }
 
-   bool ctkVersionRange::withinRange(const ctkVersionRange& range) const
 
-   {
 
-     if (*this == range) {
 
-       return true;
 
-     }
 
-     int c = low->compare(*range.low);
 
-     if (c < 0 || (c == 0 && lowIncluded == range.lowIncluded))
 
-     {
 
-       if (!high)
 
-       {
 
-         return true;
 
-       }
 
-       c = high->compare(*range.high);
 
-       return c > 0 || (c == 0 && highIncluded == range.highIncluded);
 
-     }
 
-     return false;
 
-   }
 
-   int ctkVersionRange::compare(const ctkVersionRange& obj) const
 
-   {
 
-     return low->compare(*obj.low);
 
-   }
 
-   QString ctkVersionRange::toString() const
 
-   {
 
-     if (high)
 
-     {
 
-       QString res;
 
-       if (lowIncluded)
 
-       {
 
-         res += '[';
 
-       }
 
-       else
 
-       {
 
-         res += '(';
 
-       }
 
-       res += low->toString() + "," + high->toString();
 
-       if (highIncluded)
 
-       {
 
-         res += ']';
 
-       }
 
-       else
 
-       {
 
-         res += ')';
 
-       }
 
-       return res;
 
-     }
 
-     else
 
-     {
 
-       return low->toString();
 
-     }
 
-   }
 
-   bool ctkVersionRange::operator==(const ctkVersionRange& r) const
 
-   {
 
-     if (*low == *(r.low))
 
-     {
 
-       if (high)
 
-       {
 
-         return (*high == *(r.high))  &&
 
-           (lowIncluded == r.lowIncluded) &&
 
-           (highIncluded == r.highIncluded);
 
-       }
 
-       else
 
-       {
 
-         return true;
 
-       }
 
-     }
 
-     return false;
 
- }
 
 
  |