]> Nishi Git Mirror - gwion.git/commitdiff
:fire: Move inherit
authorJérémie Astor <astor.jeremie@wanadoo.fr>
Wed, 22 Jul 2020 18:07:55 +0000 (20:07 +0200)
committerJérémie Astor <astor.jeremie@wanadoo.fr>
Wed, 22 Jul 2020 18:07:55 +0000 (20:07 +0200)
include/env/type.h
src/env/type.c
src/import/cdef.c

index bffe5aa443548e2cbe8eadbe4d40bbd3c3bf8a07..44cc592a064d5eb5c6b63adeabdc90c72bacebca 100644 (file)
@@ -44,6 +44,7 @@ ANN static inline m_uint env_push_type(const Env env, const Type type) { return
 ANN m_bool is_fptr(const struct Gwion_*, const Type t);
 ANN m_bool is_class(const struct Gwion_*, const Type t);
 ANN m_uint get_depth(const Type type);
+ANN void inherit(const Type);
 
 __attribute__((returns_nonnull))
 ANN static inline Type get_gack(Type t) {
index 6cefe46f12e178092c35e9c166fc2955c902ed61..d67dea028e3d5f110a3ecf644a35166e84804edc 100644 (file)
@@ -198,3 +198,12 @@ ANN inline m_bool is_class(const struct Gwion_* gwion, const Type t) {
 ANN Type actual_type(const struct Gwion_* gwion, const Type t) {
   return is_class(gwion, t) ? t->e->d.base_type : t;
 }
+
+ANN void inherit(const Type t) {
+  const Nspc nspc = t->nspc, parent = t->e->parent->nspc;
+  if(!nspc || !parent)
+    return;
+  nspc->info->offset = parent->info->offset;
+  if(parent->info->vtable.ptr)
+    vector_copy2(&parent->info->vtable, &nspc->info->vtable);
+}
index 814ffa5bbb937a8b351d7d895e7d986aae056229..32b62f4967f89c0bd206dc37f79895e5ed6aff20 100644 (file)
@@ -35,15 +35,6 @@ ANN2(1,2) static inline m_bool class_parent(const Env env, Type t) {
   return GW_OK;
 }
 
-ANN void inherit(const Type t) {
-  const Nspc nspc = t->nspc, parent = t->e->parent->nspc;
-  if(!nspc || !parent)
-    return;
-  nspc->info->offset = parent->info->offset;
-  if(parent->info->vtable.ptr)
-    vector_copy2(&parent->info->vtable, &nspc->info->vtable);
-}
-
 ANN2(1,2) static void import_class_ini(const Env env, const Type t) {
   t->nspc = new_nspc(env->gwion->mp, t->name);
   t->nspc->parent = env->curr;