> This is less of a concern right now, although I don't believe your worries
> about having a single generator tool are founded -- I had it working a few
> weeks ago, and it's much faster. With a small amount of command-line
> options, such as allowing the XIDL to be cached to a file and re-running
> from the cache, a single tool can be configured to run exactly the same as
> the two tools we have now. Compiling the generator as a 32 bit application
> isn't a concern. Your point about externalizing the parser code is a good
> one, but only relevant to this issue if you intend to do it sooner rather
> than later.
Ok, for the caching, and also, I just want keep them them in separate
assemblies.
> I expect you could work on the root of the branch starting Tuesday. I need
> to incorporate the latest changes you've made (or you could, if you like)
> and set up the .csproj files slightly differently -- we want to isolate
> hand-written and generated code into different subdirectories within each
> project directory, because we do not want to check in generated code. But
> all of that should be done within the next two days.
You now exactly how to organise things regarding the build process and
SlimDX behavior with that, so I'll let you do the migration.
> As for the documentation, we can't use windows_graphics.hxs either for
> exactly the same reasons -- we can't just copy/paste and tweak their work
> without permission from them. The documentation generation should not be
> something we focus on at this stage of development anyhow, the code is more
> important.
Wow, ok. This is a really really bad news. I will keep the generator
on my side here in order to have the documentation.
I'm using intensively the documentation for mapping things, checking
parameters, optionnal parameters. So the documentation is not
something like "just nice" but has valuable information for the
mapping process.
Is there any chance to get anykind of authorization?... I mean, this
information is part of the SDK, if you had to write the documentation
yourself, you would almost copy/paste the whole doc and change few
things...
I know that this is an early stage, but It has been extremely helpfull
to have the documentation so far, even for coding... so...
Btw, I have been able tody to plug the documentation from the hxs
files... just in case... :)
> Regarding T4: that means we have a dependency on the Visual Studio SDK,
> which is too big. It "seems" to mostly work now (I do not have the
> assemblies anywhere in the VS UI, but I am able to hand-edit the .csproj to
> add them), but that's an intractable dependency long-term. I agree that
> developing text template systems is a pain in the ass, though, so we can
> continue to use it for now and I'll investigate a replacement later on.
Well, normally, starting with VS2010, the T4 engine is freely
redistribuable without having VS2010 installed so...
I don't see the dependency to VS SDK big... but ok... will see later
this...
> I also want to reiterate that I feel we need to focus on cleaning up and hardening
> the parser/generator code itself and addressing issues such as any problems
> that prevent us from externalizing the mapping definitions and all that now,
> before we finish trying to expand its scope to cover the whole of our API
> set. We don't need to generate everything, remember. We should focus on
> Direct3D 10 and/or 11, DXGI, and whatever common support items we need for
> those.
Working on other APIs was required in order to make the code more
robust and to support unexpected things (like the need to custom
interop for DWrite, or custom marshalling for all Audios
interfaces...etc.)
So far, the whole API is parsable and generatable, so that's already a
good news.
But I agree that the code is still far from robust:
- Both the parser and the generator have a very nasty error handling,
almost requiring to debug when a mapping is wrong. So this need to be
much more improved.
- The generator code is still a bit messy
- There are couple of things I'm implementing right now, like a
"struct field/size verifier" in order to check that the fields
alignment and structure size are matching the native's one...
Also, as soon as the v2 branch is clean, I will definetely need more
feedback on the generated API... I would like to move on at some point
and use the generated library on my own, and don't want to wait too
much! ;)