extern Lisp_Object ase_make_cartesian(int nargs, Lisp_Object *args, int interiorp);
extern Lisp_Object _ase_wrap_cartesian(ase_cartesian_t);
extern Lisp_Object _ase_wrap_cartesian_interior(ase_cartesian_t);
-extern inline int
+static inline int
ase_cartesian_pointwise_pred_p(ase_cartesian_t, int(*)(Lisp_Object));
-extern inline Lisp_Object
+static inline Lisp_Object
ase_cartesian_pointwise_erel_p(
ase_cartesian_t, ase_cartesian_t, ase_element_relation_f);
-extern inline int
+static inline int
ase_cartesian_pointwise_rel_p(
ase_cartesian_t, ase_cartesian_t, ase_relation_f);
-extern inline int
+static inline int
ase_cartesian_antipointwise_rel_p(
ase_cartesian_t, ase_cartesian_t, ase_relation_f);
-extern inline ase_cartesian_t
+static inline ase_cartesian_t
_ase_make_cartesian(int nargs, Lisp_Object*, int interiorp);
-extern inline Lisp_Object*
+static inline Lisp_Object*
__ase_vectorise(int nargs, Lisp_Object *o);
\f
/* for predicates this is a more intuitive function
* it applies PREDFUN to every point in C and returns non-0 iff
* all points met PREDFUN and 0 otherwise */
-extern inline int
+static inline int
ase_cartesian_pointwise_pred_p(ase_cartesian_t c, int(*predfun)(Lisp_Object))
{
/* Apply PREDFUN to every point in C and returns non-0 iff
return 1;
}
-extern inline Lisp_Object
+static inline Lisp_Object
ase_cartesian_pointwise_erel_p(
ase_cartesian_t c1, ase_cartesian_t c2, ase_element_relation_f relf)
{
return Qt;
}
-extern inline int
+static inline int
ase_cartesian_pointwise_rel_p(
ase_cartesian_t c1, ase_cartesian_t c2, ase_relation_f relf)
{
return 1;
}
-extern inline int
+static inline int
ase_cartesian_antipointwise_rel_p(
ase_cartesian_t c1, ase_cartesian_t c2, ase_relation_f relf)
{
\f
/* constructors */
-extern inline Lisp_Object*
+static inline Lisp_Object*
__ase_vectorise(int nargs, Lisp_Object *o)
{
Lisp_Object *result = NULL;
return result;
}
-extern inline ase_cartesian_t
+static inline ase_cartesian_t
_ase_make_cartesian(int nargs, Lisp_Object *o, int interiorp)
{
ase_cartesian_t n = NULL;
\f
/* dyna heaps */
-extern inline ase_yheap_t _ase_make_yheap(ase_heap_options_t opts);
-extern inline Lisp_Object _ase_wrap_yheap(ase_yheap_t);
+static inline ase_yheap_t _ase_make_yheap(ase_heap_options_t opts);
+static inline Lisp_Object _ase_wrap_yheap(ase_yheap_t);
extern Lisp_Object ase_make_yheap(ase_heap_options_t opts);
extern void ase_add_yheap(ase_yheap_t h, Lisp_Object o, Lisp_Object colour);
extern Lisp_Object ase_pop_yheap(ase_yheap_t h);
extern Lisp_Object ase_yheap_top_rank(ase_yheap_t h);
/* dense heaps */
-extern inline ase_dheap_t _ase_make_dheap(ase_heap_options_t opts);
-extern inline Lisp_Object _ase_wrap_dheap(ase_dheap_t);
+static inline ase_dheap_t _ase_make_dheap(ase_heap_options_t opts);
+static inline Lisp_Object _ase_wrap_dheap(ase_dheap_t);
extern Lisp_Object ase_make_dheap(ase_heap_options_t opts);
extern void ase_add_dheap(ase_dheap_t h, Lisp_Object o, Lisp_Object colour);
extern Lisp_Object ase_pop_dheap(ase_dheap_t h);
extern Lisp_Object ase_dheap_top_rank(ase_dheap_t h);
/* weak heaps */
-extern inline ase_wheap_t _ase_make_wheap(ase_heap_options_t opts);
-extern inline Lisp_Object _ase_wrap_wheap(ase_wheap_t);
+static inline ase_wheap_t _ase_make_wheap(ase_heap_options_t opts);
+static inline Lisp_Object _ase_wrap_wheap(ase_wheap_t);
extern Lisp_Object ase_make_wheap(ase_heap_options_t opts);
extern void ase_add_wheap(ase_wheap_t h, Lisp_Object o, Lisp_Object colour);
extern Lisp_Object ase_pop_wheap(ase_wheap_t h);
extern Lisp_Object ase_neighbourhood_interior(Lisp_Object nbh);
/* predicates */
-extern inline bool
+static inline bool
ase_neighbourhood_contains_obj_p(ase_neighbourhood_t, Lisp_Object);
-extern inline bool
+static inline bool
ase_neighbourhood_contains_nbh_p(ase_neighbourhood_t, ase_neighbourhood_t);
-extern inline bool ase_neighbourhood_open_p(ase_neighbourhood_t);
-extern inline bool ase_neighbourhood_closed_p(ase_neighbourhood_t);
-extern inline bool
+static inline bool ase_neighbourhood_open_p(ase_neighbourhood_t);
+static inline bool ase_neighbourhood_closed_p(ase_neighbourhood_t);
+static inline bool
ase_neighbourhood_less_obj_p(ase_neighbourhood_t, Lisp_Object);
-extern inline bool
+static inline bool
ase_neighbourhood_less_nbh_p(ase_neighbourhood_t, ase_neighbourhood_t);
-extern inline bool
+static inline bool
ase_neighbourhood_greater_obj_p(ase_neighbourhood_t, Lisp_Object);
-extern inline bool
+static inline bool
ase_neighbourhood_greater_nbh_p(ase_neighbourhood_t, ase_neighbourhood_t);
-extern inline Lisp_Object
+static inline Lisp_Object
ase_neighbourhood_point(ase_neighbourhood_t);
-extern inline Lisp_Object
+static inline Lisp_Object
ase_neighbourhood_radius(ase_neighbourhood_t);
/* measures */
-extern inline Lisp_Object
+static inline Lisp_Object
ase_neighbourhood_lebesgue_measure(ase_neighbourhood_t);
-extern inline Lisp_Object
+static inline Lisp_Object
ase_neighbourhood_rational_measure(ase_neighbourhood_t);
/* inlines */
-extern inline bool
+static inline bool
ase_neighbourhood_contains_obj_p(ase_neighbourhood_t n, Lisp_Object obj)
{
/* we _know_ atm that n->ldata points to an ase_interval_t */
return !NILP(Fase_interval_contains_p(intv, obj));
}
-extern inline bool
+static inline bool
ase_neighbourhood_contains_nbh_p(ase_neighbourhood_t n1, ase_neighbourhood_t n2)
{
/* we _know_ atm that {n1,n2}->data points to an ase_interval_t */
return !NILP(Fase_interval_contains_p(i1, i2));
}
-extern inline bool
+static inline bool
ase_neighbourhood_open_p(ase_neighbourhood_t n)
{
return n->open_p;
}
-extern inline bool
+static inline bool
ase_neighbourhood_closed_p(ase_neighbourhood_t n)
{
return !n->open_p;
}
-extern inline bool
+static inline bool
ase_neighbourhood_less_obj_p(ase_neighbourhood_t n, Lisp_Object obj)
{
/* we _know_ atm that {n1,n2}->data points to an ase_interval_t */
return (_ase_less_p(a->upper, obj) || _ase_equal_p(a->upper, obj));
}
-extern inline bool
+static inline bool
ase_neighbourhood_less_nbh_p(ase_neighbourhood_t n1, ase_neighbourhood_t n2)
{
/* we _know_ atm that {n1,n2}->data points to an ase_interval_t */
_ase_equal_p(a1->upper, a2->lower));
}
-extern inline bool
+static inline bool
ase_neighbourhood_greater_obj_p(ase_neighbourhood_t n, Lisp_Object obj)
{
/* we _know_ atm that {n1,n2}->data points to an ase_interval_t */
return (_ase_less_p(obj, a->lower) || _ase_equal_p(obj, a->lower));
}
-extern inline bool
+static inline bool
ase_neighbourhood_greater_nbh_p(ase_neighbourhood_t n1, ase_neighbourhood_t n2)
{
/* we _know_ atm that {n1,n2}->data points to an ase_interval_t */
};
/* inline decls */
-extern inline int
+static inline int
_ase_less_p(Lisp_Object, Lisp_Object);
-extern inline int
+static inline int
_ase_greater_p(Lisp_Object, Lisp_Object);
-extern inline int
+static inline int
_ase_equal_p(Lisp_Object, Lisp_Object);
-extern inline int
+static inline int
_ase_lessequal_p(Lisp_Object, Lisp_Object);
-extern inline int
+static inline int
_ase_greaterequal_p(Lisp_Object, Lisp_Object);
-extern inline void
+static inline void
_ase_swap(Lisp_Object *args, int idx1, int idx2);
\f
-extern inline int
+static inline int
_ase_less_p(Lisp_Object a, Lisp_Object b)
{
return ent_binrel(ASE_BINARY_REL_LESSP, a, b);
}
-extern inline int
+static inline int
_ase_greater_p(Lisp_Object a, Lisp_Object b)
{
return ent_binrel(ASE_BINARY_REL_GREATERP, a, b);
}
-extern inline int
+static inline int
_ase_equal_p(Lisp_Object a, Lisp_Object b)
{
return ent_binrel(ASE_BINARY_REL_EQUALP, a, b);
}
-extern inline int
+static inline int
_ase_lessequal_p(Lisp_Object a, Lisp_Object b)
{
return ent_binrel2(ASE_BINARY_REL_LESSP,
ASE_BINARY_REL_EQUALP, a, b);
}
-extern inline int
+static inline int
_ase_greaterequal_p(Lisp_Object a, Lisp_Object b)
{
return ent_binrel2(ASE_BINARY_REL_GREATERP,
ASE_BINARY_REL_EQUALP, a, b);
}
-extern inline void
+static inline void
_ase_swap(Lisp_Object *args, int idx1, int idx2)
{
Lisp_Object foo = args[idx1];