[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