- /* pass 2 */
- as3_pass = 2;
- as3_tokencount=0;
- enter_file(filename, 0);
- fseek(fi, 0, SEEK_SET);
- as3_set_in(fi);
- initialize_file(filename);
- a3_parse();
- as3_lex_destroy();
- finish_file();
+ if(dict_contains(scheduled_dict, filename)) {
+ return; //already processed
+ } else {
+ dict_put(scheduled_dict, filename, 0);
+ }
+
+ NEW(scheduled_file_t, f);
+ f->name = strdup(name);
+ f->filename = strdup(filename);
+ f->next = scheduled; // dfs
+ scheduled = f;
+}
+
+void as3_parse_bytearray(const char*name, void*mem, int length)
+{
+ as3_parse_file_or_array(1, name, 0, mem, length);
+ as3_parse_scheduled(1);
+
+ as3_parse_file_or_array(2, name, 0, mem, length);
+ as3_parse_scheduled(2);
+}
+
+void as3_parse_file(const char*filename)
+{
+ char*fullfilename = find_file(filename);
+ if(!fullfilename)
+ return; // not found
+
+ as3_parse_file_or_array(1, filename, fullfilename, 0,0);
+ as3_parse_scheduled(1);
+
+ as3_parse_file_or_array(2, filename, fullfilename, 0,0);
+ as3_parse_scheduled(2);