Software in a box

Updated ccm tool

July 12, 2010

  • Fixed parser error for c++ template specialization.
  • Added support for passing path to folder as only argument to the command line version of ccm.
  • Visual studio integration; now possible to select the number of metrics you want outputted.
Go here for more information.

Update

March 29, 2010

I'm constantly working on updating tools and creating new ones. Unfortunately, I don't have enough time to pursue all my crazy ideas so it may take a long time before I post anything new. That said, I'm currently working on:

Updating Developer Playground so that is uses debugging symbols to trace parameter values for calls in your code. You'll be able to trace calls made on functions in your classes as well as exported function from other modules. If debugging symbols are unavailable, you can write the signature for the function in a text file and DP will be able to trace the parameters for you.

I'm also creating a new c++ mocking framework (do we need another?). This one can be used to mock away functions in your classes, or classes/functions you depend upon.

The code example below should describe its intention.

class XX { public: int Echo(int i) { return i; } }; void TestEchoWithMock() { CxxDM::MockFunction(XX::Echo, int, int).Expect(0x100).AndReturn(0xdead); XX x; // first call should return 0xdead (and will output an error since 0x100 was not passed as the in parameter) _ASSERTE(0xdead == x.Echo(1)); _ASSERTE(0xbad == x.Echo(0xbad)); // seconds call does not mock anymore }

I'm also working on updating ComTrace, using a different approach than the Universal Delegator, and at the same time making sure it also runs on Windows Vista and Windows 7. The problem with the Universal Delegator, as elgant as that approach is, is that there are code out that makes assumptions about the interface pointer returned from CoCreateInstance.

Example:

CComPtr< IUnknown > spUnk; spUnk.CoCreateInstance(...); CMyClass* p = reinterpret_cast< CMyClass* >(spUnk.p); // it is ok, I know this is a CMyClass instance (or?) p->CallMyNonCOMFunction(); // this would crash since this pointer is in fact a universal delegator instance and not CMyClass

New layout

March 28, 2010

Completely new layout on my site. Simplified pages even more. Keep it simple. Design by arcsic (thank you).