- for(; !lisp_nil_p(cur); cur = lisp_cdr(cur)) {
- std::string token = lisp_symbol(lisp_car(lisp_car(cur)));
- lisp_object_t* data = lisp_car(lisp_cdr(lisp_car(cur)));
- LispReader reader(lisp_cdr(lisp_car(cur)));
-
- if(token == "name")
- name = lisp_string(data);
- else if(token == "action")
- parse_action(reader);
- else
- std::cerr << "Warning: Unknown sprite field: " << token << std::endl;
+ lisp::ListIterator iter(lisp);
+ while(iter.next()) {
+ if(iter.item() == "name") {
+ iter.value()->get(name);
+ } else if(iter.item() == "action") {
+ parse_action(iter.lisp());
+ } else {
+ std::cerr << "Unknown sprite field: " << iter.item() << "\n";
+ }