    /*
     * Document-method: parse
     *
     * call-seq:
     *  parse(input, buffer_size=8092)
     *  parse(input, buffer_size=8092) { |obj| ... }
     *
     * +input+ can either be a string or an IO to parse JSON from
     *
     * +buffer_size+ is the size of chunk that will be parsed off the input (if it's an IO) for each loop of the parsing process.
     * 8092 is a good balance between the different types of streams (off disk, off a socket, etc...), but this option
     * is here so the caller can better tune their parsing depending on the type of stream being passed.
     * A larger read buffer will perform better for files off disk, where as a smaller size may be more efficient for
     * reading off of a socket directly.
     *
     * If a block was passed, it's called when an object has been parsed off the stream. This is especially
     * usefull when parsing a stream of multiple JSON objects.
     *
     * NOTE: you can optionally assign the +on_parse_complete+ callback, and it will be called the same way the optional
     * block is for this method.
    */
    static VALUE rb_yajl_parser_parse(int argc, VALUE * argv, VALUE self) {