tim-janik requested changes on this pull request.

I've added some review comments inline (trying this out in github to see if 
that's a helpful feature). The most important point is the fact that as<> (or a 
new bse_cast<>) will be temporary measures that we ultimately want to get rid 
of in libbse.

> @@ -57,6 +57,7 @@ typedef enum                                /*< skip >*/
 #define BSE_OBJECT_FLAGS_MAX_SHIFT  (16)
 
 /* --- typedefs & structures --- */
+

woot?

> @@ -88,6 +89,15 @@ struct BseObject : GObject {
   }
 };
 
+template<class ObjectImplP>
+ObjectImplP bse_cast (BseObject *object)

1) return values should always go on their own line, so here, you'd write:

        template<class ObjectImplP> ObjectImplP
        bse_cast (BseObject *object)

2) There're a lot more back and forth conversions going on between C and C++ 
objects. E.g. we have as<> variants for BseItem* -> Bse::ItemImpl, -> 
Bse::ItemIface, -> Bse::ItemImplP, Bse::ItemIfaceP, and also for going from 
each of those to back to BseItem*. A bse_cast<> macro that wants to handle 
those conversions should use SFINAE measures (or static_assert - easier but not 
always possible) to a) only convert BseObject* or derived into C++ types, b) 
convert only Bse::ObjectIface, Bse::ObjectImpl or shared_ptr variants thereof 
into the corresponding BseObject* C type.

I honestly don't know how much work that involves to get right. You might want 
to give it a shot, but please keep in mind that after we've completed the 
SfiProxy property -> C++ accessor and signal -> Aisa::Event migrations, there's 
a huge BSE-internal cleanup phase pending where we'll attempt to merge the 
existing C structs with the Aida C++ classes. So ultimately, the as<> methods 
or any bse_cast<> variant thereof will be a temporary measure.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/tim-janik/beast/pull/34#pullrequestreview-149547902
_______________________________________________
beast mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/beast

Reply via email to