GSoC 25: BASIC IDE - Insights from Data Discovery & C++ PoCs [WEEK 4]
Stephan Bergmann
stephan.bergmann at collabora.com
Wed Jul 2 12:43:27 UTC 2025
On 28.06.25 11:12, Devansh Varshney wrote:
> Thanks for the clarification on the registry split. That cleared up the
> confusion I had around why `forName()` worked for types but failed for
> service names like `com.sun.star.frame.Desktop`.
>
> I now understand that:
>
> - Components (services, singletons) are handled by the ServiceManager
> (cppuhelper/source/servicemanager.cxx)
Just to reiterate: the ServiceManager is about component
*implementations*...
> - UNOIDL entities (types, structs, enums) are handled by the TypeManager
> (cppuhelper/source/typemanager.cxx)
...while the TypeManager is about all kinds of UNOIDL entity
*descriptions*, be them types (enums, structs, exceptions, interfaces)
or non-types (modules, services, singletons).
> So for the Object Browser, the data provider will query both systems:
> the ServiceManager for creatable components, and the TypeManager (via
> `theCoreReflection`) for types.
>
> Appreciate the precise pointers. This helps make the data pipeline
> design a lot clearer.
>
>
>
> On Wed, 25 Jun 2025 at 10:48, Stephan Bergmann
> <stephan.bergmann at allotropia.de <mailto:stephan.bergmann at allotropia.de>>
> wrote:
>
> On 6/20/25 10:05, Devansh Varshney wrote:
> > *I have two question:*1. When .rdbfiles are loaded by LibreOffice
> > Runtime, are their contents placed into a single, unified
> > in-memory database, or do they maintain separation within that
> > memory space? With older binary .rdbfiles, regmergewas used
> > to consolidate data from separate .rdbfiles.
>
> Data about the two different kinds of .rdb files, one for component
> (i.e., service and singleton) implementations (i.e., what is
> codified in
> .component files) and one for UNOIDL entities (both types and non-
> types;
> i.e., what is codified in .idl files), are kept distinct, see
> cppuhelper/source/servicemanager.cxx for the former and
> cppuhelper/source/typemanager.cxx for the latter.
>
> > 2. How can we programmatically distinguish a "service name" from an
> > "interface name"? I know interfaces often start with 'X', but is
> there
> > a more definitive method than just naming conventions?
>
> The css.reflection.TypeDescriptionManager service provides information
> about all kinds of UNOIDL entities, both types and non-types (like
> services and singletons).
--
Stephan Bergmann | Principal Software Engineer
Collabora Limited | Platinum Building, Cowley Road, Cambridge CB4 0DS,
UK Registered in England & Wales no 5513718.
More information about the LibreOffice
mailing list