1 #include <../../nrnconf.h>
82 if (
auto*
const old_node = pnt->
node; old_node) {
83 auto*
const p = pnt->
prop;
85 auto* p1 = old_node->prop;
87 old_node->prop = p1->
next;
89 for (; p1; p1 = p1->next) {
113 if (x == 0. || x == 1.) {
141 pnt->
prop->
dparam[0] =
static_cast<double*
>(
nullptr);
159 if (oldsec == pnt->sec) {
160 if (oldnode ==
node) {
172 *px =
chkarg(iarg, 0., 1.);
178 (*nrnpy_o2loc_p_)(o, psec, px);
188 *px =
chkarg(iarg, 0., 1.);
194 (*nrnpy_o2loc2_p_)(o, psec, px);
209 hoc_execerror(
"ARTIFICIAL_CELLs are not located in a section", (
char*) 0);
223 hoc_execerror(
"point process not located in a section", (
char*) 0);
226 hoc_execerror(
"ARTIFICIAL_CELLs are not located in a section", (
char*) 0);
236 return (pnt->
sec != 0);
244 hoc_warning(
"point process not located in a section",
nullptr);
248 hoc_execerror(
"point process not located in a section",
nullptr);
271 if (datum.holds<
double*>()) {
320 for (; p1; p1 = p1->next) {
352 if (pnt->ob->observers) {
355 if (pnt->ob->ctemplate->observers) {
double nrn_arc_position(Section *sec, Node *node)
void hoc_level_pushsec(Section *sec)
turn off section stack fixing (in case of return, continue, break in a section statement) between exp...
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
Symbol * hoc_table_lookup(const char *, Symlist *)
void nrn_prop_datum_free(int type, Datum *ppd)
double chkarg(int, double low, double high)
void hoc_push_frame(Symbol *sp, int narg)
void hoc_template_notify(Object *ob, int message)
Object * hoc_new_object(Symbol *symtemp, void *v)
int hoc_is_double_arg(int narg)
void hoc_obj_notify(Object *ob)
void hoc_obj_unref(Object *obj)
void hoc_push(neuron::container::generic_data_handle handle)
bool is_array(const Symbol &sym)
Object * hoc_new_opoint(int)
Object ** hoc_objgetarg(int)
int hoc_araypt(Symbol *, int)
void hoc_execerror(const char *s1, const char *s2)
void hoc_warning(const char *s1, const char *s2)
constexpr do_not_search_t do_not_search
void section_unref(Section *)
void nrn_sec_ref(Section **, Section *)
static Node * node(Object *)
void prop_update_ion_variables(Prop *, Node *)
std::vector< Memb_func > memb_func
std::unordered_map< int, void(*)(Prop *)> nrn_mech_inst_destruct
double loc_point_process(int pointtype, void *v)
short * nrn_is_artificial_
double has_loc_point(void *v)
static Datum * cppp_datum
double get_loc_point_process(void *v)
void * create_point_process(int pointtype, Object *ho)
void(* nrnpy_o2loc2_p_)(Object *, Section **, double *)
void nrn_seg_or_x_arg2(int iarg, Section **psec, double *px)
void nrn_relocate_old_points(Section *oldsec, Node *oldnode, Section *sec, Node *node)
neuron::container::data_handle< double > point_process_pointer(Point_process *pnt, Symbol *sym, int index)
void(* nrnpy_o2loc_p_)(Object *, Section **, double *)
Object * nrn_new_pointprocess(Symbol *sym)
Prop * prop_alloc(Prop **, int, Node *)
static void create_artcell_prop(Point_process *pnt, short type)
void clear_point_process_struct(Prop *p)
void connect_point_process_pointer(void)
void nrn_seg_or_x_arg(int iarg, Section **psec, double *px)
static int cppp_semaphore
void nrn_loc_point_process(int pointtype, Point_process *pnt, Section *sec, Node *node)
int is_point_process(Object *ob)
void destroy_point_process(void *v)
void steer_point_process(void *v)
static void free_one_point(Point_process *pnt)
Symlist * hoc_built_in_symlist
A point process is computed just like regular mechanisms.
auto param_handle_legacy(int legacy_index)
struct Symbol::@45::@46 rng
Non-template stable handle to a generic value.
Section * nrn_pnt_sec_for_need_
Prop * prop_alloc_disallow(Prop **pp, short type, Node *nd)