From 2d42e704f4b46e05943041d87fc98ca04630c843 Mon Sep 17 00:00:00 2001 From: yugui Date: Mon, 29 Jun 2009 16:39:28 +0000 Subject: [PATCH] Doxy-comments. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23902 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- class.c | 71 ++++++++++++++++++++++++++++++++ doc/images/boottime-classes.png | Bin 0 -> 28677 bytes object.c | 19 ++++++++- template/Doxyfile.tmpl | 6 +-- 4 files changed, 92 insertions(+), 4 deletions(-) create mode 100644 doc/images/boottime-classes.png diff --git a/class.c b/class.c index 9dd68b655a..6413429d89 100644 --- a/class.c +++ b/class.c @@ -9,6 +9,20 @@ **********************************************************************/ +/*! + * \defgroup class Classes and their hierarchy. + * \par Terminology + * - class: same as in Ruby. + * - singleton class: class for a particular object + * - eigenclass: = singleton class + * - metaclass: class of a class. metaclass is a kind of singleton class. + * - metametaclass: class of a metaclass. + * - meta^(n)-class: class of a meta^(n-1)-class. + * - attached object: A singleton class knows its unique instance. + * The instance is called the attached object for the singleton class. + * \{ + */ + #include "ruby/ruby.h" #include "ruby/st.h" #include "node.h" @@ -16,6 +30,18 @@ extern st_table *rb_class_tbl; +/** + * Allocates a struct RClass for a new class. + * + * \param flags initial value for basic.flags of the returned class. + * \param klass the class of the returned class. + * \return an uninitialized Class object. + * \pre \p klass must refer \c Class class or an ancestor of Class. + * \pre \code (flags | T_CLASS) != 0 \endcode + * \post the returned class can safely be \c #initialize 'd. + * + * \note this function is not Class#allocate. + */ static VALUE class_alloc(VALUE flags, VALUE klass) { @@ -30,6 +56,16 @@ class_alloc(VALUE flags, VALUE klass) return (VALUE)obj; } + +/*! + * A utility function that wraps class_alloc. + * + * allocates a class and initializes safely. + * \param super a class from which the new class derives. + * \return a class object. + * \pre \a super must be a class. + * \post the metaclass of the new class is Class. + */ VALUE rb_class_boot(VALUE super) { @@ -42,6 +78,13 @@ rb_class_boot(VALUE super) return (VALUE)klass; } + +/*! + * Ensures a class can be derived from super. + * + * \param super a reference to an object. + * \exception TypeError if \a super is not a Class or \a super is a singleton class. + */ void rb_check_inheritable(VALUE super) { @@ -54,6 +97,13 @@ rb_check_inheritable(VALUE super) } } + +/*! + * Creates a new class. + * \param super a class from which the new class derives. + * \exception TypeError \a super is not inheritable. + * \exception TypeError \a super is the Class class. + */ VALUE rb_class_new(VALUE super) { @@ -189,6 +239,13 @@ rb_singleton_class_attached(VALUE klass, VALUE obj) } +/*! + * Creates a meta^(n+1)-class for a meta^(n)-class. + * \param metaclass a class of a class + * \return the created meta^(n+1)-class. + * \pre \a metaclass is a metaclass + * \post the class of \a metaclass is the returned class. + */ static VALUE make_metametaclass(VALUE metaclass) { @@ -224,6 +281,16 @@ make_metametaclass(VALUE metaclass) } +/*! + * \internal + * Creates a singleton class for an object. + * + * \note DO NOT USE the function in an extension libraries. Use rb_singleton_class. + * \param obj An object. + * \param super A class from which the singleton class derives. + * \note \a super is ignored if \a obj is a metaclass. + * \return The singleton class of the object. + */ VALUE rb_make_metaclass(VALUE obj, VALUE super) { @@ -1040,3 +1107,7 @@ rb_scan_args(int argc, const VALUE *argv, const char *fmt, ...) rb_raise(rb_eArgError, "wrong number of arguments (%d for %d%s)", argc, n_mand, f_var ? "+" : ""); } + +/*! + * \} + */ diff --git a/doc/images/boottime-classes.png b/doc/images/boottime-classes.png new file mode 100644 index 0000000000000000000000000000000000000000..b5fab75c41b9ddfb068a24b7f1a4c1e3c1ebcaf7 GIT binary patch literal 28677 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 is the parent class of all classes in Ruby. * It's an explicit blank class. Object, the root of Ruby's * class hierarchy is a direct subclass of BasicObject. Its diff --git a/template/Doxyfile.tmpl b/template/Doxyfile.tmpl index e93d893120..0fd9462c69 100644 --- a/template/Doxyfile.tmpl +++ b/template/Doxyfile.tmpl @@ -69,7 +69,7 @@ HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = YES -INTERNAL_DOCS = NO +INTERNAL_DOCS = YES CASE_SENSE_NAMES = NO HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES @@ -112,7 +112,7 @@ EXCLUDE_SYMBOLS = EXAMPLE_PATH = EXAMPLE_PATTERNS = EXAMPLE_RECURSIVE = NO -IMAGE_PATH = +IMAGE_PATH = <%= "#{srcdir}/doc/images" %> FILTER_PATTERNS = FILTER_SOURCE_FILES = YES #--------------------------------------------------------------------------- @@ -253,7 +253,7 @@ CALLER_GRAPH = NO GRAPHICAL_HIERARCHY = NO DIRECTORY_GRAPH = NO DOT_IMAGE_FORMAT = png -DOT_PATH = <%= dot %> +DOT_PATH = DOTFILE_DIRS = DOT_GRAPH_MAX_NODES = 50 MAX_DOT_GRAPH_DEPTH = 0