  We describe a framework for counting and enumerating various types of
crossing-free geometric graphs on a planar point set. The framework generalizes
ideas of Alvarez and Seidel, who used them to count triangulations in time
$O(2^nn^2)$ where $n$ is the number of points. The main idea is to reduce the
problem of counting geometric graphs to counting source-sink paths in a
directed acyclic graph.
  The following new results will emerge. The number of all crossing-free
geometric graphs can be computed in time $O(c^nn^4)$ for some $c < 2.83929$.
The number of crossing-free convex partitions can be computed in time
$O(2^nn^4)$. The number of crossing-free perfect matchings can be computed in
time $O(2^nn^4)$. The number of convex subdivisions can be computed in time
$O(2^nn^4)$. The number of crossing-free spanning trees can be computed in time
$O(c^nn^4)$ for some $c < 7.04313$. The number of crossing-free spanning cycles
can be computed in time $O(c^nn^4)$ for some $c < 5.61804$.
  With the same bounds on the running time we can construct data structures
which allow fast enumeration of the respective classes. For example, after
$O(2^nn^4)$ time of preprocessing we can enumerate the set of all crossing-free
perfect matchings using polynomial time per enumerated object. For
crossing-free perfect matchings and convex partitions we further obtain
enumeration algorithms where the time delay for each (in particular, the first)
output is bounded by a polynomial in $n$.
  All described algorithms are comparatively simple, both in terms of their
analysis and implementation.
