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 architecure 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 folowing 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
  -----+    +---

