> GObjects are nice for language inteop with GI indeed, but they aren't as cheap
That's a good point, it should be cheap because for the symbol tree code, all
the `TMTag`s have to be wrapped by `GeanySymbol` first and it would be best to
have the overhead as small as possible. If we wanted, we could change
`GeanySymbol` to something like
```C
typedef struct GeanySymbol
{
ExternalSymbol *ext;
TMTag *tag;
gint refcount;
} GeanySymbol;
```
where `ExternalSymbol` would contain all the other members so `GeanySymbol`
with the `TMTag` "backend" would be smaller and would not have to zero-fill so
many members.
> GBoxed works for non-C. You just have to add a non-C-friendly
> allocation/constructor because there's no generic g_boxed_new().
For GeanySymbol, this is hidden behind the two constructors:
```C
GeanySymbol *geany_symbol_new_from_tag(TMTag *tag);
GeanySymbol *geany_symbol_new(gchar *name, gchar *detail, gchar *scope, gchar
*file,
TMParserType lang, glong kind, gulong line, gulong pos, guint icon);
```
so I believe it should be satisfied already.
--
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/pull/3910#issuecomment-2179365178
You are receiving this because you are subscribed to this thread.
Message ID: <geany/geany/pull/3910/[email protected]>