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;
16  sec = chk_access();
17  p = sec->prop;
18  Printf("%s {", secname(sec));
19  Printf(" nseg=%d L=%g Ra=%g", sec->nnode - 1, section_length(sec), nrn_ra(sec));
20  if (p->dparam[4].get<double>() != 1) {
21  Printf(" rallbranch=%g", p->dparam[4].get<double>());
22  }
23  Printf("\n");
24  if (sec->parentsec) {
25  Printf(" %s ", secname(sec->parentsec));
26  Printf("connect %s (%g), %g\n",
27  secname(sec),
28  p->dparam[3].get<double>(),
29  p->dparam[1].get<double>());
30  } else {
32  /*SUPPRESS 440*/
33  Printf(" /*location %g attached to cell %d*/\n",
34  p->dparam[3].get<double>(),
35  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  Symbol* sym;
49  int j;
50 
51  if (!p1) {
52  return;
53  }
54  pnode(p1->next); /*print in insert order*/
55  sym = memb_func[p1->_type].sym;
56  Printf(" insert %s {", sym->name);
57  if (sym->s_varn) {
58  for (j = 0; j < sym->s_varn; j++) {
59  Symbol* s = sym->u.ppsym[j];
60  if (nrn_vartype(s) == nrnocCONST) {
61  if (p1->ob) {
62  printf(" %s=%g", s->name, p1->ob->u.dataspace[s->u.rng.index].pval[0]);
63  } else {
64  Printf(" %s=%g", s->name, p1->param_legacy(s->u.rng.index));
65  }
66  }
67  }
68  }
69  Printf("}\n");
70 }
71 
72 extern void print_stim(void);
73 extern void print_clamp(void);
74 extern void print_syn(void);
75 
76 void prstim(void) {
77  print_stim();
78  print_clamp();
79  print_syn();
80  hoc_retpushx(1.);
81 }
Section * chk_access()
Definition: cabcode.cpp:449
const char * secname(Section *sec)
name of section (for use in error messages)
Definition: cabcode.cpp:1674
double nrn_ra(Section *sec)
Definition: cabcode.cpp:417
double section_length(Section *sec)
Definition: cabcode.cpp:401
#define sec
Definition: md1redef.h:20
void hoc_retpushx(double x)
Definition: hocusr.cpp:154
#define nrnocCONST
Definition: membfunc.hpp:63
printf
Definition: extdef.h:5
void v_setup_vectors()
Definition: treeset.cpp:1596
size_t p
size_t j
s
Definition: multisend.cpp:521
std::vector< Memb_func > memb_func
Definition: init.cpp:145
int nrn_vartype(const Symbol *sym)
Definition: eion.cpp:503
void psection(void)
Definition: psection.cpp:12
static void pnode(Prop *)
Definition: psection.cpp:47
void print_stim(void)
Definition: fstim.cpp:49
void prstim(void)
Definition: psection.cpp:76
void print_syn(void)
Definition: synapse.cpp:65
void print_clamp(void)
Definition: clamp.cpp:46
void verify_structure(void)
Definition: fadvance.cpp:792
Objectdata * dataspace
Definition: hocdec.h:177
union Object::@47 u
Definition: section.h:231
short _type
Definition: section.h:244
Object * ob
Definition: section.h:252
Prop * next
Definition: section.h:243
double & param_legacy(int legacy_index)
Definition: section.h:345
Definition: model.h:47
union Symbol::@28 u
Symbol ** ppsym
Definition: hocdec.h:125
unsigned s_varn
Definition: hocdec.h:129
char * name
Definition: model.h:61
double * pval
Definition: hocdec.h:164
int Printf(const char *fmt, Args... args)
Definition: logger.hpp:18