Oracle Coherence for C++ API
Release 3.6.1.0
E18813-01

- Main Page
- Namespaces
- Classes
- Files

# coherence/util/processor/NumberMultiplier.hpp

    00001 /*
    00002 * NumberMultiplier.hpp
    00003 *
    00004 * Copyright (c) 2000, 2010, 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_NUMBER_MULTIPLIER_HPP
    00017 #define COH_NUMBER_MULTIPLIER_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/util/InvocableMap.hpp"
    00024 #include "coherence/util/processor/PropertyProcessor.hpp"
    00025 #include "coherence/util/ValueManipulator.hpp"
    00026
    00027 COH_OPEN_NAMESPACE3(coherence,util, processor)
    00028
    00029 using coherence::io::pof::PofReader;
    00030 using coherence::io::pof::PofWriter;
    00031 using coherence::util::InvocableMap;
    00032 using coherence::util::ValueManipulator;
    00033
    00034
    00035 /**
    00036 * The NumberMultiplier entry processor is used to multiply a property value
    00037 * of a Number type.  Supported types are: Byte, Short, Integer, Long,
    00038 * Float, Double, BigInteger and BigDecimal.
    00039 *
    00040 * @author tb  2008.04.28
    00041 */
    00042 class COH_EXPORT NumberMultiplier
    00043     : public class_spec<NumberMultiplier,
    00044         extends<PropertyProcessor> >
    00045     {
    00046     friend class factory<NumberMultiplier>;
    00047
    00048     // ----- constructors ---------------------------------------------------
    00049
    00050     protected:
    00051         /**
    00052         * Construct an NumberMultiplier processor.
    00053         */
    00054         NumberMultiplier();
    00055
    00056         /**
    00057         * Construct an NumberMultiplier processor that will increment a
    00058         * property value by a specified amount, returning either the old or
    00059         * the new value as specified. The type of the vNumFactor parameter
    00060         * will dictate the type of the original and the new value.
    00061         *
    00062         * @param vManipulator       the ValueManipulator; could be null
    00063         * @param vNumFactor         the Number representing the magnitude and
    00064         *                           sign of the increment
    00065         * @param fPostFactor  pass  true to return the value as it was
    00066         *                           before it was incremented, or pass false
    00067         *                           to return the value as it is after it is
    00068         *                           incremented
    00069         */
    00070         NumberMultiplier(ValueManipulator::View vManipulator,
    00071                 Number::View vNumFactor, bool fPostFactor);
    00072
    00073
    00074     // ----- InvocableMap::EntryProcessor interface -------------------------
    00075
    00076     public:
    00077         /**
    00078         * {@inheritDoc}
    00079         */
    00080         virtual Object::Holder process(InvocableMap::Entry::Handle hEntry) const;
    00081
    00082
    00083     // ----- PortableObject interface ---------------------------------------
    00084
    00085     public:
    00086         /**
    00087         * {@inheritDoc}
    00088         */
    00089         virtual void readExternal(PofReader::Handle hIn);
    00090
    00091         /**
    00092         * {@inheritDoc}
    00093         */
    00094         virtual void writeExternal(PofWriter::Handle hOut) const;
    00095
    00096
    00097     // ----- Describable interface ------------------------------------------
    00098
    00099     public:
    00100         /**
    00101         * {@inheritDoc}
    00102         */
    00103         virtual void outputDescription(std::ostream& out) const;
    00104
    00105
    00106     // ----- data members ---------------------------------------------------
    00107
    00108     protected:
    00109         /**
    00110         * The number to multiply by.
    00111         */
    00112         MemberView<Number> m_vNumFactor;
    00113
    00114         /**
    00115         * Whether to return the value before it was multiplied
    00116         * ("post-factor") or after it is multiplied ("pre-factor").
    00117         */
    00118         bool m_fPostFactor;
    00119     };
    00120
    00121 COH_CLOSE_NAMESPACE3
    00122
    00123 #endif // COH_NUMBER_MULTIPLIER_HPP

Copyright © 2000, 2010, Oracle and/or its affiliates. All rights reserved.