NEURON
psection.cpp
Go to the documentation of this file.
1 #include <../../nrnconf.h>
2 
3 #include <stdio.h>
4 #include "section.h"
5 #include "parse.hpp"
6 #include "membfunc.h"
7 
8 extern void verify_structure(void);
9 
10 static void pnode(Prop*);
11 
12 void psection(void) {
13  Section* sec;
14  Prop *p, *p1;
15 
17  sec = chk_access();
18  p = sec->prop;
19  Printf("%s {", secname(sec));
20  Printf(" nseg=%d L=%g Ra=%g", sec->nnode - 1, section_length(sec), nrn_ra(sec));
21  if (p->dparam[4].val != 1) {
22  Printf(" rallbranch=%g", p->dparam[4].val);
23  }
24  Printf("\n");
25  if (sec->parentsec) {
26  Printf(" %s ", secname(sec->parentsec));
27  Printf("connect %s (%g), %g\n", secname(sec), p->dparam[3].val, p->dparam[1].val);
28  } else {
30  /*SUPPRESS 440*/
31  Printf(" /*location %g attached to cell %d*/\n",
32  p->dparam[3].val,
33  sec->parentnode->v_node_index);
34  }
35  if (sec->nnode) {
36  /*SUPPRESS 440*/
37  Printf(" /* First segment only */\n");
38  p1 = sec->pnode[0]->prop;
39  pnode(p1);
40  }
41  Printf("}\n");
42  hoc_retpushx(1.);
43 }
44 
45 static void pnode(Prop* p1) {
46  Symbol* sym;
47  int j;
48 
49  if (!p1) {
50  return;
51  }
52  pnode(p1->next); /*print in insert order*/
53  sym = memb_func[p1->type].sym;
54  Printf(" insert %s {", sym->name);
55  if (sym->s_varn) {
56  for (j = 0; j < sym->s_varn; j++) {
57  Symbol* s = sym->u.ppsym[j];
58  if (nrn_vartype(s) == nrnocCONST) {
59  if (p1->ob) {
60  printf(" %s=%g", s->name, p1->ob->u.dataspace[s->u.rng.index].pval[0]);
61  } else {
62  Printf(" %s=%g", s->name, p1->param[s->u.rng.index]);
63  }
64  }
65  }
66  }
67  Printf("}\n");
68 }
69 
70 extern void print_stim(void);
71 extern void print_clamp(void);
72 extern void print_syn(void);
73 
74 void prstim(void) {
75  print_stim();
76  print_clamp();
77  print_syn();
78  hoc_retpushx(1.);
79 }
const char * secname(Section *sec)
Definition: cabcode.cpp:1776
double nrn_ra(Section *sec)
Definition: cabcode.cpp:403
double section_length(Section *sec)
Definition: cabcode.cpp:387
Section * chk_access(void)
Definition: cabcode.cpp:444
Memb_func * memb_func
Definition: init.cpp:123
int nrn_vartype(Symbol *sym)
Definition: eion.cpp:515
void hoc_retpushx(double x)
Definition: hocusr.cpp:154
#define sec
Definition: md1redef.h:13
#define nrnocCONST
Definition: membfunc.h:69
#define Printf
Definition: model.h:237
#define printf
Definition: mwprefix.h:26
void v_setup_vectors()
Definition: treeset.cpp:1631
size_t p
size_t j
void psection(void)
Definition: psection.cpp:12
static void pnode(Prop *)
Definition: psection.cpp:45
void print_stim(void)
Definition: fstim.cpp:49
void prstim(void)
Definition: psection.cpp:74
void print_syn(void)
Definition: synapse.cpp:65
void print_clamp(void)
Definition: clamp.cpp:46
void verify_structure(void)
Definition: fadvance.cpp:880
Symbol * sym
Definition: membfunc.h:38
Objectdata * dataspace
Definition: hocdec.h:231
union Object::@39 u
Definition: section.h:214
double * param
Definition: section.h:219
Object * ob
Definition: section.h:225
short type
Definition: section.h:216
struct Prop * next
Definition: section.h:215
Definition: model.h:57
HocStruct Symbol ** ppsym
Definition: hocdec.h:150
struct Symbol::@37::@38 rng
union Symbol::@18 u
unsigned s_varn
Definition: hocdec.h:158
char * name
Definition: model.h:72
double * pval
Definition: hocdec.h:218