const char * secname(Section *sec)
name of section (for use in error messages)
void nrn_change_nseg(Section *sec, int n)
void oc_save_cabcode(int *a1, int *a2)
neuron::container::generic_data_handle nrnpy_dprop(Symbol *s, int indx, Section *sec, short inode, int *err)
returns location of property symbol, return nullptr instead of hoc_execerror
void mech_uninsert1(Section *sec, Symbol *s)
double * nrn_vext_pd(Symbol *s, int indx, Node *nd)
int node_index_exact(Section *sec, double x)
return -1 if x at connection end, nnode-1 if at other end
Node * node_ptr(Section *sec, double x, double *parea)
void nrn_parent_info(Section *s)
double nrn_arc_position(Section *sec, Node *node)
Section * nrn_noerr_access()
return 0 if no accessed section
void new_sections(Object *ob, Symbol *sym, hoc_Item **pitm, int size)
Prop * hoc_getdata_range(int type)
int has_membrane(char *mechanism_name, Section *sec)
double cable_prop_eval(Symbol *sym)
Prop * nrn_mechanism(int type, Node *nd)
void nrn_rangeconst(Section *, Symbol *, neuron::container::data_handle< double > value, int op)
void cable_prop_assign(Symbol *sym, double *pd, int op)
void morph_alloc(Prop *p)
int segment_limits(double *)
double section_length(Section *sec)
neuron::container::generic_data_handle nrnpy_rangepointer(Section *, Symbol *, double, int *, int)
return nullptr if failure instead of hoc_execerror and return pointer to the 0 element if an array
int node_index(Section *sec, double x)
returns nearest index to x
int nrn_sec2cell_equals(Section *sec, Object *obj)
int nrn_exists(Symbol *s, Node *node)
neuron::container::data_handle< double > dprop(Symbol *s, int indx, Section *sec, short inode)
returns location of property symbol
Object * nrn_sec2cell(Section *sec)
void nrn_pushsec(Section *)
Prop * nrn_mechanism_check(int type, Section *sec, int inode)
returns prop given mech type, section, and inode error if mech not at this position
double nrn_diameter(Node *nd)
void hoc_level_pushsec(Section *sec)
turn off section stack fixing (in case of return, continue, break in a section statement) between exp...
const char * sec_and_position(Section *sec, Node *nd)
neuron::container::data_handle< double > nrn_rangepointer(Section *sec, Symbol *s, double d)
void oc_restore_cabcode(int *a1, int *a2)
void ob_sec_access_push(hoc_Item *qsec)
double nrn_connection_position(Section *)
void nrn_disconnect(Section *sec)
Section * nrn_trueparent(Section *)
char * hoc_section_pathname(Section *sec)
Node * node_exact(Section *sec, double x)
like node_index but give proper node when x is 0 or 1 as well as in between
void mech_insert1(Section *sec, int type)
Section * section_new(Symbol *sym)
Creates a new section and registers with the global section list.
double * cable_prop_eval_pointer(Symbol *sym)
double nrn_section_orientation(Section *)
Section * nrn_section_exists(char *name, int indx, Object *cell)
int nrn_at_beginning(Section *sec)
static Node * node(Object *)
int const size_t const size_t n
static double cell(void *v)
Non-template stable handle to a generic value.