Changeset 13
- Timestamp:
- 04/24/07 16:26:31 (2 years ago)
- Files:
-
- branches/pygetsetcall/src/nrnpython/nrnpy_hoc.cpp (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/pygetsetcall/src/nrnpython/nrnpy_hoc.cpp
r12 r13 126 126 } 127 127 128 static Inst* save_pc(Inst* newpc) { 129 Inst* savpc = hoc_pc; 130 hoc_pc = newpc; 131 return savpc; 132 } 133 128 134 static int hocobj_pushargs(PyObject* args) { 129 135 int i, narg = PyTuple_Size(args); … … 168 174 static void component(PyHocObject* po) { 169 175 Inst fc[5]; 170 Inst* pcsav;171 pcsav = hoc_pc;172 176 fc[0].sym = po->sym_; 173 177 fc[1].i = 0; … … 181 185 fc[3].i = po->ho_->ctemplate->id; 182 186 fc[4].sym = po->sym_; 183 hoc_pc = fc;187 Inst* pcsav = save_pc(fc); 184 188 hoc_object_component(); 185 189 hoc_pc = pcsav; … … 272 276 hoc_pushx(d); 273 277 }else{ 274 Inst* pcsav;275 278 Inst fc[2]; 276 279 fc[0].sym = self->sym_; 277 280 fc[1].i = narg; 278 pcsav = hoc_pc; 279 hoc_pc = fc; 281 Inst* pcsav = save_pc(fc); 280 282 hoc_call(); 281 283 hoc_pc = pcsav; … … 349 351 static void hocobj_objectvar(Symbol* sym) { 350 352 Inst fc; 351 Inst* pcsav;352 pcsav = hoc_pc;353 hoc_pc = &fc;354 353 fc.sym = sym; 354 Inst* pcsav = save_pc(&fc); 355 355 hoc_objectvar(); 356 356 hoc_pc = pcsav; … … 414 414 break; 415 415 case STRING: // char* 416 pcsav = hoc_pc; 417 hoc_pc = &fc; 418 hoc_pc->sym = sym; 416 fc.sym = sym; 417 pcsav = save_pc(&fc); 419 418 hoc_push_string(); 419 hoc_pc = pcsav; 420 420 result = Py_BuildValue("s", *hoc_strpop()); 421 hoc_pc = pcsav;422 421 break; 423 422 case OBJECTVAR: // Object* 424 423 if (!ISARRAY(sym)) { 425 pcsav = hoc_pc; 426 hoc_pc = &fc; 427 hoc_pc->sym = sym; 424 fc.sym = sym; 425 pcsav = save_pc(&fc); 428 426 hoc_objectvar(); 429 427 hoc_pc = pcsav; … … 453 451 break; 454 452 default: // otherwise 453 char e[200]; 454 sprintf(e, "no HocObject interface for %s (hoc type %d)", n, sym->type); 455 PyErr_SetString(PyExc_TypeError, e); 455 456 break; 456 457 } … … 509 510 break; 510 511 case STRING: // char* 511 pcsav = hoc_pc; 512 hoc_pc = &fc; 513 hoc_pc->sym = sym; 512 fc.sym = sym; 513 pcsav = save_pc(&fc); 514 514 hoc_push_string(); 515 515 hoc_pc = pcsav;

