Working with an object-oriented system such as libRosetta is greatly aided by browsing editors/tools that are capable of making quick jumps from a symbol to its type or function definition and doing project-wide searches. Many commercial editors and IDEs have C++ source browsing capabilities. Since most Rosetta developers are using Emacs and since browsing is done via add-on tools let's look at how to do that. Emacs Browsing (adapted from notes by Ion Yannopoulos)There are several class browser type packages that allow jumping to symbol definition. The most commonly used one is etags, which can be invoked by this: etags `find . -name "*.cc" -o -name "*.hh" -o name "*.h"` You will need to remember to do this yourself: just adding a file to the source tree does not. Much more useful is ebrowse. It too uses an external command: ebrowse `find . -name "*.cc" -o -name "*.hh" -o name "*.h"` [For libRosetta add these file types: *.cpp, *.hpp, *.ii to the browsing setup commands above.] Once it's done a file called BROWSE now contains the classes. You use it just by opening it in Emacs: C-x C-f BROWSE That browser is completely visual and clickable. Look at the full ebrowse documentation for more information. The commands used for searching are here. We should be able to add browser tag generation to the build system to make this easier. Other BrowsersI found Eclipse and NetBeans to have decent class browsers. They aren't Emacs though, and the C++ support on both is not as sophisticated as it is in either Visual Studio or Borland IDEs, and it's not nearly as powerful as their Java IDEs. |