Oracle Coherence for C++ API
Release 3.6.0.0

E15728-01

coherence/util/extractor/AbstractCompositeExtractor.hpp

00001 /*
00002 * AbstractCompositeExtractor.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_ABSTRACT_COMPOSITE_EXTRACTOR_HPP
00017 #define COH_ABSTRACT_COMPOSITE_EXTRACTOR_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/extractor/AbstractExtractor.hpp"
00024 
00025 COH_OPEN_NAMESPACE3(coherence,util,extractor)
00026 
00027 using coherence::io::pof::PofReader;
00028 using coherence::io::pof::PofWriter;
00029 
00030 
00031 /**
00032 * Abstract super class for ValueExtractor implementations that are based on
00033 * an underlying array of ValueExtractor objects.
00034 *
00035 * @author djl  2008.03.05
00036 */
00037 class COH_EXPORT AbstractCompositeExtractor
00038     : public abstract_spec<AbstractCompositeExtractor,
00039         extends<AbstractExtractor> >
00040     {
00041     friend class factory<AbstractCompositeExtractor>;
00042 
00043     // ----- constructors ---------------------------------------------------
00044 
00045     protected:
00046         /**
00047         * Default constructor (necessary for the PortableObject interface).
00048         */
00049         AbstractCompositeExtractor();
00050 
00051         /**
00052         * Construct a AbstractCompositeExtractor based on the specified
00053         * ValueExtractor array.
00054         *
00055         * @param vaExtractor  the ValueExtractor array
00056         */
00057         AbstractCompositeExtractor(ObjectArray::View vaExtractor);
00058 
00059         /**
00060         * Construct a AbstractCompositeExtractor based on two ValueExtractors.
00061         *
00062         * @param vaE1  the first ValueExtractor
00063         * @param vaE2  the second ValueExtractor
00064         */
00065         AbstractCompositeExtractor(ValueExtractor::View vE1,
00066                 ValueExtractor::View vE2);
00067 
00068 
00069     // ----- PortableObject interface ---------------------------------------
00070 
00071     public:
00072         /**
00073         * {@inheritDoc}
00074         */
00075         virtual void readExternal(PofReader::Handle hIn);
00076 
00077         /**
00078         * {@inheritDoc}
00079         */
00080         virtual void writeExternal(PofWriter::Handle hOut) const;
00081 
00082 
00083     // ----- Object interface -----------------------------------------------
00084 
00085     public:
00086         /**
00087         * Compare the AbstractCompositeExtractor with another object to
00088         * determine equality. Two AbstractCompositeExtractor objects are
00089         * considered equal iff they belong to the same class and their
00090         * underlying ValueExtractor arrays are deep-equal.
00091         *
00092         * @return true iff this AbstractCompositeExtractor and the passed
00093         *         object are equivalent
00094         */
00095         virtual bool equals(Object::View v) const;
00096 
00097         /**
00098         * {@inheritDoc}
00099         */
00100         virtual size32_t hashCode() const;
00101 
00102         /**
00103         * {@inheritDoc}
00104         */
00105         virtual void toStream(std::ostream& out) const;
00106 
00107 
00108     // ----- data member accessors ------------------------------------------
00109 
00110     public:
00111         /**
00112         * Obtain the ValueExtractor array.
00113         *
00114         * @return the ValueExtractor array
00115         */
00116         virtual ObjectArray::View getExtractors() const;
00117 
00118 
00119     // ----- data members ---------------------------------------------------
00120 
00121     protected:
00122         /**
00123         * The ValueExtractor array.
00124         */
00125         MemberView<ObjectArray> m_vaExtractor;
00126     };
00127 
00128 COH_CLOSE_NAMESPACE3
00129 
00130 #endif // COH_ABSTRACT_COMPOSITE_EXTRACTOR_HPP
Copyright © 2000, 2010, Oracle and/or its affiliates. All rights reserved.