Hi --
 I've just started reading the deal.II source in the last few days, and I'm 
really impressed with the elegance of your approach and coding style!   

I've invested a little time setting up my environment with the hopes that it 
will help me progress more quickly as I proceed.  My toolset is currently osX, 
Xcode4, Intel compiler 12, and I've managed to set things up so that it's 
fairly easy for me to create a xcode project for each of the tutorial steps, 
build the sample and step through the code in the debugger -- including 
stepping into the main deal.ii source if like.  So this feels like a good 
starting point and now I can happily proceed to learning things.     (Though 
the combination of tools above presented enough moving parts that it definitely 
took a bit of jumping through hoops and few work arounds -- I'll post about 
that separately)

Still -- there are a few things about my environment that are suboptimal, and 
I'm curious what sort of environment others in the deal.II community use.   In 
particular, I'm curious if anyone has a setup that provides the following 
features:

1)  interactive debugging -- locals/watch window, easy ability to move up and 
down the stack frame 

2)  template / object hierarchy savvy code navigation -- being able to keyboard 
short cut easily to a class declaration, method declaration, method 
implementation, subclasses, find all usages of a method/field

3) template savvy code completion when calling methods

(by 'template savvy', I mean the the IDE can do all of these things for 
templated classes -- which of course seems fairly hard, given compilers can 
have a hard enough time even compiling something like boost)

My current setup does fine with 1, but is definitely lacking in 2 and 3.  So 
for instance, as I browse though the code, I might find myself wondering 
"HyperShellBoundary doesn't need to know it's inner and outer radius -- how 
does that work?"  Starting up a debug session is kind of slow, and in this 
case, it's not so obvious where the boundary is being used anyway.  xcode is 
smart enough to jump to the header file where the class is declared, but not 
smart enough to find the implementation (the debug libraries have symbols, so 
stepping through the code leads me to the implementation, of course)  I can add 
the full deal.II source tree to my  project (but not part of any target, so it 
does not get compiled) and then from there a 'find in project', though somewhat 
clunky, gets me to the implementation file --  but because of templating 
artifacts, searching for the method leads me to CylinderBoundary, ConeBoundary, 
etc before I finally see how the magic works, all the time having
  to double check that I'm not accidentally looking at code for 
HalfHyperShellBoundary. 

I find 'Semantic Navigation' greatly speeds up the process of learning other 
people's code, but I've never found an environment that did this well for 
templated c++ -- but then I have never really tried looking either.  I'm not 
wedded to any particular os or IDE and I'm happy to use your build system, or 
nor do I really need  particular details of how to set everything up -- I 
really just want to know if some of the experienced developers have any strong 
opinions about this -- e.g. emacs with such and such packages is the _absolute_ 
best way to write deal.II code, or perhaps Eclipse, or perhaps there is just 
nothing out there that can do all of this.

Thanks for any advice and thoughts -- best, nehal 
_______________________________________________
dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii

Reply via email to