Oracle® Fusion Middleware C++ API Reference for Oracle Coherence
12c (12.2.1.4.0)

E90870-01

coherence/util/comparator/InverseComparator.hpp

00001 /*
00002 * InverseComparator.hpp
00003 *
00004 * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
00005 *
00006 * Oracle is a registered trademarks of Oracle Corporation and/or its
00007 * affiliates.
00008 *
00009 * This software is the confidential and proprietary information of Oracle
00010 * Corporation. You shall not disclose such confidential and proprietary
00011 * information and shall use it only in accordance with the terms of the
00012 * license agreement you entered into with Oracle.
00013 *
00014 * This notice may not be removed or altered.
00015 */
00016 #ifndef COH_INVERSE_COMPARATOR_HPP
00017 #define COH_INVERSE_COMPARATOR_HPP
00018 
00019 #include "coherence/lang.ns"
00020 
00021 #include "coherence/io/pof/PofReader.hpp"
00022 #include "coherence/io/pof/PofWriter.hpp"
00023 #include "coherence/io/pof/PortableObject.hpp"
00024 #include "coherence/util/Comparator.hpp"
00025 #include "coherence/util/comparator/SafeComparator.hpp"
00026 #include "coherence/util/QueryMap.hpp"
00027 #include "coherence/util/comparator/QueryMapComparator.hpp"
00028 
00029 COH_OPEN_NAMESPACE3(coherence,util,comparator)
00030 
00031 using coherence::io::pof::PofReader;
00032 using coherence::io::pof::PofWriter;
00033 using coherence::io::pof::PortableObject;
00034 using coherence::util::comparator::SafeComparator;
00035 
00036 /**
00037 * Comparator that reverses the result of another comparator.
00038 *
00039 * @author gm  2008.08.05
00040 */
00041 class COH_EXPORT InverseComparator
00042     : public class_spec<InverseComparator,
00043         extends<SafeComparator>,
00044         implements<QueryMapComparator> >
00045     {
00046     friend class factory<InverseComparator>;
00047 
00048     // ----- constructors/destructor ----------------------------------------
00049 
00050     protected:
00051         /**
00052         * Default constructor (necessary for the PortableObject interface).
00053         */
00054         InverseComparator();
00055 
00056         /**
00057         * Construct a InverseComparator.
00058         *
00059         * @param vComparator  the comparator whose results are inverted by
00060         *                     this Comparator
00061         */
00062         InverseComparator(Comparator::View vComparator);
00063 
00064     private:
00065         /**
00066         * Blocked copy constructor.
00067         */
00068         InverseComparator(const InverseComparator&);
00069 
00070 
00071     // ----- Comparator interface -------------------------------------------
00072 
00073     public:
00074         /**
00075         * Use the wrapped Comparator to compare the two arguments for order and
00076         * negate the result.
00077         *
00078         * @param vO1  the first object to be compared
00079         * @param vO2  the second object to be compared
00080         *
00081         * @return a positive integer, zero, or a negative integer as the first
00082         *         argument is less than, equal to, or greater than the second
00083         *
00084         * @throws ClassCastException if the arguments' types prevent them from
00085         *         being compared by this Comparator.
00086         */
00087         virtual int32_t compare(Object::View vO1, Object::View vO2) const;
00088 
00089     // ----- QueryMap interface ---------------------------------------------
00090 
00091     public:
00092         /**
00093         * Compare two entries using the underlying comparator and negate the
00094         * result.
00095         */
00096         virtual int32_t compareEntries(QueryMap::Entry::View vEntry1,
00097                     QueryMap::Entry::View vEntry2) const;
00098 
00099 
00100     // ----- Object interface -----------------------------------------------
00101 
00102     public:
00103         /**
00104         * {@inheritDoc}
00105         */
00106         virtual bool equals(Object::View v) const;
00107 
00108 
00109     // ----- constants ------------------------------------------------------
00110 
00111     public:
00112         /**
00113         * An instance of the InverseComparator.
00114         */
00115         static InverseComparator::Handle getInstance();
00116     };
00117 
00118 COH_CLOSE_NAMESPACE3
00119 
00120 #endif // COH_INVERSE_COMPARATOR_HPP
Copyright © 2000, 2019, Oracle and/or its affiliates. All rights reserved.