This is a Ruby tree! It shows every object from the Ruby Programming Language in a tree format.

Digest::Base

        # Digest::Base < Digest::Class

(from ruby core)
---
This abstract class provides a common interface to message digest
implementation classes written in C.

## Write a Digest subclass in C
Digest::Base provides a common interface to message digest classes
written in C. These classes must provide a struct of type
rb_digest_metadata_t:
    typedef int (*rb_digest_hash_init_func_t)(void *);
    typedef void (*rb_digest_hash_update_func_t)(void *, unsigned char *, size_t);
    typedef int (*rb_digest_hash_finish_func_t)(void *, unsigned char *);

    typedef struct {
      int api_version;
      size_t digest_len;
      size_t block_len;
      size_t ctx_size;
      rb_digest_hash_init_func_t init_func;
      rb_digest_hash_update_func_t update_func;
      rb_digest_hash_finish_func_t finish_func;
    } rb_digest_metadata_t;

This structure must be set as an instance variable named `metadata`
(without the +@+ in front of the name). By example:
     static const rb_digest_metadata_t sha1 = {
        RUBY_DIGEST_API_VERSION,
        SHA1_DIGEST_LENGTH,
        SHA1_BLOCK_LENGTH,
        sizeof(SHA1_CTX),
        (rb_digest_hash_init_func_t)SHA1_Init,
        (rb_digest_hash_update_func_t)SHA1_Update,
        (rb_digest_hash_finish_func_t)SHA1_Finish,
    };

    rb_ivar_set(cDigest_SHA1, rb_intern("metadata"),
                Data_Wrap_Struct(0, 0, 0, (void *)&sha1));
---
# Instance methods:

    <<
    block_length
    digest_length
    reset
    update


      

This is MURDOC! A Ruby documentation browser inspired by Smalltalk-80. It allows you to learn about Ruby by browsing through its class hierarchies, and see any of its methods.