00001 /* 00002 * Copyright (c) 2000, 2020, Oracle and/or its affiliates. 00003 * 00004 * Licensed under the Universal Permissive License v 1.0 as shown at 00005 * http://oss.oracle.com/licenses/upl. 00006 */ 00007 #ifndef COH_INTEGER64_MIX_HPP 00008 #define COH_INTEGER64_MIX_HPP 00009 00010 #include "coherence/lang.ns" 00011 00012 #include "coherence/util/aggregator/AbstractInteger64Aggregator.hpp" 00013 #include "coherence/util/ValueExtractor.hpp" 00014 00015 COH_OPEN_NAMESPACE3(coherence,util,aggregator) 00016 00017 00018 /** 00019 * Calculates a minimum of numeric values extracted from a set of entries in a 00020 * Map. All the extracted Number objects will be treated as <tt>int64_t</tt> 00021 * values. 00022 * 00023 * @author djl 2008.05.12 00024 */ 00025 class COH_EXPORT Integer64Min 00026 : public class_spec<Integer64Min, 00027 extends<AbstractInteger64Aggregator> > 00028 { 00029 friend class factory<Integer64Min>; 00030 00031 // ----- constructors --------------------------------------------------- 00032 00033 protected: 00034 /** 00035 * Default constructor (necessary for the PortableObject interface). 00036 */ 00037 Integer64Min(); 00038 00039 /** 00040 * Construct a Integer64Min aggregator. 00041 * 00042 * @param vExtractor the extractor that provides a value in the form 00043 * of any object that is a Number 00044 */ 00045 Integer64Min(ValueExtractor::View vExtractor); 00046 00047 /** 00048 * Construct an Integer64Min that will aggregate values extracted 00049 * from a set of InvocableMap::Entry objects. 00050 * 00051 * @param vsMethod the name of the method that could be invoked via 00052 * reflection and that returns values to aggregate; 00053 * this parameter can also be a dot-delimited 00054 * sequence of method names which would result in 00055 * an aggregator based on the ChainedExtractor that 00056 * is based on an array of corresponding 00057 * ReflectionExtractor objects 00058 * 00059 * @since Coherence 12.1.2 00060 */ 00061 Integer64Min(String::View vsMethod); 00062 00063 private: 00064 /** 00065 * Blocked copy constructor. 00066 */ 00067 Integer64Min(const Integer64Min&); 00068 00069 00070 // ----- AbstractAggregator Interface ---------------------------------- 00071 00072 protected: 00073 /** 00074 * {@inheritDoc} 00075 */ 00076 virtual void init(bool fFinal); 00077 00078 /** 00079 * {@inheritDoc} 00080 */ 00081 virtual void process(Object::View v, bool fFinal); 00082 }; 00083 00084 COH_CLOSE_NAMESPACE3 00085 00086 #endif // COH_INTEGER64_MIX_HPP