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)