cvsuser     03/12/03 04:20:47

  Modified:    classes  perlhash.pmc perlundef.pmc
               t/pmc    perlhash.t
               .        vtable.tbl
  Log:
  keyed_str vtables
  * new _keyed_str variants of keyed vtables
  * remove unused _same and some other vtables
  * vtable meth count went down from 202 to 180 now
  * implement _keyed_str in PerlHash
  
  Please do make realclean ...
  
  Revision  Changes    Path
  1.63      +101 -4    parrot/classes/perlhash.pmc
  
  Index: perlhash.pmc
  ===================================================================
  RCS file: /cvs/public/parrot/classes/perlhash.pmc,v
  retrieving revision 1.62
  retrieving revision 1.63
  diff -u -w -r1.62 -r1.63
  --- perlhash.pmc      26 Nov 2003 10:40:03 -0000      1.62
  +++ perlhash.pmc      3 Dec 2003 12:20:37 -0000       1.63
  @@ -1,7 +1,7 @@
   /* perlhash.pmc
    *  Copyright: 2001-2003 The Perl Foundation.  All Rights Reserved.
    *  CVS Info
  - *     $Id: perlhash.pmc,v 1.62 2003/11/26 10:40:03 leo Exp $
  + *     $Id: perlhash.pmc,v 1.63 2003/12/03 12:20:37 leo Exp $
    *  Overview:
    *     These are the vtable functions for the PerlHash base class
    *  Data Structure and Algorithms:
  @@ -51,6 +51,13 @@
            mark_hash(INTERP, PMC_ptr1v(SELF));
       }
   
  +    INTVAL type_keyed_str (STRING* key) {
  +     HashBucket* b = hash_get_bucket(INTERP, (Hash*) PMC_ptr1v(SELF), key);
  +     if (!b)
  +         return enum_hash_undef;
  +     return VTABLE_type(INTERP, (PMC*) b->value);
  +    }
  +
       INTVAL type_keyed (PMC* key) {
        PMC* valpmc;
        PMC* nextkey;
  @@ -63,9 +70,8 @@
        nextkey = key_next(INTERP, key);
        valpmc = b->value;
        if (!nextkey)
  -         return enum_hash_pmc;
  +         return VTABLE_type(INTERP, valpmc);
        return VTABLE_type_keyed(INTERP, valpmc, nextkey);
  -     return enum_hash_pmc;
       }
   
       void clone (PMC *ret) {
  @@ -77,6 +83,15 @@
        return hash_size(INTERP, PMC_ptr1v(SELF));
       }
   
  +    INTVAL get_integer_keyed_str (STRING* key) {
  +     HashBucket *b = hash_get_bucket(INTERP, (Hash*) PMC_ptr1v(SELF), key);
  +     if (b == NULL) {
  +         /* XXX Warning: use of uninitialized value */
  +         return VTABLE_get_integer(INTERP, undef);
  +     }
  +     return VTABLE_get_integer(INTERP, (PMC*) b->value);
  +    }
  +
       INTVAL get_integer_keyed (PMC* key) {
        PMC* valpmc;
        STRING* keystr = make_hash_key(INTERP, key);
  @@ -95,6 +110,15 @@
   
       }
   
  +    FLOATVAL get_number_keyed_str (STRING* key) {
  +     HashBucket *b = hash_get_bucket(INTERP, (Hash*) PMC_ptr1v(SELF), key);
  +     if (b == NULL) {
  +         /* XXX Warning: Use of uninitialized value */
  +         return VTABLE_get_number(INTERP, undef);
  +     }
  +     return VTABLE_get_number(INTERP, (PMC*) b->value);
  +    }
  +
       FLOATVAL get_number_keyed (PMC* key) {
        PMC* valpmc;
        STRING* keystr = make_hash_key(INTERP, key);
  @@ -112,6 +136,15 @@
        return VTABLE_get_number_keyed(INTERP, valpmc, nextkey);
       }
   
  +    BIGNUM* get_bignum_keyed_str (STRING* key) {
  +     HashBucket *b = hash_get_bucket(INTERP, (Hash*) PMC_ptr1v(SELF), key);
  +     if (b == NULL) {
  +         /* XXX Warning: Use of uninitialized value */
  +         return VTABLE_get_bignum(INTERP, undef);
  +     }
  +     return VTABLE_get_bignum(INTERP, (PMC*) b->value);
  +    }
  +
       BIGNUM* get_bignum_keyed (PMC* key) {
        PMC* valpmc;
        STRING* keystr = make_hash_key(INTERP, key);
  @@ -133,6 +166,15 @@
        return Parrot_sprintf_c(INTERP, "PerlHash[0x%x]", SELF);
       }
   
  +    STRING* get_string_keyed_str (STRING* key) {
  +     HashBucket *b = hash_get_bucket(INTERP, (Hash*) PMC_ptr1v(SELF), key);
  +     if (b == NULL) {
  +         /* XXX Warning: use of uninitialized value */
  +         return VTABLE_get_string(INTERP, undef);
  +     }
  +     return VTABLE_get_string(INTERP, (PMC*) b->value);
  +    }
  +
       STRING* get_string_keyed (PMC* key) {
        PMC* valpmc;
        STRING* keystr;
  @@ -166,12 +208,23 @@
           return hash_size(INTERP, PMC_ptr1v(SELF));
       }
   
  +    PMC* get_pmc_keyed_str (STRING* key) {
  +     HashBucket *b = hash_get_bucket(INTERP, (Hash*) PMC_ptr1v(SELF), key);
  +     if (b == NULL) {
  +         /* XXX should store the undef for consisteny */
  +         PMC *new_undef = pmc_new(INTERP, enum_class_PerlUndef);
  +         return new_undef;
  +     }
  +     return b->value;
  +    }
  +
       PMC* get_pmc_keyed (PMC* key) {
        STRING* keystr = make_hash_key(INTERP, key);
        HashBucket *b = hash_get_bucket(INTERP, (Hash*) PMC_ptr1v(SELF),
                                           keystr);
        PMC* nextkey;
        if (b == NULL) {
  +         /* XXX should store the undef for consisteny */
            PMC *new_undef = pmc_new(INTERP, enum_class_PerlUndef);
            return new_undef;
        }
  @@ -193,17 +246,35 @@
           hash_put(INTERP, PMC_ptr1v(SELF), keystr, val);
       }
   
  +    void set_integer_keyed_str (STRING* key, INTVAL value) {
  +        PMC *val = pmc_new(interpreter, enum_class_PerlInt);
  +        val->cache.int_val = value;
  +        hash_put(INTERP, PMC_ptr1v(SELF), key, val);
  +    }
  +
  +
       void set_number_keyed (PMC* key, FLOATVAL value) {
           STRING* keystr = make_hash_key(INTERP, key);
           PMC *val = pmc_new(interpreter, enum_class_PerlNum);
  -        VTABLE_set_number_native(INTERP, val, value);
  +        val->cache.num_val = value;
           hash_put(INTERP, PMC_ptr1v(SELF), keystr, val);
       }
   
  +    void set_number_keyed_str (STRING* key, FLOATVAL value) {
  +        PMC *val = pmc_new(interpreter, enum_class_PerlNum);
  +        val->cache.num_val = value;
  +        hash_put(INTERP, PMC_ptr1v(SELF), key, val);
  +    }
  +
  +
       void set_bignum_keyed (PMC* key, BIGNUM* value) {
           /* XXX */
       }
   
  +    void set_bignum_keyed_str (STRING* key, BIGNUM* value) {
  +        /* XXX */
  +    }
  +
       void set_string_keyed (PMC* key, STRING* value) {
           STRING* keystr = make_hash_key(INTERP, key);
           PMC *val = pmc_new(interpreter, enum_class_PerlString);
  @@ -211,17 +282,32 @@
           hash_put(INTERP, PMC_ptr1v(SELF), keystr, val);
       }
   
  +    void set_string_keyed_str (STRING* key, STRING* value) {
  +        PMC *val = pmc_new(interpreter, enum_class_PerlString);
  +        VTABLE_set_string_native(INTERP, val, value);
  +        hash_put(INTERP, PMC_ptr1v(SELF), key, val);
  +    }
  +
       void set_pmc_keyed (PMC* dest_key, PMC* value) {
           STRING* keystr = make_hash_key(INTERP, dest_key);
           hash_put(INTERP, PMC_ptr1v(SELF), keystr, value);
       }
   
  +    void set_pmc_keyed_str (STRING* key, PMC* value) {
  +        hash_put(INTERP, PMC_ptr1v(SELF), key, value);
  +    }
  +
   
       /* == operation */
       INTVAL is_equal (PMC* value) {
           return 0;
       }
   
  +    INTVAL exists_keyed_str(STRING* key) {
  +     HashBucket *b = hash_get_bucket(INTERP, (Hash*) PMC_ptr1v(SELF), key);
  +     return b != NULL;
  +    }
  +
       INTVAL exists_keyed(PMC* key) {
        STRING * sx;
        Hash * h = (Hash *)PMC_ptr1v(SELF);
  @@ -236,6 +322,13 @@
        return VTABLE_exists_keyed(INTERP, (PMC*)b->value, key);
       }
   
  +    INTVAL defined_keyed_str(STRING* key) {
  +     HashBucket *b = hash_get_bucket(INTERP, (Hash*) PMC_ptr1v(SELF), key);
  +     if (b == NULL)
  +         return 0;           /* no such key */
  +     return VTABLE_defined(INTERP, (PMC*)b->value);
  +    }
  +
       INTVAL defined_keyed(PMC* key) {
        STRING * sx;
        Hash * h = (Hash *)PMC_ptr1v(SELF);
  @@ -249,6 +342,10 @@
            return VTABLE_defined(INTERP, (PMC*)b->value);
        else
            return VTABLE_defined_keyed( INTERP, (PMC*)b->value, key);
  +    }
  +
  +    void delete_keyed_str(STRING* key) {
  +     hash_delete(INTERP, (Hash *)PMC_ptr1v(SELF), key);
       }
   
       void delete_keyed(PMC* key) {
  
  
  
  1.36      +8 -69     parrot/classes/perlundef.pmc
  
  Index: perlundef.pmc
  ===================================================================
  RCS file: /cvs/public/parrot/classes/perlundef.pmc,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -w -r1.35 -r1.36
  --- perlundef.pmc     23 Oct 2003 22:35:08 -0000      1.35
  +++ perlundef.pmc     3 Dec 2003 12:20:37 -0000       1.36
  @@ -1,7 +1,7 @@
   /* perlundef.pmc
    *  Copyright: 2001-2003 The Perl Foundation.  All Rights Reserved.
    *  CVS Info
  - *     $Id: perlundef.pmc,v 1.35 2003/10/23 22:35:08 scog Exp $
  + *     $Id: perlundef.pmc,v 1.36 2003/12/03 12:20:37 leo Exp $
    *  Overview:
    *     These are the vtable functions for the perlundef base class
    *  Data Structure and Algorithms:
  @@ -54,11 +54,6 @@
           return (INTVAL)(pmc2->vtable == pmc->vtable);
       }
   
  -    void set_integer (PMC * value) {
  -     DYNSELF.morph(enum_class_PerlInt);
  -        DYNSELF.set_integer(value);
  -    }
  -
       void set_integer_native (INTVAL value) {
        DYNSELF.morph(enum_class_PerlInt);
           DYNSELF.set_integer_native(value);
  @@ -68,11 +63,6 @@
           /* Do nothing; Can't happen? */
       }
   
  -    void set_string (PMC* value) {
  -     DYNSELF.morph(enum_class_PerlString);
  -        DYNSELF.set_string(value);
  -    }
  -
       void set_string_native (STRING* value) {
        DYNSELF.morph(enum_class_PerlString);
           DYNSELF.set_string_native(value);
  @@ -102,12 +92,6 @@
           VTABLE_set_number_native(INTERP, dest, value);
       }
   
  -    void add_same (PMC* value,  PMC* dest) {
  -        Parrot_warn(INTERP, PARROT_WARNINGS_UNDEF_FLAG,
  -         "Use of two uninitialized values in addition");
  -        VTABLE_set_integer_native(INTERP, dest, 0);
  -    }
  -
       void subtract (PMC* value,  PMC* dest) {
           Parrot_warn(INTERP, PARROT_WARNINGS_UNDEF_FLAG,
            "Use of uninitialized value in subtraction");
  @@ -132,12 +116,6 @@
           VTABLE_set_number_native(INTERP, dest, 0-value);
       }
   
  -    void subtract_same (PMC* value,  PMC* dest) {
  -        Parrot_warn(INTERP, PARROT_WARNINGS_UNDEF_FLAG,
  -         "Use of two uninitialized values in subtraction");
  -        VTABLE_set_integer_native(INTERP, dest, 0);
  -    }
  -
       void multiply (PMC* value,  PMC* dest) {
           Parrot_warn(INTERP, PARROT_WARNINGS_UNDEF_FLAG,
            "Use of uninitialized value in multiplication");
  @@ -162,12 +140,6 @@
           VTABLE_set_integer_native(INTERP, dest, 0);
       }
   
  -    void multiply_same (PMC* value,  PMC* dest) {
  -        Parrot_warn(INTERP, PARROT_WARNINGS_UNDEF_FLAG,
  -         "Use of two uninitialized values in multiplication");
  -        VTABLE_set_integer_native(INTERP, dest, 0);
  -    }
  -
       void divide (PMC* value,  PMC* dest) {
           Parrot_warn(INTERP, PARROT_WARNINGS_UNDEF_FLAG,
            "Use of uninitialized value in division");
  @@ -211,12 +183,6 @@
           VTABLE_set_integer_native(INTERP, dest, 0);
       }
   
  -    void divide_same (PMC* value,  PMC* dest) {
  -        Parrot_warn(INTERP, PARROT_WARNINGS_UNDEF_FLAG,
  -         "Use of two uninitialized values in division");
  -        internal_exception(DIV_BY_ZERO, "division by zero!\n");
  -    }
  -
       void modulus (PMC* value,  PMC* dest) {
           Parrot_warn(INTERP, PARROT_WARNINGS_UNDEF_FLAG,
            "Use of uninitialized value in modulus");
  @@ -260,16 +226,11 @@
           VTABLE_set_integer_native(INTERP, dest, 0);
       }
   
  -    void modulus_same (PMC* value,  PMC* dest) {
  -        Parrot_warn(INTERP, PARROT_WARNINGS_UNDEF_FLAG,
  -         "Use of two uninitialized values in modulus");
  -        internal_exception(DIV_BY_ZERO, "division by zero!\n");
  -    }
  -
       void bitwise_or (PMC* value, PMC* dest) {
           Parrot_warn(INTERP, PARROT_WARNINGS_UNDEF_FLAG,
            "Use of uninitialized value in bitwise or");
  -        VTABLE_set_integer(INTERP, dest, value);
  +        VTABLE_set_integer_native(INTERP, dest,
  +                     VTABLE_get_integer(INTERP, value));
       }
   
       void bitwise_or_int (INTVAL value, PMC* dest) {
  @@ -278,12 +239,6 @@
           VTABLE_set_integer_native(INTERP, dest, value);
       }
   
  -    void bitwise_or_same (PMC* value, PMC* dest) {
  -        Parrot_warn(INTERP, PARROT_WARNINGS_UNDEF_FLAG,
  -         "Use of two uninitialized values in bitwise or");
  -        VTABLE_set_integer(INTERP, dest, value);
  -    }
  -
       void bitwise_and (PMC* value, PMC* dest) {
           Parrot_warn(INTERP, PARROT_WARNINGS_UNDEF_FLAG,
            "Use of uninitialized value in bitwise and");
  @@ -296,16 +251,11 @@
           VTABLE_set_integer_native(INTERP, dest, 0);
       }
   
  -    void bitwise_and_same (PMC* value, PMC* dest) {
  -        Parrot_warn(INTERP, PARROT_WARNINGS_UNDEF_FLAG,
  -         "Use of two uninitialized values in bitwise and");
  -        VTABLE_set_integer_native(INTERP, dest, 0);
  -    }
  -
       void bitwise_xor (PMC* value, PMC* dest) {
           Parrot_warn(INTERP, PARROT_WARNINGS_UNDEF_FLAG,
            "Use of uninitialized value in bitwise xor");
  -        VTABLE_set_integer(INTERP, dest, value);
  +        VTABLE_set_integer_native(INTERP, dest,
  +                     VTABLE_get_integer(INTERP, value));
       }
   
       void bitwise_xor_int (INTVAL value, PMC* dest) {
  @@ -314,12 +264,6 @@
           VTABLE_set_integer_native(INTERP, dest, value);
       }
   
  -    void bitwise_xor_same (PMC* value, PMC* dest) {
  -        Parrot_warn(INTERP, PARROT_WARNINGS_UNDEF_FLAG,
  -         "Use of two uninitialized values in bitwise xor");
  -        VTABLE_set_integer(INTERP, dest, value);
  -    }
  -
       void bitwise_not (PMC* dest) {
           Parrot_warn(INTERP, PARROT_WARNINGS_UNDEF_FLAG,
            "Use of uninitialized value in bitwise not");
  @@ -329,7 +273,8 @@
       void concatenate (PMC* value,  PMC* dest) {
           Parrot_warn(INTERP, PARROT_WARNINGS_UNDEF_FLAG,
            "Use of uninitialized value in concatenation");
  -        VTABLE_set_string(INTERP, dest, value);
  +        VTABLE_set_string_native(INTERP, dest,
  +                     VTABLE_get_string(INTERP, value));
       }
   
       void concatenate_native (STRING* value,  PMC* dest) {
  @@ -338,12 +283,6 @@
           VTABLE_set_string_native(INTERP, dest, value);
       }
   
  -    void concatenate_same (PMC * value,  PMC* dest) {
  -        Parrot_warn(INTERP, PARROT_WARNINGS_UNDEF_FLAG,
  -         "Use of uninitialized value in concatenation");
  -        VTABLE_set_string_native(INTERP, dest, NULL);
  -    }
  -
       INTVAL is_equal (PMC* value) {
           Parrot_warn(INTERP, PARROT_WARNINGS_UNDEF_FLAG,
            "Use of uninitialized value in equals");
  
  
  
  1.38      +4 -3      parrot/t/pmc/perlhash.t
  
  Index: perlhash.t
  ===================================================================
  RCS file: /cvs/public/parrot/t/pmc/perlhash.t,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -w -r1.37 -r1.38
  --- perlhash.t        14 Nov 2003 08:03:19 -0000      1.37
  +++ perlhash.t        3 Dec 2003 12:20:42 -0000       1.38
  @@ -853,11 +853,12 @@
   OUTPUT
   
   output_is(<<'CODE', <<OUTPUT, "entry types - type_keyed");
  -.include "datatypes.pasm"
  +.include "pmctypes.pasm"
       new P1, .PerlHash
  -    set P1["pmc"], P1
  +    new P2, .PerlInt
  +    set P1["pmc"], P2
       typeof I0, P1["pmc"]
  -    eq I0, .DATATYPE_PMC, ok4
  +    eq I0, .PerlInt, ok4
       print "not "
   ok4:print "ok 4\n"
       end
  
  
  
  1.52      +20 -43    parrot/vtable.tbl
  
  Index: vtable.tbl
  ===================================================================
  RCS file: /cvs/public/parrot/vtable.tbl,v
  retrieving revision 1.51
  retrieving revision 1.52
  diff -u -w -r1.51 -r1.52
  --- vtable.tbl        3 Dec 2003 02:52:52 -0000       1.51
  +++ vtable.tbl        3 Dec 2003 12:20:47 -0000       1.52
  @@ -1,4 +1,4 @@
  -# $Id: vtable.tbl,v 1.51 2003/12/03 02:52:52 mrjoltcola Exp $
  +# $Id: vtable.tbl,v 1.52 2003/12/03 12:20:47 leo Exp $
   # [MAIN] #default section name
   
   void init()
  @@ -17,97 +17,94 @@
   INTVAL type()
   INTVAL type_keyed(PMC* key)
   INTVAL type_keyed_int(INTVAL key)
  +INTVAL type_keyed_str(STRING* key)
   
   UINTVAL subtype(INTVAL type)
  -UINTVAL subtype_keyed(PMC* key, INTVAL type)
  -UINTVAL subtype_keyed_int(INTVAL key, INTVAL type)
   
   STRING* name()
  -STRING* name_keyed(PMC* key)
  -STRING* name_keyed_int(INTVAL key)
   
   void clone(PMC* dest)
  -void clone_keyed(PMC* key, PMC* dest)
  -void clone_keyed_int(INTVAL key, PMC* dest)
   
   PMC* find_method(STRING* method_name)
  -PMC* find_method_keyed(PMC* key, STRING* method_name)
  -PMC* find_method_keyed_int(INTVAL key, STRING* method_name)
   
   [FETCH]
   INTVAL get_integer()
   INTVAL get_integer_keyed(PMC* key)
   INTVAL get_integer_keyed_int(INTVAL key)
  +INTVAL get_integer_keyed_str(STRING* key)
   
   FLOATVAL get_number()
   FLOATVAL get_number_keyed(PMC* key)
   FLOATVAL get_number_keyed_int(INTVAL key)
  +FLOATVAL get_number_keyed_str(STRING* key)
   
   BIGNUM* get_bignum()
   BIGNUM* get_bignum_keyed(PMC* key)
   BIGNUM* get_bignum_keyed_int(INTVAL key)
  +BIGNUM* get_bignum_keyed_str(STRING* key)
   
   STRING* get_string()
   STRING* get_string_keyed(PMC* key)
   STRING* get_string_keyed_int(INTVAL key)
  +STRING* get_string_keyed_str(STRING* key)
   
   INTVAL get_bool()
   INTVAL get_bool_keyed(PMC* key)
   INTVAL get_bool_keyed_int(INTVAL key)
  +INTVAL get_bool_keyed_str(STRING* key)
   
   PMC* get_pmc()
   PMC* get_pmc_keyed(PMC* key)
   PMC* get_pmc_keyed_int(INTVAL key)
  +PMC* get_pmc_keyed_str(STRING* key)
   
   void* get_pointer()
   void* get_pointer_keyed(PMC* key)
   void* get_pointer_keyed_int(INTVAL key)
  +void* get_pointer_keyed_str(STRING* key)
   
   [STORE]
  -void set_integer(PMC* value)
   void set_integer_native(INTVAL value)
   void set_integer_same(PMC* value)
   void set_integer_keyed(PMC* key, INTVAL value)
   void set_integer_keyed_int(INTVAL key, INTVAL value)
  +void set_integer_keyed_str(STRING* key, INTVAL value)
   
  -void set_number(PMC* value)
   void set_number_native(FLOATVAL value)
   void set_number_same(PMC* value)
   void set_number_keyed(PMC* key, FLOATVAL value)
   void set_number_keyed_int(INTVAL key, FLOATVAL value)
  +void set_number_keyed_str(STRING* key, FLOATVAL value)
   
  -void set_bignum(PMC* value)
   void set_bignum_native(BIGNUM* value)
   void set_bignum_same(PMC* value)
   void set_bignum_keyed(PMC* key, BIGNUM* value)
   void set_bignum_keyed_int(INTVAL key, BIGNUM* value)
  +void set_bignum_keyed_str(STRING* key, BIGNUM* value)
   
  -void set_string(PMC* value)
   void set_string_native(STRING* value)
   void set_string_same(PMC* value)
   void set_string_keyed(PMC* key, STRING* value)
   void set_string_keyed_int(INTVAL key, STRING* value)
  +void set_string_keyed_str(STRING* key, STRING* value)
   
   void set_bool(INTVAL value)
   void set_bool_keyed(PMC* key, INTVAL value)
   void set_bool_keyed_int(INTVAL key, INTVAL value)
  +void set_bool_keyed_str(STRING* key, INTVAL value)
   
   void set_pmc(PMC* value)
   void set_pmc_keyed(PMC* key, PMC* value)
   void set_pmc_keyed_int(INTVAL key, PMC* value)
  +void set_pmc_keyed_str(STRING* key, PMC* value)
   
   void set_pointer(void* value)
   void set_pointer_keyed(PMC* key, void* value)
   void set_pointer_keyed_int(INTVAL key, void* value)
  -
  -void set_same(PMC* value)
  -void set_same_keyed(PMC* key, PMC* value)
  -void set_same_keyed_int(INTVAL key, PMC* value)
  +void set_pointer_keyed_str(STRING* key, void* value)
   
   [FETCHSIZE]
   INTVAL elements()
  -INTVAL elements_keyed(PMC* key)
  -INTVAL elements_keyed_int(INTVAL key)
   
   [POP]
   INTVAL pop_integer()
  @@ -147,86 +144,69 @@
   void add_int(INTVAL value, PMC* dest)
   void add_bignum(BIGNUM* value, PMC* dest)
   void add_float(FLOATVAL value, PMC* dest)
  -void add_same(PMC* value, PMC* dest)
   
   void subtract(PMC* value, PMC* dest)
   void subtract_int(INTVAL value, PMC* dest)
   void subtract_bignum(BIGNUM* value, PMC* dest)
   void subtract_float(FLOATVAL value, PMC* dest)
  -void subtract_same(PMC* value, PMC* dest)
   
   void multiply(PMC* value, PMC* dest)
   void multiply_int(INTVAL value, PMC* dest)
   void multiply_bignum(BIGNUM* value, PMC* dest)
   void multiply_float(FLOATVAL value, PMC* dest)
  -void multiply_same(PMC* value, PMC* dest)
   
   void divide(PMC* value, PMC* dest)
   void divide_int(INTVAL value, PMC* dest)
   void divide_bignum(BIGNUM* value, PMC* dest)
   void divide_float(FLOATVAL value, PMC* dest)
  -void divide_same(PMC* value, PMC* dest)
   
   void modulus(PMC* value, PMC* dest)
   void modulus_int(INTVAL value, PMC* dest)
   void modulus_bignum(BIGNUM* value, PMC* dest)
   void modulus_float(FLOATVAL value, PMC* dest)
  -void modulus_same(PMC* value, PMC* dest)
   
   void cmodulus(PMC* value, PMC* dest)
   void cmodulus_int(INTVAL value, PMC* dest)
   void cmodulus_bignum(BIGNUM* value, PMC* dest)
   void cmodulus_float(FLOATVAL value, PMC* dest)
  -void cmodulus_same(PMC* value, PMC* dest)
   
   void neg(PMC* dest)
   
   [BITWISE]
   void bitwise_or(PMC* value, PMC* dest)
   void bitwise_or_int(INTVAL value, PMC* dest)
  -void bitwise_or_same(PMC* value, PMC* dest)
   
   void bitwise_and(PMC* value, PMC* dest)
   void bitwise_and_int(INTVAL value, PMC* dest)
  -void bitwise_and_same(PMC* value, PMC* dest)
   
   void bitwise_xor(PMC* value, PMC* dest)
   void bitwise_xor_int(INTVAL value, PMC* dest)
  -void bitwise_xor_same(PMC* value, PMC* dest)
   
   void bitwise_ors(PMC* value, PMC* dest)
   void bitwise_ors_str(STRING* value, PMC* dest)
  -void bitwise_ors_same(PMC* value, PMC* dest)
   
   void bitwise_ands(PMC* value, PMC* dest)
   void bitwise_ands_str(STRING* value, PMC* dest)
  -void bitwise_ands_same(PMC* value, PMC* dest)
   
   void bitwise_xors(PMC* value, PMC* dest)
   void bitwise_xors_str(STRING* value, PMC* dest)
  -void bitwise_xors_same(PMC* value, PMC* dest)
   
   void bitwise_not(PMC* dest)
   
   void bitwise_shl(PMC* value, PMC* dest)
   void bitwise_shl_int(INTVAL value, PMC* dest)
  -void bitwise_shl_same(PMC* value, PMC* dest)
   
   void bitwise_shr(PMC* value, PMC* dest)
   void bitwise_shr_int(INTVAL value, PMC* dest)
  -void bitwise_shr_same(PMC* value, PMC* dest)
   
   [STRING]
   void concatenate(PMC* value, PMC* dest)
   void concatenate_native(STRING* value, PMC* dest)
  -void concatenate_same(PMC* value, PMC* dest)
   
   [CMP]
   INTVAL is_equal(PMC* value)
   
   INTVAL is_same(PMC* value)
  -INTVAL is_same_keyed(PMC* key, PMC* value)
  -INTVAL is_same_keyed_int(INTVAL key, PMC* value)
   
   INTVAL cmp(PMC* value)
   INTVAL cmp_num(PMC* value)
  @@ -250,19 +230,23 @@
   [EXISTS]
   INTVAL exists_keyed(PMC* key)
   INTVAL exists_keyed_int(INTVAL key)
  +INTVAL exists_keyed_str(STRING* key)
   
   [MAIN]
   INTVAL defined()
   INTVAL defined_keyed(PMC* key)
   INTVAL defined_keyed_int(INTVAL key)
  +INTVAL defined_keyed_str(STRING* key)
   
   [DELETE]
   void delete_keyed(PMC* key)
   void delete_keyed_int(INTVAL key)
  +void delete_keyed_str(STRING* key)
   
   [MAIN]
   PMC* nextkey_keyed(PMC* key, INTVAL what)
   PMC* nextkey_keyed_int(INTVAL key, INTVAL what)
  +PMC* nextkey_keyed_str(STRING* key, INTVAL what)
   
   [STRING]
   void substr(INTVAL offset, INTVAL length, PMC* dest)
  @@ -270,19 +254,12 @@
   
   [MAIN]
   void* invoke(void* next)
  -void* invoke_pmc(PMC* sub, void* next)
   
   INTVAL can(STRING* method)
  -INTVAL can_keyed(PMC* key, STRING* method)
  -INTVAL can_keyed_int(INTVAL key, STRING* method)
   
   INTVAL does(STRING* method)
  -INTVAL does_keyed(PMC* key, STRING* method)
  -INTVAL does_keyed_int(INTVAL key, STRING* method)
   
   INTVAL isa(STRING* _class)
  -INTVAL isa_keyed(PMC* key, STRING* _class)
  -INTVAL isa_keyed_int(INTVAL key, STRING* _class)
   
   void freeze(visit_info* info)
   void thaw  (visit_info* info)
  
  
  

Reply via email to