2006.02.28
Timing Diagram Markup Language (TDLM) - an XML variant for expressing timing diagrams. Neat.
2006.02.26
I was explaining some general rules for authoring C++ header files to a friend recently. Here's a copy of the note I sent him:
// ************************************************************************
// ************************************************************************
// ************************************************************************
/*
any.hpp
C++ header file template
************************************************************************
This header includes other headers which include other headers... A directed graph whose vertices
represent header files and whose edges represent the dependencies between header files will typically
contain cycles. To break these cycles, include this header only once per translation unit.
************************************************************************ */
#pragma once
/* ************************************************************************
Assume that this header file is a member of a set of header files that collectively declare a set
of logically-related C++ identifiers (e.g. a C++ template library). Generally, all headers in this set
will have common dependencies on C++ identifiers declared in other header files. It's useful to
designate a "common" header for our library (based on this template) and use it to record the
list of header dependencies common to all headers in our library.
************************************************************************ */
#include "my_library_common_headers.hpp"
/* ************************************************************************
The set of C++ identifiers that we're going to declare in this header likely have some additional dependencies
that we need to bring into scope.
CONVENTION: Only include header files that are required to DECLARE your C++ identifiers. (The spirit of this
convention holds for template authors as well). Think of this header from the perspective of someone who is going
to use your library: if they include your header, what C++ identifiers are you exposing to them? Expose only what's
required to DECLARE your C++ identifiers. The set of C++ identifiers required to DEFINE your C++ identifiers is
typically not the same as that required to DECLARE your identifiers and this is not the place for those dependencies.
************************************************************************ */
#include <map>
#include <string>
#include "my_library_graph_algorithm_a.hpp"
/* ************************************************************************
Now declare some C++ identifiers...
************************************************************************ */
class UberAlgorithm : public AlgorithmA
{
public: // construction/destruction
Algorithm();
virtual ~Algorithm();
public: // methods
}; // end class declaration UberAlgorithm
// ************************************************************************
// ************************************************************************
// ************************************************************************
// ************************************************************************
// ************************************************************************
// ************************************************************************
/*
any.cpp
C++ translation unit template
************************************************************************
This C++ translation unit DEFINES some C++ identifiers.
First include the set of C++ identifiers required to DECLARE the set of C++ identifiers
that we plan to define.
************************************************************************ */
#include "any.hpp"
/* ************************************************************************
Typically the definition of our C++ identifiers introduces additional dependencies.
Include those dependencies here. Note that these are not exposed to other
software that includes any.hpp.
************************************************************************ */
#include "some_implementation_types.hpp"
/* ************************************************************************
Now DEFINE some C++ identifiers...
************************************************************************ */
UberAlgorithm::UberAlgorithm()
{}
UberAlgorithm::~UberAlgorithm()
{}
// ....
// ************************************************************************
// ************************************************************************
// ************************************************************************
2006.02.19
Odd/Even Side of the Street and Google Maps [General] -
chris - chris@chrisrussell.net @ 739 (11:02:23 EST)
Watch the location pin cross the road.
10 Main St., Yarmouth, Maine 04096 USA
11 Main St., Yarmouth, Maine 04096 USA
10 Main St., Yarmouth, Maine 04096 USA
11 Main St., Yarmouth, Maine 04096 USA
2006.02.12
I pulled the cars into the barn last evening in anticipation of snow overnight. No snow yet but you can smell it coming. I'm looking forward to taking the huskies snowshoeing in the woods tonight with my headlamp.
On a completely unrelated note: doing a little research on some trace routes I performed from my workstation, I found it interesting to learn that I'm a few short hops from the AOL Data Transit Network (ATDN.net). RoadRunner cable here in the Portland-Maine area really quite amazing... Thanks guys!
On a completely unrelated note: doing a little research on some trace routes I performed from my workstation, I found it interesting to learn that I'm a few short hops from the AOL Data Transit Network (ATDN.net). RoadRunner cable here in the Portland-Maine area really quite amazing... Thanks guys!
