1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #ifndef _ELEMENTCOLLECTOR_HXX 25 #define _ELEMENTCOLLECTOR_HXX 26 27 #include "elementmark.hxx" 28 #include <com/sun/star/xml/crypto/sax/XReferenceResolvedListener.hpp> 29 #include <com/sun/star/xml/crypto/sax/ElementMarkPriority.hpp> 30 31 class ElementCollector : public ElementMark 32 /****** elementcollector.hxx/CLASS ElementCollector *************************** 33 * 34 * NAME 35 * ElementCollector -- Class to manipulate an element collector 36 * 37 * FUNCTION 38 * This class is derived from the ElementMark class. Beyond the function 39 * of the ElementMark class, this class also maintains the priority, and 40 * manages the notify process 41 * 42 * HISTORY 43 * 05.01.2004 - implemented 44 * 45 * AUTHOR 46 * Michael Mi 47 * Email: michael.mi@sun.com 48 ******************************************************************************/ 49 { 50 private: 51 /* 52 * the notify priority, is one of following values: 53 * AFTERMODIFY - this ElementCollector will notify after all 54 * internal modifications have finished. 55 * BEFOREMODIFY - this ElementCollector must notify before any 56 * internal modification happens. 57 */ 58 com::sun::star::xml::crypto::sax::ElementMarkPriority m_nPriority; 59 60 /* 61 * the modify flag, representing whether which elementcollector will 62 * modify its data. 63 */ 64 bool m_bToModify; 65 66 /* the notify enable flag, see notifyListener method */ 67 bool m_bAbleToNotify; 68 69 /* whether the listener has been notified */ 70 bool m_bNotified; 71 72 /* the listener to be notified */ 73 com::sun::star::uno::Reference< 74 com::sun::star::xml::crypto::sax::XReferenceResolvedListener > m_xReferenceResolvedListener; 75 76 public: 77 ElementCollector( 78 sal_Int32 nSecurityId, 79 sal_Int32 nBufferId, 80 com::sun::star::xml::crypto::sax::ElementMarkPriority nPriority, 81 bool bToModify, 82 const com::sun::star::uno::Reference< 83 com::sun::star::xml::crypto::sax::XReferenceResolvedListener >& 84 xReferenceResolvedListener); ~ElementCollector()85 virtual ~ElementCollector() {}; 86 87 //bool isInternalNotificationSuppressed() const; 88 com::sun::star::xml::crypto::sax::ElementMarkPriority getPriority() const; 89 bool getModify() const; 90 void notifyListener(); 91 bool isAbleToNotify() const; 92 void setReferenceResolvedListener( 93 const com::sun::star::uno::Reference< 94 com::sun::star::xml::crypto::sax::XReferenceResolvedListener >& 95 referenceResolvedListener); 96 void setSecurityId(sal_Int32 nSecurityId); 97 void doNotify(); 98 ElementCollector* clone( 99 sal_Int32 nId, 100 com::sun::star::xml::crypto::sax::ElementMarkPriority nPriority ) const; 101 }; 102 103 #endif 104 105