Bump version to 5.0-14
[LibreOffice.git] / filter / source / config / cache / filtercache.hxx
blob2eee9f710be4e87604581b433d1e71b2981c3f2b
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_FILTER_SOURCE_CONFIG_CACHE_FILTERCACHE_HXX
21 #define INCLUDED_FILTER_SOURCE_CONFIG_CACHE_FILTERCACHE_HXX
23 #include "cacheitem.hxx"
24 #include <com/sun/star/uno/Exception.hpp>
25 #include <com/sun/star/util/URL.hpp>
26 #include <com/sun/star/uno/XInterface.hpp>
27 #include <com/sun/star/container/XNameAccess.hpp>
28 #include <com/sun/star/container/XNameContainer.hpp>
29 #include <com/sun/star/container/XNameReplace.hpp>
30 #include <com/sun/star/util/ChangesEvent.hpp>
31 #include <com/sun/star/uno/Reference.h>
32 #include <com/sun/star/uno/Any.h>
33 #include <rtl/ref.hxx>
34 #include <rtl/ustring.hxx>
37 namespace filter{
38 namespace config{
40 class CacheUpdateListener;
45 /** @short implements a cache, which contains all
46 elements of our filter and type detection
47 configuration.
49 @descr The cache itself is threadsafe implemented.
50 Because it should be used as a singleton only.
51 To do so please use reference mechanism as wrapper
52 around this FilterCache class.
54 @attention Because we use a trick to get a full initialized
55 mutex lock during initialization time (means during
56 the constructor runs), the base class FilterCacheLock
57 must be the first of all declared one!
58 Further we make it public. So any user of this class
59 can lock us from outside too.
61 class FilterCache : public BaseLock
64 // public types
66 public:
70 /** @short identify the type of a container item.
72 @descr Because the cache interface is a generic one
73 every group of container items must be specified.
75 enum EItemType
77 E_TYPE ,
78 E_FILTER ,
79 E_FRAMELOADER ,
80 E_CONTENTHANDLER
85 /** @short indicates, which items already exists inside this cache
86 and which not.
88 @descr This cache supports a 2-step load mechanism.
89 First only types (and only some special properties of every type!)
90 but no filters/frame loaders/content handlers will be readed.
91 That should be enough to work with this cache e.g. for loading
92 the first document. After this first document was loaded successfully,
93 a special "load-on-demand-thread" will be started to fill this cache
94 with ALL other information, which was not readed before.
95 Thats the second step. All operations on top of this cache will be
96 blocked then.
98 enum EFillState
100 E_CONTAINS_NOTHING = 0,
101 E_CONTAINS_STANDARD = 1,
102 E_CONTAINS_TYPES = 2,
103 E_CONTAINS_FILTERS = 4,
104 E_CONTAINS_FRAMELOADERS = 8,
105 E_CONTAINS_CONTENTHANDLERS = 16,
106 E_CONTAINS_ALL = 31 // must be a combination of all excepting E_CONTAINS_NOTHING! Please update if items will be added or removed ...
110 // private types
112 private:
115 /** @short regulate, which properties of a configured item
116 will be readed.
118 @descr To perform reading of all configuration items,
119 only standard properties will be handled. At a second
120 step all optional properties will be read and added to
121 our internal structures. Of course the combination of
122 both options can be used too, to get all properties
123 at the same time.
125 enum EReadOption
127 E_READ_NOTHING = 0,
128 E_READ_STANDARD = 1,
129 E_READ_UPDATE = 2,
130 E_READ_ALL = 3
134 /** @short indicates the state of a configuration set item.
136 @descr Inside method flush we check:
137 <ul>
138 <li>if the item exists inside config layer but not inside our cache => REMOVED</li>
139 <li>if the item exists inside config layer and inside our cache => CHANGED</li>
140 <li>if the item does not exists inside config layer but inside our cache => ADDED.</li>
141 </ul>
143 enum EItemFlushState
145 /// indicates an unchanged item (can occur e.g. if an item was added and(!) removed before it was flushed ...
146 E_ITEM_UNCHANGED = 0,
147 /// indicates an item, which exists inside config layer but not inside our own cache
148 E_ITEM_REMOVED = 1,
149 /// indicates an item, which exists inside config layer and inside our own cache
150 E_ITEM_CHANGED = 2,
151 /// indicates an item, which does not exists inside config layer but inside our own cache
152 E_ITEM_ADDED = 3
156 /** TODO document me */
157 enum EConfigProvider
159 E_PROVIDER_TYPES = 0,
160 E_PROVIDER_FILTERS = 1,
161 E_PROVIDER_OTHERS = 2,
162 E_PROVIDER_OLD = 3
166 // member
168 private:
171 /** @short holds the used configuration provider alive, which
172 provides access to the list of types. */
173 mutable css::uno::Reference< css::uno::XInterface > m_xConfigTypes;
176 /** @short holds the used configuration provider alive, which
177 provides access to the list of filters. */
178 mutable css::uno::Reference< css::uno::XInterface > m_xConfigFilters;
181 /** @short holds the used configuration provider alive, which
182 provides access to the list of other values needed
183 by our type detection framework. */
184 mutable css::uno::Reference< css::uno::XInterface > m_xConfigOthers;
187 /** @short contains all loaded types with its properties. */
188 mutable CacheItemList m_lTypes;
191 /** @short contains all loaded filters with its properties. */
192 mutable CacheItemList m_lFilters;
195 /** @short contains all loaded frame loader with its properties. */
196 mutable CacheItemList m_lFrameLoaders;
199 /** @short contains all loaded content handler with its properties. */
200 mutable CacheItemList m_lContentHandlers;
203 /** @short optimize mapping of URL extensions to a type representation,
204 by using extensions as key and a list of internal
205 type names as value. */
206 mutable CacheItemRegistration m_lExtensions2Types;
209 /** @short optimize mapping of URL pattern to a type representation,
210 by using patterns as key and a list of internal
211 type names as value. */
212 mutable CacheItemRegistration m_lURLPattern2Types;
215 /** @short contains the current locale of the office and will be
216 used to work with localized configuration values. */
217 OUString m_sActLocale;
220 /** @short contains status, which cache items/properties
221 was already loaded from the underlying configuration.
223 @descr This information can be used to detect missing
224 information and load it on demand.
226 @see EFillState
227 @see load()
229 EFillState m_eFillState;
232 /** TODO document me ... */
233 OUStringList m_lChangedTypes;
234 OUStringList m_lChangedFilters;
235 OUStringList m_lChangedFrameLoaders;
236 OUStringList m_lChangedContentHandlers;
238 /// standard property names for filter config keyed by EReadOption
239 css::uno::Sequence< OUString > m_aStandardProps[4];
241 /// type property names for filter config keyed by EReadOption
242 css::uno::Sequence< OUString > m_aTypeProps[4];
244 /// readonly acccess to the module configuration of OOo
245 css::uno::Reference< css::container::XNameAccess > m_xModuleCfg;
247 rtl::Reference< CacheUpdateListener > m_xTypesChglisteners;
248 rtl::Reference< CacheUpdateListener > m_xFiltersChgListener;
251 // interface
253 public:
256 // ctor/dtor
258 /** @short standard ctor
260 @descr Its not allowed to do anything here ...
261 especially is forbidden to start operations,
262 which needs a FilterCache instance too!
263 Why? Because thie FilterCache instance will be
264 used as a singleton! And if during this ctor any
265 action related to this FilterCache singleton is
266 started ... a race will be the result.
268 The first method after construction of a new
269 singleton reference should be "load()". There
270 a special fill state of this cache can be forced.
272 FilterCache();
276 /** @short standard dtor.
278 virtual ~FilterCache();
282 /** @short creates a copy of this container.
284 @descr Such copy can be used then to modify items (add/change/remove)
285 without the risk to damage the original container.
286 After its changed data was flushed to the configuration it can be
287 removed.
289 The original container will get these new data automatically
290 because it listen for changes on the internal used configuration layer.
291 If the new data are needed immediately inside the original container,
292 the method takeOver() can be used to copy all changes back.
293 The may be following notifications of the configuration will be superflous then.
294 But they can't be stopped ...
296 All internal structures will be copied here. But the internal used
297 configuration (update) access wont be copied. The cloned instance contains
298 a different one.
300 @note The cloned instance is created on the heap. The user of this instance
301 has to remove it later.
303 FilterCache* clone() const;
307 /** @short copy the cache content or rClone back to this instance.
309 void takeOver(const FilterCache& rClone);
313 /** @short force special fill state of this cache.
315 @descr This method checks, if all requested items/properties already
316 exist. Only missing information will be readed.
317 Otherwise this method does nothing!
319 This method must be called from every user of this cache
320 every time it needs a filled cache. Normally we load
321 only standard information into this cache on startup.
323 @throw An exception if the cache could not be filled really
324 or seems to be invalid afterwards. But there is no reaction
325 at all if this method does nothing inside, because the cache
326 is already full filled!
328 void load(EFillState eRequired)
329 throw(css::uno::Exception);
333 /** @short return the current fill state of this cache.
335 @descr This information can be used e.g. to start
336 a search on top of this cache with a minimum on
337 information ... and do it again, if some other
338 cache items seems to be available after calling of "loadAll()"
339 on this cache and first search does not had any valid results.
341 @return sal_True if the required fill state exists for this cache; FALSE
342 otherwise.
344 bool isFillState(EFillState eRequired) const
345 throw(css::uno::Exception);
349 /** @short return a list of key names for items, which match
350 the specified criteria.
352 @descr The returned key names can be used at another method "getItem()"
353 of this cache to get further information about this item.
355 @attention Please note: because this cache can be used inside multithreaded
356 environments, such returned key name can point to an already removed
357 item! Please be aware of some "NoSuchElementExceptions" if you try to
358 call any other method of this cache in relation to this key name.
360 @param eType
361 specify the sub container of this cache, which should be used for
362 searching. see also EItemType.
364 @param lIProps
365 specify the property set, which must exist at the searched items
366 as minimum.
368 @param lEProps
369 specify the property set, which must not(!) exist at the searched items
370 as minimum.
372 @return [OUStringList]
373 a list of key names, which identify items of the queried sub container.
374 May be an empty list.
376 @throw [css::uno::Exception]
377 if some input parameter are wrong or the cache itself is not valid
378 any longer, because any operation before damage it.
380 OUStringList getMatchingItemsByProps( EItemType eType ,
381 const CacheItem& lIProps ,
382 const CacheItem& lEProps = CacheItem()) const
383 throw(css::uno::Exception);
387 /** @short indicates if the requested sub container
388 contains some items.
390 @descr We dont provide any information about the count
391 of such items. Because we dont implement any index
392 based interface! The information "we have items or not"
393 must be enough for the outside code ... till somewhere
394 give us a good reason. :-)
396 @param eType
397 specify the sub container of this cache, which should be used.
398 see also EItemType.
400 @return [sal_Bool]
401 True, if the requested sub container contains some items;
402 False otherwise.
404 @throw [css::uno::Exception]
405 if some input parameter are wrong or the cache itself is not valid
406 any longer, because any operation before damage it.
408 bool hasItems(EItemType eType) const
409 throw(css::uno::Exception);
413 /** @short return a list of all key names, which represent
414 an item inside the specified sub container.
416 @attention Please note: because this cache can be used inside multithreaded
417 environments, such returned key names can point to some already removed
418 items! Please be aware of some "NoSuchElementExceptions" if you try to
419 call any other method of this cache in relation to this key names.
421 @param eType
422 specify the sub container of this cache, which should be used for
423 searching. see also EItemType.
425 @return [OUStringList]
426 a list of key names, which can be used to access the item properties
427 using some other methods of this cache.
429 @throw [css::uno::Exception]
430 if some input parameter are wrong or the cache itself is not valid
431 any longer, because any operation before damage it.
433 OUStringList getItemNames(EItemType eType) const
434 throw(css::uno::Exception);
438 /** @short check if the required item exist inside this container.
440 @attention This method exists to supports some UNO container interfaces
441 only. (e.g. XNameAccess.hasByName()). But inside multithreaded
442 environments there is no guarantee, that this item still exists, if
443 its really requested e.g. by calling getItem()!
444 Be aware of some NoSuchElementExistExceptions ...
446 @param eType
447 specify the sub container of this cache, which should be used.
448 see also EItemType.
450 @param sItem
451 the key name of the requested item inside the pecified sub container.
453 @throw [css::uno::Exception]
454 if some input parameter are wrong or the cache itself is not valid
455 any longer, because any operation before damage it.
457 bool hasItem( EItemType eType,
458 const OUString& sItem)
459 throw(css::uno::Exception);
463 /** @short return an item, which match the specified type and name.
465 @descr Because this cache can be used inside multithreaded environments
466 the caller must be aware of some exceptions - especially a "NoSuchElementExcepotion".
467 May another thread already removed the required item before ...
469 @param eType
470 specify the sub container of this cache, which should be used for
471 searching. see also EItemType.
473 @param sItem
474 specify the requested item by its key name.
476 @return [CacheItem]
477 the required item if it could be located ...
478 But we throw an exception if the required item does not exist!
480 @throw [css::container::NoSuchElementException]
481 if the required item does not still exist.
483 @throw [css::uno::Exception]
484 if some input parameter are wrong or the cache itself is not valid
485 any longer, because any operation before damage it.
487 CacheItem getItem( EItemType eType,
488 const OUString& sItem)
489 throw(css::uno::Exception);
493 /** TODO document me ...
495 void removeItem( EItemType eType,
496 const OUString& sItem)
497 throw(css::uno::Exception);
501 /** TODO document me ...
503 void setItem( EItemType eType ,
504 const OUString& sItem ,
505 const CacheItem& aValue)
506 throw(css::uno::Exception, std::exception);
510 /** TODO document me ...
512 void refreshItem( EItemType eType,
513 const OUString& sItem)
514 throw(css::uno::Exception);
518 /** @short add some implicit properties to the given
519 cache item reference.
521 @descr Such properties can e.g. finalized or mandatory.
522 They are not persistent and not really part of e.g. a
523 filter not. But they are attributes of a configuration
524 entry and can influence our container interface.
526 @attention These properties are not part of the normal CacheItem
527 returned by the method getItem(). Because getItem() is
528 used internally too but these specialized properties
529 are needed at our container services only. So these
530 function sets are different to allow different handling.
532 @param eType
533 specify the sub container of this cache, which should be used for
534 searching. see also EItemType.
536 @param sItem
537 specify the requested item by its key name.
539 @param rItem
540 contains already the normal properties of this item,
541 and will be used as out parameter to add the implicit
542 attributes there.
544 @throw [css::uno::Exception]
545 if an internal error occurred.
546 Note: If the item is missing inside the underlying configuration
547 no exception will be thrown. In such case the item is marked as
548 finalized/mandatory automatically
549 Reason: May be the item cames from the old configuration package and
550 was not migrated to the new one. So we can't provide write access
551 to such items ...
553 void addStatePropsToItem( EItemType eType,
554 const OUString& sItem,
555 CacheItem& rItem)
556 throw(css::uno::Exception);
560 /** TODO document me
562 static void removeStatePropsFromItem(CacheItem& aValue)
563 throw(css::uno::Exception);
567 /** @short force writing of all changes (which was made after
568 last flush was called) back to the configuration.
570 @descr TODO
572 @throw [css::uno::Exception]
573 if the cache itself is not valid
574 any longer, because any operation before damage it.
576 void flush()
577 throw(css::uno::Exception);
581 /** @short supports a flat type detection for given URL.
583 @descr Because such detection works on our optimized internal
584 structures (e.g. mapping from extensions/pattern to type names),
585 it should be made inside this cache.
587 @param aURL
588 URL of the content, which type should be detected.
589 Its already parsed and splitted into its different parts,
590 like e.g.: main, jump marks etcpp.
592 @param rFlatTypes
593 used as [out] parameter to add all types, which match to the given
594 URL. Further an information is added for every type. It indicates, how
595 this type is related to the specified URL (means e.g. if it matches
596 by extension or URLPattern ...).
598 @attention Please note: because this cache can be used inside multithreaded
599 environments, such returned key names can point to some already removed
600 items! Please be aware of some "NoSuchElementExceptions" if you try to
601 call any other method of this cache in relation to this key names.
603 @throw [css::uno::Exception]
604 if the cache itself is not valid
605 any longer, because any operation before damage it.
607 void detectFlatForURL(const css::util::URL& aURL ,
608 FlatDetection& rFlatTypes) const
609 throw(css::uno::Exception);
612 // private helper
614 private:
618 /** @short return a reference to one of our internal
619 sub container, which contains items of the
620 requested type.
622 @param eType
623 specify, which sub container is needed outside.
625 @return [CacheItemList&]
626 a reference(!) to the right sub container member.
628 @throw [css::uno::Exception]
629 if the required list does not exist.
631 const CacheItemList& impl_getItemList(EItemType eType) const;
633 CacheItemList& impl_getItemList(EItemType eType);
637 /** @short return a valid configuration update access
638 to the underlying configuration package, which
639 is fix for this cache.
641 @descr It checks first, if the internal member m_xConfig already
642 points to an open update access. If not - it opens a new one.
643 Doing so this method can be called every time a configuration
644 access is needed.
646 @param eProvider
647 specify the needed configuration provider.
648 see EConfigProvider for further information ...
650 @attention If a configuration access was opened successfully
651 all necessary listener connections will be established
652 too. So this cache will be informed about outside updates.
654 css::uno::Reference< css::uno::XInterface > impl_openConfig(EConfigProvider eProvide)
655 throw(css::uno::Exception);
659 /** @short tries to open the requested configuration root
660 using the specified modi.
662 @param sRoot
663 specify the configuration root, which should be opened.
665 @param bReadOnly
666 enable/disable write access on the returned configuration
667 object.
669 @param bLocalesMode
670 enable/disable special handling of localized configuratiom
671 items by the returned configuration object.
673 @return A valid reference, if the configuration access could be opened
674 and initialized within the requested modes successfully;
675 a NULL reference otherwise.
677 css::uno::Reference< css::uno::XInterface > impl_createConfigAccess(const OUString& sRoot ,
678 bool bReadOnly ,
679 bool bLocalesMode);
683 /** @short reads the specified configuration key
684 and return its value.
686 @descr The specified key must be an absolute configuration path,
687 which can be splitted into its package and relative path tokens.
689 @attention Because this function might opens a new configuration
690 read access for reading one key value only, it should
691 be used in rare cases only. Its an easy way ... but an
692 expensive one.
694 @param sDirectKey
695 the absolute configuration path, which should be readed.
697 @return [css::uno::Any]
698 the value of the requested key.
699 Can be empty if an internal error occurred or if the requested
700 key does not exists!
702 css::uno::Any impl_getDirectCFGValue(const OUString& sDirectKey);
706 /** @short load the underlying configuration into this cache.
708 @descr Which items should be readed can be regulate by the
709 parameter eRequiredState. That provides the possibility
710 to load standard values on startup only and update this
711 cache later on demand with all available information.
713 @param eRequiredState
714 indicates, which fill state this cache should have afterwards.
716 void impl_load(EFillState eRequiredState)
717 throw(css::uno::Exception);
721 /** @short validate the whole cache and create
722 structures for optimized items access.
724 @descr Wrong cache items will be removed automatically.
725 Wrong dependencies will be corrected automatically.
726 If something could not be repaired - an exception
727 is thrown.
728 Further some optmized structures will be created.
729 E.g.: a hash to map extensions to her types.
731 @attention There is no exception, if the cache could be repaired
732 but contained wrong elements before!
734 @throw [css::uno::Exception]
735 if cache is invalid and could not be repaired.
737 void impl_validateAndOptimize()
738 throw(css::uno::Exception);
740 private:
744 /** @short read the specified config set into the cache.
746 @descr This method provides the following mechanism for reading:
747 a) read only standard properties of set items
748 b) read anything
749 c) read only optional properties and update already existing
750 items of the specified cache
752 @param xConfig
753 API which provides access to the required configuration set.
755 @param eType
756 specify the type of config item, which must be interpreted.
757 Of course this information can be used to locate the right set
758 at the given xConfig API object.
760 @param eOption
761 regulate reading of standard/optional or all properties.
763 @param pCache
764 points to the cache member, which should be filled or updated.
766 @throw [css::uno::Exception]
767 if an unrecoverable error occurs inside this operation.
769 void impl_loadSet(const css::uno::Reference< css::container::XNameAccess >& xConfig,
770 EItemType eType ,
771 EReadOption eOption,
772 CacheItemList* pCache )
773 throw(css::uno::Exception);
777 /** @short read the specified container item from the given configuration set.
779 @descr Its not added to any internal structures here. That must be done
780 outside this method.
782 @param xSet
783 provides access to the configuration set, which includes all items.
785 @param eType
786 specify, which container item type must be readed.
788 @param sItem
789 means the internal name, which can be used to address the item
790 properties relative to the given configuration set.
792 @param eOption
793 regulate, which properties of the requested item should be read.
794 See definition of EReadOption for further information.
796 @throw [css::uno::Exception]
797 if an unrecoverable error occurs inside this operation.
799 CacheItem impl_loadItem(const css::uno::Reference< css::container::XNameAccess >& xSet ,
800 EItemType eType ,
801 const OUString& sItem ,
802 EReadOption eOption)
803 throw(css::uno::Exception);
807 /** @short try to load the requested item on demand from the underlying configuration
808 layer.
810 @descr The outside code has to be sure, that the item does not already exists
811 inside this cachse. Otherwise it will be loaded twice. This method
812 doesn't check such constellations!
814 @param eType
815 specify the type of config item, which must be interpreted.
816 Of course this information can be used to locate the right set
817 at the given xConfig API object.
819 @param sItem
820 the set node name of the requested item.
822 @return An iterator, which points directly to the new cached item.
823 Is a valid iterator if no exception occurred here!
824 But to improve robustness - it should be checked :-)
826 @throw [css::container::NoSuchElementException]
827 if the item does not exists inside the configuration layer too!
829 @throw [css::uno::Exception]
830 if an unrecoverable error occurs inside this operation.
832 CacheItemList::iterator impl_loadItemOnDemand( EItemType eType,
833 const OUString& sItem)
834 throw(css::uno::Exception);
838 /** TODO */
839 static void impl_saveItem(const css::uno::Reference< css::container::XNameReplace >& xSet ,
840 EItemType eType ,
841 const CacheItem& aValue)
842 throw(css::uno::Exception);
846 /** TODO */
847 void impl_addItem2FlushList( EItemType eType,
848 const OUString& sItem)
849 throw(css::uno::Exception);
854 /** TODO */
855 static void impl_flushByList(const css::uno::Reference< css::container::XNameAccess >& xSet ,
856 EItemType eType ,
857 const CacheItemList& rCache,
858 const OUStringList& lItems)
859 throw(css::uno::Exception);
862 /** @short specify, which save operation is necessary for the specified item.
864 @desrc If an item of this cache will be added/removed or modified it will
865 be changed inside memory only first. But we save its name inside a special
866 list of changed items. If at least the method flush() is called, we use
867 this list to check if the item was changed/added or removed. This method
868 checks the exist state of the requested item inside our own cache
869 and inside the underlying configuration layer to find out, if the item
870 must be removed/added or modified inside the configuratuion layer.
872 @param xSet
873 points directly to the configuration set, where the item should resist
874 (if it exists!).
876 @param rList
877 points to our internal cache list, where the item should resist
878 (if it exists!).
880 @param sItem
881 the internal name of the item, which should be checked.
883 @return An enum value of type EItemFlushState, which indicates the needed
884 API operation for updating the underlying configuration layer.
886 @throws An exception if anything failed inside this operation.
887 e.g. the given configuration set was not open.
889 static EItemFlushState impl_specifyFlushOperation(const css::uno::Reference< css::container::XNameAccess >& xSet ,
890 const CacheItemList& rList,
891 const OUString& sItem)
892 throw(css::uno::Exception);
896 /** TODO */
897 void impl_readPatchUINames(const css::uno::Reference< css::container::XNameAccess >& xNode,
898 CacheItem& rItem)
899 throw(css::uno::Exception);
903 /** TODO */
904 static void impl_savePatchUINames(const css::uno::Reference< css::container::XNameReplace >& xNode,
905 const CacheItem& rItem)
906 throw(css::uno::Exception);
908 /** TODO */
909 void impl_readOldFormat();
911 /** TODO */
912 CacheItem impl_readOldItem(const css::uno::Reference< css::container::XNameAccess >& xSet ,
913 EItemType eType,
914 const OUString& sItem)
915 throw(css::uno::Exception);
919 /** TODO */
920 static void impl_interpretDataVal4Type(const OUString& sValue,
921 sal_Int32 nProp ,
922 CacheItem& rItem );
926 /** TODO */
927 static void impl_interpretDataVal4Filter(const OUString& sValue,
928 sal_Int32 nProp ,
929 CacheItem& rItem );
933 /** TODO */
934 static OUStringList impl_tokenizeString(const OUString& sData ,
935 sal_Unicode cSeparator);
939 #if OSL_DEBUG_LEVEL > 0
940 /** TODO */
941 OUString impl_searchFrameLoaderForType(const OUString& sType) const;
942 OUString impl_searchContentHandlerForType(const OUString& sType) const;
943 #endif
946 /** @short check if the specified OOo module is installed.
948 @param sModule
949 the long name of the module (e.g. "com.sun.star.text.TextDocument").
951 @return sal_True if the requested module is installed; sal_False otherwise.
953 bool impl_isModuleInstalled(const OUString& sModule);
957 /** @short convert a list of flag names to its int representation.
959 @param lNames
960 the list of flag names.
962 @return [sal_Int32]
963 the converted flag field.
965 static sal_Int32 impl_convertFlagNames2FlagField(const css::uno::Sequence< OUString >& lNames);
969 /** @short convert a flag field value to its list representation of flag names.
971 @param nFlags
972 the flag field value
974 @return [seq< string >]
975 the converted flag name list.
977 static css::uno::Sequence< OUString > impl_convertFlagField2FlagNames(sal_Int32 nFlags);
980 } // namespace config
981 } // namespace filter
983 #endif // INCLUDED_FILTER_SOURCE_CONFIG_CACHE_FILTERCACHE_HXX
985 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */