1 #include <../../nrnconf.h>
22 const char*
concat(
const char* s1,
const char* s2) {
29 tmp =
new char[l1 + l2 + 1];
30 std::snprintf(tmp, l1 + l2 + 1,
"%s%s", s1, s2);
31 return (
const char*) tmp;
58 void make_pathname(
const char*,
const char*,
const char*,
int s =
'.');
63 int i = strcmp(e1->
name().c_str(), e2->
name().c_str());
92 if (sym->
type == TEMPLATE) {
146 return si->
pysec_ ? true :
false;
262 cp = strstr(
buf,
"[all]");
265 for (++cp; cp[2]; ++cp) {
445 }
else if (sym->type ==
type) {
474 for (
const auto& [_,
s]: a->
symtab_) {
513 for (
int i = 0;
i <
cnt; ++
i) {
545 if (
n > 5 && sym->
type == VAR) {
548 for (
i = 0;
i <
n; ++
i) {
567 if (
symbol->object() == ob) {
void nrn_pushsec(Section *sec)
double nrn_arc_position(Section *sec, Node *node)
static void Detach(cTemplate *, Observer *)
static void Attach(cTemplate *, Observer *)
std::map< std::string, Symbol * > symtab_
static void Detach(Object *, Observer *)
static void Attach(Object *, Observer *)
virtual int count() const
int array_index(int index) const
virtual double * variable(int index)
virtual bool is_pysec(int index) const
virtual int whole_vector(int index)
virtual int index(const std::string &) const
static bool match(const std::string &name, const std::string &pattern)
Symbol * symbol(int index) const
virtual void whole_name(int index, std::string &) const
SymDirectory * newsymdir(int index)
virtual const std::string & name(int index) const
virtual const std::string & path() const
virtual bool is_directory(int index) const
void load_mechanism(const Prop *, int, const char *)
void disconnect(Observable *)
std::vector< SymbolItem * > symbol_lists_
void update(Observable *)
void make_pathname(const char *, const char *, const char *, int s='.')
void append(Symbol *sym, Objectdata *od, Object *o=NULL)
bool is_directory() const
SymbolItem(const char *, int whole_array=0)
const std::string & name() const
constexpr auto enumerate(T &&iterable)
size_t hoc_total_array_data(const Symbol *s, Objectdata *obd)
Objectdata * hoc_objectdata
double * hoc_val_pointer(const char *s)
int is_obj_type(Object *obj, const char *type_name)
char * hoc_object_name(Object *ob)
char * hoc_araystr(Symbol *sym, int index, Objectdata *obd)
bool is_array(const Symbol &sym)
double * ivoc_vector_ptr(Object *o, int index)
int ivoc_vector_size(Object *o)
#define ITERATE(itm, lst)
void hoc_execerror(const char *s1, const char *s2)
int Sprintf(char(&buf)[N], const char *fmt, Args &&... args)
Redirect sprintf to snprintf if the buffer size can be deduced.
void section_ref(Section *)
void section_unref(Section *)
int const size_t const size_t n
neuron::container::data_handle< double > point_process_pointer(Point_process *, Symbol *, int)
std::vector< Memb_func > memb_func
int nrn_vartype(const Symbol *sym)
void nrn_symdir_load_pysec(std::vector< SymbolItem * > &sl, void *)
Object ** object_pobj(Symbol *sym, Objectdata *od)
hoc_Item ** object_psecitm(Symbol *sym, Objectdata *od)
A point process is computed just like regular mechanisms.
void *(* constructor)(struct Object *)
static int compare_entries(const SymbolItem *e1, const SymbolItem *e2)
const char * concat(const char *s1, const char *s2)
Symlist * hoc_top_level_symlist
Objectdata * hoc_top_level_data
Symlist * hoc_built_in_symlist