| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| #ifndef __com_sun_star_util_XAtomServer_idl__ |
| #define __com_sun_star_util_XAtomServer_idl__ |
| |
| #ifndef __com_sun_star_uno_XInterface_idl__ |
| #include <com/sun/star/uno/XInterface.idl> |
| #endif |
| |
| #ifndef __com_sun_star_util_AtomDescription_idl__ |
| #include <com/sun/star/util/AtomDescription.idl> |
| #endif |
| |
| #ifndef __com_sun_star_util_AtomClassRequest_idl__ |
| #include <com/sun/star/util/AtomClassRequest.idl> |
| #endif |
| |
| |
| module com |
| { |
| module sun |
| { |
| module star |
| { |
| module util |
| { |
| |
| /** an interface to map between <i>string</i>s and <i>id</i>s |
| |
| <p>a note on atoms:<br> |
| Atoms are abbreviations for strings. |
| When a string gets registered, it is assigned a numeric id |
| so that said string can always be referred to by this id. |
| This way strings have to be transported only once over remote connections. |
| Valid ids are (in this implementation) non zero, signed 32 bit values. |
| An atom of 0 means that the string in question is not registered</p> |
| |
| <p>Additionally there is the abstraction of atom class:<br> |
| Atoms are grouped into classes, so that an id can be assigned |
| to multiple strings, depending on the class context. The main |
| advantage of this is that atoms in one class may be kept |
| to small numbers, so that bandwidth can be reduced by sending |
| the atoms only as 16 bit values. Note that it is up to the user in this |
| case to handle overflows.</p> |
| */ |
| |
| published interface XAtomServer : com::sun::star::uno::XInterface |
| { |
| /** returns a whole atom class |
| |
| @param atomClass |
| which class to return |
| |
| @returns |
| the descriptions for all atoms of class <code>atomClass</code> |
| */ |
| sequence< AtomDescription > getClass( [in] long atomClass ); |
| /** returns mutltiple atom classes |
| |
| @param atomClasses |
| which classes to return |
| |
| @returns |
| the descriptions for all atoms of the requested classes |
| */ |
| sequence< sequence< AtomDescription > > getClasses( [in] sequence< long > atomClasses ); |
| /** returns the strings for an arbitrary amount of atoms of multiple classes |
| |
| @param atoms |
| describes which strings to return |
| |
| @returns |
| the strings for the requested atoms |
| */ |
| sequence< string > getAtomDescriptions( [in] sequence< AtomClassRequest > atoms ); |
| |
| //----------------------------------------------------------------------- |
| /** returns the atoms that have been registered to a class after an |
| already known atom |
| |
| <p>Hint to implementor: using ascending atoms is the easiest way |
| to decide, which atoms are recent.</p> |
| |
| @param atomClass |
| the class in question |
| |
| @param atom |
| the last known atom |
| |
| @returns |
| all atom description that have been added to class |
| <code>atomClass</code> after <code>atom</code> |
| */ |
| sequence< AtomDescription > getRecentAtoms( [in] long atomClass, [in] long atom ); |
| |
| //----------------------------------------------------------------------- |
| /** registers or searches for a string |
| |
| @param atomClass |
| the class of atoms in question |
| |
| @param description |
| the string in question |
| |
| @param create |
| if true a new atom will be created for an unknown string |
| else the invalid atom (0) will be returned for an unknown string |
| |
| @returns |
| the atom for the string <code>description</code> |
| */ |
| long getAtom( [in] long atomClass, [in] string description, [in] boolean create ); |
| }; |
| |
| |
| }; // module util |
| }; // module star |
| }; // module sun |
| }; // module com |
| |
| |
| #endif |