Hi!
On Thu, Mar 30, 2017 at 11:26:07PM +0200, Tim Janik wrote:
> On 30.03.2017 16:29, Stefan Westerfeld wrote:
> > I updated BSE, and now SpectMorph doesn't compile any more. I think there
> > are
> > (at least) two problems:
> >
> > 1) it seems that SpectMorph code depends on types like uint64 being
> > available
> > at global scope (which used to be the case when using libbse)
> >
> > smencoder.cc: In member function ‘void
> > SpectMorph::Encoder::approx_noise(const std::vector<float>&)’:
> > smencoder.cc:1077:8: error: ‘uint64’ was not declared in this scope
> > for (uint64 frame = 0; frame < audio_blocks.size(); frame++)
> >
> > This could be fixed by SpectMorph defining its own SpectMorph::uint64.
>
> Yes, I'm trying to cut down on namespace pollution.
> I.e. Bse::uint8 and Bse::uint64 should be usable and remain as such,
> as a simple workaround you can just add one line:
>
> using Bse::uint64;
>
> in your namespace.
Ok, I'll have to do this.
> Long term, Rapicorn:: symbols should *also* vanish, most of them (e.g.
> string_format) are just moving into Bse::
>
> > 2) bse headers included by SpectMorph expect undefined types
> >
> > /usr/local/beast/include/bse-0/bse/bseutils.hh:45:42: error: ‘uint8’ does
> > not name a type
> > Bse::Icon bse_icon_from_pixstream (const uint8 *pixstream);
>
> Odd, I'd think that should have shown up here too.
>
> > I wonder if I should produce fixes that replace uint8 with Bse::uint8 in
> > these cases.
>
> For now, a simple way for me to reproduce this would help. E.g. a short
> compilation command or somesuch, because I'm about to do more cleanups where
> I'm
> ideally able to run such tests to reduce fallout.
// g++ -std=gnu++11 -o x x.cc $(pkg-config --libs --cflags bse)
#include <bse/bseutils.hh>
#include <bse/bsecategories.hh>
#include <bse/bsemidievent.hh>
#include <bse/bsemididecoder.hh>
#include <bse/bsepcmwriter.hh>
#include <bse/bseexports.hh>
main()
{
}
I don't know if this covers all errors, but its a start. You could also
#include just
everything from the bse directory (thats how I started to build this test case,
and
later removed the files that we ok).
> > The other option for SpectMorph at this point is to replace all BSE stuff
> > (except for the Beast plugin) completely with non-BSE code. For instance
> > data
> > handles used for reading audio files could be replaced with libsndfile and
> > so
> > forth. This would probably be preferable from a dependency point of view, as
> > depending against libsndfile (for instance) isn't uncommon and easy for
> > packages to do, whereas depending on libbse is not as easy. And API
> > stability
> > of libraries like libsndfile is higher, too.
> >
> > Its still quite a bit of work to completely free the codebase from libbse
> > constructs.
>
> Yeah, sorry for the hassle. Moving away is always an option if you don't have
> higher prio stuff to do. The Data handles for instance should be moved into
> real
> C++ objects at some point (long-long-term). That'll make them much nicer to
> use,
> but that'd be another API break of course.
> The bunch of migrations we've kicked off over the years (see HACKING.md) is
> the
> reason we're still in the 0.x.y versioning realms, and will stay there until
> the
> migrations are finished. Every helping hand for these efforts is of course
> appreciated ;-)
Right. I currently try to analyze and estimate how much work it would really be
to migrate away from bse...
Cu... Stefan
--
Stefan Westerfeld, http://space.twc.de/~stefan
_______________________________________________
beast mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/beast