]> Nishi Git Mirror - gwion.git/commitdiff
:art: Add Tuple header
authorfennecdjay <astor.jeremie@wanadoo.fr>
Fri, 9 Aug 2019 00:45:55 +0000 (02:45 +0200)
committerfennecdjay <astor.jeremie@wanadoo.fr>
Fri, 9 Aug 2019 00:45:55 +0000 (02:45 +0200)
include/instr.h
include/tuple.h [new file with mode: 0644]
include/type.h
src/emit/emit.c
src/lib/tuple.c
src/oo/type.c
src/parse/check.c

index cd95e22ef5e66eec4a45a052cb9d4eb19dc4a954..1f97a27dc2cf8c4e070ac677eafb6cf88ab35f36 100644 (file)
@@ -64,9 +64,6 @@ INSTR(PopArrayClass);
 INSTR(DotTmpl);
 INSTR(GTmpl);
 
-INSTR(TupleCtor);
-INSTR(TupleMember);
-
 struct dottmpl_ {
   size_t len;
   m_str name;
diff --git a/include/tuple.h b/include/tuple.h
new file mode 100644 (file)
index 0000000..22759d2
--- /dev/null
@@ -0,0 +1,19 @@
+#ifndef __TUPLE
+#define __TUPLE
+typedef struct TupleForm_* TupleForm;
+struct TupleForm_ {
+  struct Vector_ types;
+  struct Vector_ offset;
+  Type_List list;
+};
+
+ANN Type tuple_type(const Env, const Vector, const loc_t);
+ANN void tuple_info(const Env, Type_Decl*, const Var_Decl);
+ANN TupleForm new_tupleform(MemPool p);
+ANN void free_tupleform(MemPool p, const TupleForm tuple);
+
+#ifdef __INSTR
+INSTR(TupleCtor);
+INSTR(TupleMember);
+#endif
+#endif
index 6e3ae9ec8332f0e1808282b441feecea90e9a057..4880184dc3c4be372efe4a3a0b1e04ffc22af64e 100644 (file)
@@ -1,13 +1,6 @@
 #ifndef __TYPE
 #define __TYPE
 
-typedef struct TupleForm_* TupleForm;
-struct TupleForm_ {
-  struct Vector_ types;
-  struct Vector_ offset;
-  Type_List list;
-};
-
 struct TypeInfo_ {
   Type      parent;
   Nspc      owner;
@@ -59,11 +52,5 @@ ANN static inline m_bool is_fptr(const Type t) {
   return isa(actual_type(t), t_fptr) > 0;
 }
 ANN m_uint get_depth(const Type type);
-
-
-ANN Type tuple_type(const Env, const Vector, const loc_t);
-ANN void tuple_info(const Env, Type_Decl*, const Var_Decl);
-ANN TupleForm new_tupleform(MemPool p);
-ANN void free_tupleform(MemPool p, const TupleForm tuple);
 #endif
 
index 9737a9852519f4881c9eb0d7805b3c132ed22f81..7d827856a42887fd71e1edff751bbc6d2dcf476a 100644 (file)
@@ -23,6 +23,7 @@
 #include "import.h"
 #include "switch.h"
 #include "parser.h"
+#include "tuple.h"
 
 #undef insert_symbol
 #define insert_symbol(a) insert_symbol(emit->gwion->st, (a))
index c82e7a2c01f6279cfe9abccaeb01588bea3ad3e8..18d03bc590942898a7c657dd31d2df019286b710 100644 (file)
@@ -18,6 +18,7 @@
 #include "value.h"
 #include "parse.h"
 #include "cpy_ast.h"
+#include "tuple.h"
 
 struct TupleEmit {
   Exp e;
index f8707e7a08470eb2c9a8ce7415d666706013a986..605c961a399e3d4c3bf71b351801b0726ae49263 100644 (file)
@@ -9,6 +9,7 @@
 #include "traverse.h"
 #include "parse.h"
 #include "gwion.h"
+#include "tuple.h"
 
 ANN static void free_type(Type a, Gwion gwion) {
   if(GET_FLAG(a, template)) {
index 9f7b5d44fd76383fec902164d39b6c9bb387b615..48cfaf0a73f644687422c2246b535d33b42bbb56 100644 (file)
@@ -19,6 +19,7 @@
 #include "nspc.h"
 #include "switch.h"
 #include "cpy_ast.h"
+#include "tuple.h"
 
 ANN static Type   check_exp(const Env env, Exp exp);
 ANN static m_bool check_stmt_list(const Env env, Stmt_List list);