Oracle Coherence for C++ API
Release 3.6.0.0

E15728-01

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.