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 {
14  Section *sec;
15  Prop *p, *p1;
16 
18  sec = chk_access();
19  p = sec->prop;
20  Printf("%s {", secname(sec));
21  Printf(" nseg=%d L=%g Ra=%g", sec->nnode - 1, section_length(sec),
22  nrn_ra(sec));
23  if (p->dparam[4].val != 1) {
24  Printf(" rallbranch=%g", p->dparam[4].val);
25  }
26  Printf("\n");
27  if (sec->parentsec) {
28  Printf(" %s ",secname(sec->parentsec));
29  Printf("connect %s (%g), %g\n", secname(sec),
30  p->dparam[3].val, p->dparam[1].val);
31  } else {
33  /*SUPPRESS 440*/
34  Printf(" /*location %g attached to cell %d*/\n",
35  p->dparam[3].val, sec->parentnode->v_node_index);
36  }
37  if (sec->nnode) {
38  /*SUPPRESS 440*/
39  Printf(" /* First segment only */\n");
40  p1 = sec->pnode[0]->prop;
41  pnode(p1);
42  }
43  Printf("}\n");
44  hoc_retpushx(1.);
45 }
46 
47 static void pnode(Prop* p1)
48 {
49  Symbol *sym;
50  int j;
51 
52  if (!p1) {
53  return;
54  }
55  pnode(p1->next); /*print in insert order*/
56  sym = memb_func[p1->type].sym;
57  Printf(" insert %s {", sym->name);
58  if (sym->s_varn) {
59  for (j=0; j < sym->s_varn; j++ ) {
60  Symbol* s = sym->u.ppsym[j];
61  if (nrn_vartype(s) == nrnocCONST) {
62  if (p1->ob) {
63 printf(" %s=%g", s->name, p1->ob->u.dataspace[s->u.rng.index].pval[0]);
64  }else{
65 Printf(" %s=%g", s->name, p1->param[s->u.rng.index]);
66  }
67  }
68  }
69  }
70  Printf("}\n");
71 }
72 
73 extern void print_stim(void);
74 extern void print_clamp(void);
75 extern void print_syn(void);
76 
77 void prstim(void) {
78  print_stim();
79  print_clamp();
80  print_syn();
81  hoc_retpushx(1.);
82 }
83 
84 
#define Printf
Definition: model.h:252
double * param
Definition: section.h:218
struct Prop * prop
Definition: section.h:62
short nnode
Definition: section.h:41
#define nrnocCONST
Definition: membfunc.h:69
struct Node * parentnode
Definition: section.h:50
struct Section * parentsec
Definition: section.h:42
static void pnode(Prop *)
Definition: psection.cpp:47
size_t p
char * name
Definition: model.h:72
void print_clamp(void)
Definition: clamp.cpp:46
Object * ob
Definition: section.h:224
Memb_func * memb_func
Definition: init.cpp:161
short type
Definition: section.h:215
unsigned s_varn
Definition: hocdec.h:157
Symbol * sym
Definition: membfunc.h:38
int nrn_vartype(Symbol *sym)
Definition: eion.cpp:488
HocStruct Symbol ** ppsym
Definition: hocdec.h:149
double * pval
Definition: hocdec.h:217
_CONST char * s
Definition: system.cpp:74
Objectdata * dataspace
Definition: hocdec.h:230
#define printf
Definition: mwprefix.h:26
const char * secname(Section *sec)
Definition: cabcode.cpp:1787
void v_setup_vectors()
Definition: treeset.cpp:1623
hoc_retpushx(1.0)
size_t j
Definition: model.h:57
double nrn_ra(Section *sec)
Definition: cabcode.cpp:392
Definition: section.h:213
double section_length(Section *sec)
Definition: cabcode.cpp:375
Datum * dparam
Definition: section.h:219
struct Symbol::@52::@53 rng
int v_node_index
Definition: section.h:174
void psection(void)
Definition: psection.cpp:12
struct Prop * next
Definition: section.h:214
sec
Definition: solve.cpp:885
void verify_structure(void)
Definition: fadvance.cpp:821
struct Node ** pnode
Definition: section.h:51
void print_stim(void)
Definition: fstim.cpp:49
void print_syn(void)
Definition: synapse.cpp:66
union Symbol::@18 u
union Object::@54 u
double val
Definition: hocdec.h:177
Section * chk_access(void)
Definition: cabcode.cpp:437
void prstim(void)
Definition: psection.cpp:77
struct Prop * prop
Definition: section.h:151