Explorar o código

ncd: Move some NCDVal header code to another file.
This will avoid a circular header dependency in the future.

Ambroz Bizjak %!s(int64=11) %!d(string=hai) anos
pai
achega
5d77b8559f
Modificáronse 5 ficheiros con 91 adicións e 56 borrados
  1. 1 0
      ncd/NCDModule.h
  2. 2 0
      ncd/NCDObject.c
  3. 1 1
      ncd/NCDObject.h
  4. 1 55
      ncd/NCDVal.h
  5. 86 0
      ncd/NCDVal_types.h

+ 1 - 0
ncd/NCDModule.h

@@ -35,6 +35,7 @@
 #include <misc/debug.h>
 #include <system/BReactor.h>
 #include <base/BLog.h>
+#include <ncd/NCDVal.h>
 #include <ncd/NCDObject.h>
 #include <ncd/NCDStringIndex.h>
 

+ 2 - 0
ncd/NCDObject.c

@@ -27,6 +27,8 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include <ncd/NCDVal.h>
+
 #include "NCDObject.h"
 
 int NCDObject_no_getvar (const NCDObject *obj, NCD_string_id_t name, NCDValMem *mem, NCDValRef *out_value)

+ 1 - 1
ncd/NCDObject.h

@@ -33,7 +33,7 @@
 #include <stddef.h>
 
 #include <misc/debug.h>
-#include <ncd/NCDVal.h>
+#include <ncd/NCDVal_types.h>
 #include <ncd/NCDStringIndex.h>
 #include <ncd/static_strings.h>
 

+ 1 - 55
ncd/NCDVal.h

@@ -34,64 +34,10 @@
 #include <stdint.h>
 
 #include <misc/debug.h>
-#include <misc/maxalign.h>
 #include <misc/cstring.h>
 #include <misc/BRefTarget.h>
 #include <ncd/NCDStringIndex.h>
-
-// these are implementation details. The interface is defined below.
-
-#define NCDVAL_FASTBUF_SIZE 64
-
-#define NCDVAL_MAXIDX INT_MAX
-#define NCDVAL_MINIDX INT_MIN
-#define NCDVAL_TOPPLID (-1 - NCDVAL_MINIDX)
-
-typedef int NCDVal__idx;
-
-typedef struct {
-    char *buf;
-    NCDVal__idx size;
-    NCDVal__idx used;
-    NCDVal__idx first_ref;
-    NCDVal__idx first_cms_link;
-    union {
-        char fastbuf[NCDVAL_FASTBUF_SIZE];
-        bmax_align_t align_max;
-    };
-} NCDValMem;
-
-typedef struct {
-    NCDValMem *mem;
-    NCDVal__idx idx;
-} NCDValRef;
-
-typedef struct {
-    NCDVal__idx idx;
-} NCDValSafeRef;
-
-typedef struct {
-    NCDVal__idx elemidx;
-} NCDValMapElem;
-
-struct NCDVal__instr;
-
-typedef struct {
-    struct NCDVal__instr *instrs;
-    size_t num_instrs;
-} NCDValReplaceProg;
-
-typedef struct {
-    char *data;
-    int is_allocated;
-} NCDValNullTermString;
-
-typedef struct {
-    char *data;
-    int is_allocated;
-} NCDValContString;
-
-//
+#include <ncd/NCDVal_types.h>
 
 #define NCDVAL_STRING 1
 #define NCDVAL_LIST 2

+ 86 - 0
ncd/NCDVal_types.h

@@ -0,0 +1,86 @@
+/**
+ * @file NCDVal_types.h
+ * @author Ambroz Bizjak <ambrop7@gmail.com>
+ * 
+ * @section LICENSE
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the author nor the
+ *    names of its contributors may be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef BADVPN_NCDVAL_TYPES_H
+#define BADVPN_NCDVAL_TYPES_H
+
+#include <stddef.h>
+
+#include <misc/maxalign.h>
+
+#define NCDVAL_FASTBUF_SIZE 64
+#define NCDVAL_MAXIDX INT_MAX
+#define NCDVAL_MINIDX INT_MIN
+#define NCDVAL_TOPPLID (-1 - NCDVAL_MINIDX)
+
+typedef int NCDVal__idx;
+
+typedef struct {
+    char *buf;
+    NCDVal__idx size;
+    NCDVal__idx used;
+    NCDVal__idx first_ref;
+    NCDVal__idx first_cms_link;
+    union {
+        char fastbuf[NCDVAL_FASTBUF_SIZE];
+        bmax_align_t align_max;
+    };
+} NCDValMem;
+
+typedef struct {
+    NCDValMem *mem;
+    NCDVal__idx idx;
+} NCDValRef;
+
+typedef struct {
+    NCDVal__idx idx;
+} NCDValSafeRef;
+
+typedef struct {
+    NCDVal__idx elemidx;
+} NCDValMapElem;
+
+struct NCDVal__instr;
+
+typedef struct {
+    struct NCDVal__instr *instrs;
+    size_t num_instrs;
+} NCDValReplaceProg;
+
+typedef struct {
+    char *data;
+    int is_allocated;
+} NCDValNullTermString;
+
+typedef struct {
+    char *data;
+    int is_allocated;
+} NCDValContString;
+
+#endif