[svn:parrot] r38015 - branches/packfile_revamp/src/pmc
bacek at svn.parrot.org
bacek at svn.parrot.org
Fri Apr 10 05:32:11 UTC 2009
Author: bacek
Date: Fri Apr 10 05:32:11 2009
New Revision: 38015
URL: https://trac.parrot.org/parrot/changeset/38015
Log:
Implement loading of PackFile_ConstTable into PackfileConstantTable PMC.
Modified:
branches/packfile_revamp/src/pmc/packfileconstanttable.pmc
Modified: branches/packfile_revamp/src/pmc/packfileconstanttable.pmc
==============================================================================
--- branches/packfile_revamp/src/pmc/packfileconstanttable.pmc Fri Apr 10 05:31:44 2009 (r38014)
+++ branches/packfile_revamp/src/pmc/packfileconstanttable.pmc Fri Apr 10 05:32:11 2009 (r38015)
@@ -156,6 +156,31 @@
*/
VTABLE void set_pointer(void * pointer) {
+ const PackFile_ConstTable const * table =
+ (const PackFile_ConstTable const *)(pointer);
+ const PackFile_Constant * val;
+ opcode_t i;
+
+ for (i = 0; i < table->const_count; ++i) {
+ val = table->constants[i];
+ switch (val->type) {
+ case PFC_NONE:
+ break;
+ case PFC_NUMBER:
+ SELF.set_number_keyed_int(i, val->u.number);
+ break;
+ case PFC_STRING:
+ SELF.set_string_keyed_int(i, val->u.string);
+ break;
+ case PFC_PMC:
+ SELF.set_pmc_keyed_int(i, val->u.key);
+ break;
+ default:
+ Parrot_ex_throw_from_c_args(interp, NULL,
+ EXCEPTION_MALFORMED_PACKFILE,
+ "Unknown PackFile constant type: %d", val->type);
+ }
+ }
}
/*
More information about the parrot-commits
mailing list