View Full Version : 3.0 development
Bidoche
12th May 2004, 18:54
topic splitted from this thread : http://forum.doom9.org/showthread.php?s=&threadid=75409&perpage=20&pagenumber=4
@Kurosu
From that link, I decided to add the missing "throw()" needed on each occasion. gcc then stopped complaining.Having them doesn't seem to annoy msvc...
The corresponding line is:OwnedBlock( GetEnvironment(), size, recycle ).swap(*this);It seems that for whatever reason, gcc simply discards an argument...Try expanding it to :
OwnedBlock tmp(GetEnvironment(), size, recyle);
swap(tmp);
2) setup a devel list. I don't think forums are well suited for this.Maybe we could ask Richard to reopen the forums on avisynth.org
Not sure if it matters in the actual problem, but I'm very suspicious about the place where the error was raised. It seems gcc still uses its own implementation of the STL :/STLPort can fallback on native headers in some cases.
For exception on my machine, it does not seem to do so.
1) in the project file, bufferwindows.cpp/.h don't belong to Core, but to Core\BufferWindowThe folder didn't exist when I first created the class.
It's only recently that I started moving code there.
But I think it should stay in core, but as header only so plugins can use it too.
2) not so minor as it spams the stdout of the compiler: many of your headers and some source files where a comment (behind a '}' or a #endif) ends the file make gcc complain about a missing newline. Indeed.gcc is indeed annoying. :/
I will make sure everything I commit starting now has this final newline.
Richard Berg
12th May 2004, 21:41
Maybe we could ask Richard to reopen the forums on avisynth.org
Possible, if you want, but I think there's plenty of room in this forum. (It's not exactly high-traffic at the moment).
Kurosu
12th May 2004, 22:41
@Bidoche
Thanks for splitting. Too bad I didn't suspect this, as I've edited my post, seeing you weren't here.
Originally posted by Bidoche
@Kurosu
Having them doesn't seem to annoy msvc...
In fact, it does here: the compiler moans about a lot of undefined symbols when in the link stage. But then, we probably don't have the same version.
Try expanding it to :
OwnedBlock tmp(GetEnvironment(), size, recyle);
swap(tmp);
Works in a way better than my solution as the previous crashed my copy of MS VC++
Maybe we could ask Richard to reopen the forums on avisynth.org
Originally posted by Richard Berg
Possible, if you want, but I think there's plenty of room in this forum. (It's not exactly high-traffic at the moment).
And it's indeed called development forum. But I'm more used to mailing lists for open source projets. Dunno if its the habit, the lack of resource or something else. My guess was that this was rather high-level development, and not yet geared at the user. Of course part of the discussions (if not happening on a mailing-list) regarding development should still be there, as plugin developpers and users have their word to say in the becoming of avisynth.
STLPort can fallback on native headers in some cases.
For exception on my machine, it does not seem to do so.It doesn't for VC++, but for GCC it does use them, although it also emits warnings linked to the actual STLPort headers from time to time. Anyway, it seems to compile fine, so...
The folder didn't exist when I first created the class.
It's only recently that I started moving code there.
But I think it should stay in core, but as header only so plugins can use it too.That was completely aesthetical fix-up, so, OK.
gcc is indeed annoying. :/
I will make sure everything I commit starting now has this final newline.
I've sent you a mail with a zip containing a diff to change those missing newlines, and some of the fixes (or hacks, one would say) to build under gcc/MinGW. I've also included a Makefile+include file to put in the root folder (below src). It #ifdef's parts for MSVC++ and gcc.
I've been able to build 30 files out 46 (from the objects produced by the MS project file), but I'm really stuck on some places:
g++ -I/usr/local/include/boost-1_31 -I/usr/local/include/stlport -D_DEBUG \
-DDEBUG -DINC_OLE2 -DWIN32 -D_WIN32 -D_STLP_DEBUG -c -o \
src/core/environment/concrete.o src/core/environment/concrete.cpp
In file included from src/core/environment/concrete.h:30,
from src/core/environment/concrete.cpp:25:
src/core/cache/concrete.h: In member function `virtual avs::CPVideoFrame
avs::cache::concrete<CacheLogic, Environment>::GetFrame(int)':
src/core/cache/concrete.h:73: warning: `avs::timing::switching_timer<typename
Environment::TimerStackMap>::Chrono' is implicitly a typename
src/core/cache/concrete.h:73: warning: implicit typename is deprecated, please
see the documentation for details
In file included from src/core/environment/concrete.cpp:25:
src/core/environment/concrete.h: At global scope:
src/core/environment/concrete.h:96: error: declaration of `typedef class
avs::timing::timer<Clock>
avs::environment::concrete<Clock>::TimerStackMap::Timer'
src/core/environment/concrete.h:60: error: changes meaning of `Timer' from `
typedef class avs::timing::timer<Clock>
avs::environment::concrete<Clock>::Timer'
make: *** [src/core/environment/concrete.o] Error 1
It's pretty hard to read the code where it is used, as there are several instances of the strings "Timer"/"timer"/"Timer_"/"timer_" which I don't know if they are types/classes or objects. In particular, declaring an object by typedef A A; is pure evil :devil:
There's another occurence of this for Recycler, which I've hacked to the object name Recycler.
Bidoche
13th May 2004, 17:19
In fact, it does here: the compiler moans about a lot of undefined symbols when in the link stage. But then, we probably don't have the same version. I was talking about the missing throw() on exception subclasses methods, were you ?
Works in a way better than my solution as the previous crashed my copy of MS VC++ It is valid C++ though :/
And it's indeed called development forum. But I'm more used to mailing lists for open source projets. Dunno if its the habit, the lack of resource or something else. My guess was that this was rather high-level development, and not yet geared at the user. Of course part of the discussions (if not happening on a mailing-list) regarding development should still be there, as plugin developpers and users have their word to say in the becoming of avisynth.A mailing list may effectively be better for the swarm of atomic and specific topics we may have to take care of...
But I think it should stay in core, but as header only so plugins can use it too.That was completely aesthetical fix-up, so, OK.Aesthically speaking (is that english ?), I think it's normal that a class doesn't belong in the folder (and namespace) with the same name and containing all its support code.
I've sent you a mail with a zip containing a diff to change those missing newlines,how I am supposed to merge that diff into the source files ?
src/core/cache/concrete.h:73: warning: `avs::timing::switching_timer<typename
Environment::TimerStackMap>::Chrono' is implicitly a typename
src/core/cache/concrete.h:73: warning: implicit typename is deprecated..I added the missing typename
It's pretty hard to read the code where it is used, as there are several instances of the strings "Timer"/"timer"/"Timer_"/"timer_" which I don't know if I agree that's quite a mess there, I am not too happy with myself about it, but it works.
Here are the naming rules I try to stick to (I have broken them a bit, but not much) :
Object members start lower case, with eventually a uppercase letter for each word and with a trailing underscore.
I have broken that a few times, with public members (to avoid to uglify interface)
Same thing for stack values but without the underscore.
Complete types (typedefed and template types too) start uppercase, with an uppercase letter for each word.
template names are lower case and words are separated by an underscore.
Bidoche
15th May 2004, 09:56
And it's indeed called development forum. But I'm more used to mailing lists for open source projets. Dunno if its the habit, the lack of resource or something else. My guess was that this was rather high-level development, and not yet geared at the user. Of course part of the discussions (if not happening on a mailing-list) regarding development should still be there, as plugin developpers and users have their word to say in the becoming of avisynth.
A mailing list may effectively be better for the swarm of atomic and specific topics we may have to take care of...Created a mailing list on yahoo groups.
Subscribe by sending a message at avisynth3_0_dev-subscribe@yahoogroups.com
Richard Berg
16th May 2004, 00:19
I'd rather have a threaded discussion on the web than a bunch of mails in my inbox, but whatever works...
vion11
17th May 2004, 10:24
I like the way gmane works. It is a
Mail to News and News to Mail adapter
Example as newsgroup:
news://news.gmane.org/gmane.comp.parsers.spirit.general
And same as threaded web-interface:
http://news.gmane.org/gmane.comp.parsers.spirit.general/cutoff=7022
It is possible to connect the yahoo group [avisynth3_0_dev@yahoogroups.com]
to gmane with this form:
http://gmane.org/subscribe.php
It keeps privacy and keeps out bunch of mails ;)
vion11
18th May 2004, 14:03
gmane has subscribed to [avisynth3_0_dev@yahoogroups.com]
If you prefer news point your newsreader to:
news://news.gmane.org/gmane.comp.video.avisynth3.devel
threaded webinterface is available here:
http://news.gmane.org/gmane.comp.video.avisynth3.devel/cutoff=1
searching through webinterface:
Link (http://search.gmane.org/search.php?query=Search+item&email=&group=gmane.comp.video.avisynth3.devel&sort=relevance)
Kurosu
18th May 2004, 21:10
Originally posted by Bidoche
I was talking about the missing throw() on exception subclasses methods, were you ?
Yes, I was. For some reason, it was bombing on them. Anyway, I prefered using your fix.
A mailing list may effectively be better for the swarm of atomic and specific topics we may have to take care of...Thanks for creating a devel list, and to Vion11 for offering nice alternatives (although I don't see the newsgroup in the list with my newsreader)
how I am supposed to merge that diff into the source files ?Ouch... I'm not really the best to explain this. Moreover, I think that with the important changes, it is better to just throw it away. Anyway, you have several possibilities:
- check the end of the page of CvsGUI (http://www.wincvs.org/), and grab a tool you like (I really can't suggest one, see next), the advantage being I think the integration to WinCVS (never used those tools)
- if you have a GNU system (like MinGW or Cygwin), the classical diff command-line tools are available by default (that's what I use)
- Get the port of GNU diff to Win32 platform on sourceforge (http://sourceforge.net/project/showfiles.php?group_id=23617&package_id=16423)
If you use one of the 2 last solutions, you can have a look at the manual (http://www.gnu.org/software/diffutils/manual/html_mono/diff.html#Merging%20with%20patch)for it (260K). An archive (http://www.gnu.org/software/diffutils/manual/html_node/diff_html_node.tar.gz) weighing only 80K is available.
Basically, the command is patch < mingw.diff
In the end, I'll just keep my Makefile and make the appropriate changes with a cleaner code (I prefer you fixes to mine).
Here are the naming rules I try to stick to (I have broken them a bit, but not much) :
Object members start lower case, with eventually a uppercase letter for each word and with a trailing underscore.
I have broken that a few times, with public members (to avoid to uglify interface)
Same thing for stack values but without the underscore.
Complete types (typedefed and template types too) start uppercase, with an uppercase letter for each word.
template names are lower case and words are separated by an underscore.:eek:
Erm... Well, for now, I have another problem. I can't find where the class GeneralException was defined (neither in the avisynth tree nor the different headers from boost/STLPort). Not really surprising, as it even fails to build under MSVC. Maybe you forgot some cvs add ? :D
vion11
18th May 2004, 21:41
although I don't see the newsgroup in the list with my newsreader To solve it tell me:
If you can
- access other newsserver?
- and read news?
- open news.gmane.org
- access other groups from news.gmane.org?
Kurosu
18th May 2004, 21:51
Originally posted by vion11
- access other newsserver?
- and read news?
- open news.gmane.org
- access other groups from news.gmane.org?
I can all of the above. But it seems it was just slow on one client, unavailable on another with a particular program. I now have 2 clients out of 3 able to read and post. Thanks anyway.
I've just posted on one host. I'm waiting to see it appear on the newsgroup on the other client. Which, I see now, isn't likely to happen, given it's awaiting confirmation with a post on the actual mailing list...
vion11
18th May 2004, 22:23
Good - that'll give an impression how fast gmane is.
Haven't found update cycle yet.
Bidoche
18th May 2004, 22:52
@Kurosu
I made some cleaning on the exception hierarchy (more later when I get the courage)
GenericException is now exception::Generic and defined in /core/exception/generic.h
I wonder how you managed to miss this one ?
A check out just between my commits ... ;)
Other thing: I am annoyed with STLPort, my attempts at linking with it statically failed miserably... coz of a missing external in the iostreams.
So I will have to fall back to VC7.1 STL (or accept the extra dll)
Kurosu
18th May 2004, 23:34
Originally posted by Bidoche
@Kurosu
I made some cleaning on the exception hierarchy (more later when I get the courage)I hope it doesn't look like I'm harassing you :D
GenericException is now exception::Generic and defined in /core/exception/generic.hIndeed, I can see the code
I wonder how you managed to miss this one ?
A check out just between my commits ... ;)
Well, I did a complete checkout. There are instances of GenericException inside of font.cpp (http://cvs.sourceforge.net/viewcvs.py/avisynth2/avisynth/src/text/Attic/font.cpp?only_with_tag=avisynth_3_0) (see the 1.1.2.7 (http://cvs.sourceforge.net/viewcvs.py/avisynth2/avisynth/src/text/Attic/font.cpp?rev=1.1.2.7&only_with_tag=avisynth_3_0&view=auto) revision)
And it isn't defined anywhere. I don't know what is missing, or what wasn't updated, so I have to ask you. :/
I tried to modify the code. It seems "../core/exception/generic.h" should be included instead, and GenericException should be turned into Generic. But then, Generic appears to be undefined to the compiler, so I guess there's a problem with namespaces. I've added "using namespace exception;" inside the namespace avs and it seems to work. I hope that's what was intended... But anyway, in the link stage, I get a bunch of undefined symbols, precisely those ones. I think I'll leave it at that and let you make the appropriate changes.
Other thing: I am annoyed with STLPort, my attempts at linking with it statically failed miserably... coz of a missing external in the iostreams.I see that the STLPort build system makes a notice about that, and you may want to deactivate it when compiling the libs. Is it the case here? From the root README file:
4-2)
uncomment _STLP_NO_OWN_IOSTREAMS setting in "stlport/stl_user_config.h" to disable use of STLport iostreams and to use wrappers around your existing iostreams.
After disabling STLport iostreams, you will use wrappers around your compiler's iostreams libabry, as in previous STLport releases.
No binary library for STLport needs to be built in this case.
Note though :
- new-style ANSI iostreams may not be available on your system;
- compiler's iostreams are most likely slower than STLport version.
Bidoche
19th May 2004, 00:10
@Kurosu
I don't know what is missing, or what wasn't updated, so I have to ask you. :/I forgot to commit this one apparently.
I see that the STLPort build system makes a notice about that, and you may want to deactivate it when compiling the libs. Is it the case here? From the root README file:The problem is when I do that, I get other link errors... :/
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.