Charles E. Thornton wrote:

> Nikolai Weibull wrote:
>
>> Charles E. Thornton wrote:
>>
>>  
>>
>>> Several Different references to 'noex'
>>> rb_add_method(klass, name, NEW_CFUNC(func,argc), NOEX_PUBLIC);
>>> (noex == NOEX_PUBLIC)
>>> noex = NOEX_PRIVATE | noex;
>>> NOEX_WITH_SAFE(noex)
>>>   
>>
>>
>> NOEX_PUBLIC seems to be the flag for saying that a method is public,
>> just as NOEX_PRIVATE and NOEX_PROTECTED say that it is private and
>> protected.  But that seems obvious, so perhaps I don't understand your
>> question (or I don't understand the flag correctly ;-).
>>
>>        nikolai
>>
>>  
>>
> That's what I thought --- But I wanted to make sure -- I am trying to 
> translate the
> Hackers Guide and it tends to be more of a job of researching each 
> heading from
> scratch -- Thank you.
>
>             chuck
>
>
I looked further:

        if (SCOPE_TEST(SCOPE_PRIVATE) || node->nd_mid == init) {
        noex = NOEX_PRIVATE;
        }
        else if (SCOPE_TEST(SCOPE_PROTECTED)) {
        noex = NOEX_PROTECTED;
        }
        else {
        noex = NOEX_PUBLIC;
        }

UP TO HERE -- OK
        if (body && origin == ruby_class && body->nd_body == 0) {
        noex |= NOEX_NOSUPER;
        }

What does NOEX_NOSUPER Represent?

        defn = copy_node_scope(node->nd_defn, ruby_cref);
        rb_add_method(ruby_class, node->nd_mid, defn, noex);

HERE I get confused AGAIN -- We have already ADDED THE METHOD
and now WE ADD a second one?    What is  SCOPE_MODFUNC represent?

        if (scope_vmode == SCOPE_MODFUNC) {
        rb_add_method(rb_singleton_class(ruby_class),
                  node->nd_mid, defn, NOEX_PUBLIC);
        }


-- 
GodFather -- 667 Neighbor of the Beast