From: Carsten P. <car...@ce...> - 2002-10-10 19:45:58
|
-----BEGIN PGP SIGNED MESSAGE----- On Thursday 29 August 2002 13:14, Shigeru Chiba wrote: Hi, I returned from vacation and found some time for OpenC++ again. > I had a look. Indeed, that would work, however they are missing one thi= ng, > which I deem essential. They do not provide spam protection for e-mail > adresses, so sooner or later everybody is going to start getting tons o= f > spam. I went through this and this is quite a lot of trouble and wasted > time, belive me. I think that spam protection is cruicial. I noticed there is now an archive on Sourceforge. And with spam protectio= n=20 even :) Thanks! > I can send you my private archive of OpenC++ mailing list (since around > July 2001), but it is not complete. Let me know if it is ok to send you > about 1MB in e-mail. Yes, that would be great! > > But this linking fails for me, if occ was not compiled with > > - -export-dynamic, which is apparently necessary for GNU ld. > > I'm unfortunately not too experienced with libtool and shared/static > > libraries (nor with autoconf/automake). > > Try if `./configure --enable-shared' works for you. Libtool should take > care of flags passed to the linker, no matter if it is GNU one or not. That worked (after I modified Makefile.gc.in a bit to make it compile --=20 otherwise I got a symlink mark_rts.lo pointing to itself and ar complaini= ng=20 about that). I also had to add the tmplib directory to LD_LIBRARY_PATH so that libocc.= so=20 was found. > This is what I have learnt so far: Environment in OpenC++ is more or le= ss > what Standard calls a "scope". Class has its environment, function has = its [more helpful stuff snipped] Thanks a lot for those explanations, they certainly helped me understand = the=20 code better. > Perhaps the code you are showing was supposed to handle cases like > > class Foo; > class Foo { ... }; > class Foo; Yes, it indeed looks like this was the reason. > To my understanding the correct version should check if the "Inner" cla= ss > found by the lookup is from the same environment as currently elaborate= d > "Inner" class. If not, then it should introduce a class into the curren= t > environment. AFAIR classes are "registered" in two places --- in the > environments where they are defined and in a global data structure (see > `Class::AllClasses()'). I have done the former, checking the environments and only overwriting th= e=20 existing metaobject if they differ. That seems to suffice to fix the wron= g=20 lookup (the testcase that I checked in meanwhile passes). All testcases now pass -- please have a look and tell me if those patches= =20 should be committed. Best wishes Carsten Pfeiffer -----BEGIN PGP SIGNATURE----- iQEVAwUBPaXYWqWgYMJuwmZtAQEqeAf+LxB3oBohS2CCIYYnkNQZ/KCyMkUxUj0u 7QbDBMLhD65gricRLUx6tXluCBRDDKud1iStNOGCp4YUHhcqUmPPBtLZQ4ychcaf v0MeNdJ19b5As9zk4qWtOiwbUsywAajS4uuRvhJLgwPRvQIwBRaX0gl5UQGl1BX4 ikQwR8z3nqTiIQI33S5uRM8uqocoPJoca+qsw2AP5zSlxKxUkP0cLYi0bW0ov3tZ Xi/dvX4HdLzEJHAWghv4cKDTRdZEzKCfzIMy+5ZjoHpUntE/TyV7FgU1IHVxn6Gq rYuoM2YEf3Fj6hL9wBe2SUQKeE3KNrZira/gFFqWeQctORWxvuajkQ=3D=3D =3DLkjV -----END PGP SIGNATURE----- |