Documentation conventions
-------------------------

Due to the potential for exponential growth, several abbreviating conventions will be used throughout this 
documentation.  These conventions have grown primarily from extremely in-depth discussions of the architecture in IRC.
This has verified the safety of these conventions, if used properly.  There are no known namespace conflicts as long as 
context is rigorously observed.

Object classes
~~~~~~~~~~~~~~

Since everything starts with Gst, we will generally refer to objects by the shorter name, i.e. Element or Pad.  These 
names will always have their first letter capitalized.

Function names
~~~~~~~~~~~~~~

Within the context of a given object, functions defined in that object's header and/or source file will have their 
object-specific prefix stripped.  For instance, gst_element_add_pad() would be referred to as simply _add_pad().  Note 
that the trailing parentheses should always be present, but sometimes may not be.  A prefixing underscore (_) will 
always tell you it's a function, however, regardless of the presence or absence of the trailing parentheses.

defines and enums
~~~~~~~~~~~~~~~~~

Values and macros defined as enums and preprocessor macros will be referred to in all capitals, as per their 
definition.  This includes object flags and element states, as well as general enums.  Examples are the states NULL, 
READY, PLAYING, and PAUSED; the element flags LOCKED_STATE , and state return values SUCCESS, FAILURE, and 
ASYNC.  Where there is a prefix, as in the element flags, it is usually dropped and implied.  Note however that 
element flags should be cross-checked with the header, as there are currently two conventions in use: with and without 
_FLAGS_ in the middle.

Drawing conventions
~~~~~~~~~~~~~~~~~~~

When drawing pictures the following conventions apply:

objects
^^^^^^^

Objects are drawn with a box like:

  +------+
  |      |
  +------+
  

pointers
^^^^^^^^

a pointer to an object.

      +-----+
 *--->|     |
      +-----+

an invalid pointer, this is a pointer that should not be used.

 *-//->


elements
^^^^^^^^

  +----------+
  | name     |
 sink       src
  +----------+

pad links
^^^^^^^^^

  -----+    +---
       |    |
      src--sink
  -----+    +---

