Переглянути джерело

Refactoring using MemRef.

Ambroz Bizjak 11 роки тому
батько
коміт
9314b91783

+ 6 - 5
base/BLog.h

@@ -38,6 +38,7 @@
 #include <string.h>
 
 #include <misc/debug.h>
+#include <misc/memref.h>
 #include <base/BMutex.h>
 
 // auto-generated channel numbers and number of channels
@@ -101,7 +102,7 @@ static int BLog_WouldLog (int channel, int level);
 static void BLog_Begin (void);
 static void BLog_AppendVarArg (const char *fmt, va_list vl);
 static void BLog_Append (const char *fmt, ...);
-static void BLog_AppendBytes (const char *data, size_t len);
+static void BLog_AppendBytes (MemRef data);
 static void BLog_Finish (int channel, int level);
 static void BLog_LogToChannelVarArg (int channel, int level, const char *fmt, va_list vl);
 static void BLog_LogToChannel (int channel, int level, const char *fmt, ...);
@@ -229,7 +230,7 @@ void BLog_Append (const char *fmt, ...)
     va_end(vl);
 }
 
-void BLog_AppendBytes (const char *data, size_t len)
+void BLog_AppendBytes (MemRef data)
 {
     ASSERT(blog_global.initialized)
 #ifndef NDEBUG
@@ -239,10 +240,10 @@ void BLog_AppendBytes (const char *data, size_t len)
     ASSERT(blog_global.logbuf_pos < sizeof(blog_global.logbuf))
     
     size_t avail = (sizeof(blog_global.logbuf) - 1) - blog_global.logbuf_pos;
-    len = (len > avail ? avail : len);
+    data.len = (data.len > avail ? avail : data.len);
     
-    memcpy(blog_global.logbuf + blog_global.logbuf_pos, data, len);
-    blog_global.logbuf_pos += len;
+    memcpy(blog_global.logbuf + blog_global.logbuf_pos, data.ptr, data.len);
+    blog_global.logbuf_pos += data.len;
     blog_global.logbuf[blog_global.logbuf_pos] = '\0';
 }
 

+ 1 - 1
examples/ncd_tokenizer_test.c

@@ -146,7 +146,7 @@ int main (int argc, char **argv)
     
     error = 0;
     
-    NCDConfigTokenizer_Tokenize(argv[1], strlen(argv[1]), tokenizer_output, NULL);
+    NCDConfigTokenizer_Tokenize(MemRef_MakeCstr(argv[1]), tokenizer_output, NULL);
     
     if (error) {
         return 1;

+ 1 - 1
examples/ncd_value_parser_test.c

@@ -52,7 +52,7 @@ int main (int argc, char *argv[])
     
     // parse
     NCDValRef val;
-    if (!NCDValParser_Parse(argv[1], strlen(argv[1]), &mem, &val)) {
+    if (!NCDValParser_Parse(MemRef_MakeCstr(argv[1]), &mem, &val)) {
         DEBUG("NCDValParser_Parse failed");
         goto fail1;
     }

+ 2 - 2
ncd-request/ncd-request.c

@@ -77,7 +77,7 @@ int main (int argc, char *argv[])
     
     NCDValMem_Init(&request_mem);
     
-    if (!NCDValParser_Parse(request_payload_string, strlen(request_payload_string), &request_mem, &request_value)) {
+    if (!NCDValParser_Parse(MemRef_MakeCstr(request_payload_string), &request_mem, &request_value)) {
         BLog(BLOG_ERROR, "BReactor_Init failed");
         goto fail1;
     }
@@ -125,7 +125,7 @@ static int make_connect_addr (const char *str, struct BConnection_addr *out_addr
     size_t i;
     
     if (i = string_begins_with(str, "unix:")) {
-        *out_addr = BConnection_addr_unix(str + i, strlen(str + i));
+        *out_addr = BConnection_addr_unix(MemRef_MakeCstr(str + i));
     }
     else if (i = string_begins_with(str, "tcp:")) {
         BAddr baddr;

+ 1 - 1
ncd/NCDConfigParser.c

@@ -204,7 +204,7 @@ int NCDConfigParser_Parse (char *config, size_t config_len, NCDProgram *out_ast)
     }
     
     // tokenize and parse
-    NCDConfigTokenizer_Tokenize(config, config_len, tokenizer_output, &state);
+    NCDConfigTokenizer_Tokenize(MemRef_Make(config, config_len), tokenizer_output, &state);
     
     ParseFree(state.parser, free);
     

+ 4 - 1
ncd/NCDConfigTokenizer.c

@@ -62,8 +62,11 @@ static int string_equals (char *str, int str_len, char *needle)
     return (str_len == strlen(needle) && !memcmp(str, needle, str_len));
 }
 
-void NCDConfigTokenizer_Tokenize (char *str, size_t left, NCDConfigTokenizer_output output, void *user)
+void NCDConfigTokenizer_Tokenize (MemRef the_str, NCDConfigTokenizer_output output, void *user)
 {
+    char const *str = the_str.ptr;
+    size_t left = the_str.len;
+    
     size_t line = 1;
     size_t line_char = 1;
     

+ 3 - 1
ncd/NCDConfigTokenizer.h

@@ -32,6 +32,8 @@
 
 #include <stdlib.h>
 
+#include <misc/memref.h>
+
 #define NCD_ERROR -1
 #define NCD_EOF 0
 #define NCD_TOKEN_CURLY_OPEN 1
@@ -61,6 +63,6 @@
 
 typedef int (*NCDConfigTokenizer_output) (void *user, int token, char *value, size_t value_len, size_t line, size_t line_char);
 
-void NCDConfigTokenizer_Tokenize (char *str, size_t str_len, NCDConfigTokenizer_output output, void *user);
+void NCDConfigTokenizer_Tokenize (MemRef str, NCDConfigTokenizer_output output, void *user);
 
 #endif

+ 3 - 3
ncd/NCDValParser.c

@@ -183,9 +183,9 @@ fail:
     return 0;
 }
 
-int NCDValParser_Parse (const char *str, size_t str_len, NCDValMem *mem, NCDValRef *out_value)
+int NCDValParser_Parse (MemRef str, NCDValMem *mem, NCDValRef *out_value)
 {
-    ASSERT(str_len == 0 || str)
+    ASSERT(str.len == 0 || str.ptr)
     ASSERT(mem)
     ASSERT(out_value)
     
@@ -205,7 +205,7 @@ int NCDValParser_Parse (const char *str, size_t str_len, NCDValMem *mem, NCDValR
         goto fail1;
     }
     
-    NCDConfigTokenizer_Tokenize((char *)str, str_len, tokenizer_output, &state);
+    NCDConfigTokenizer_Tokenize(str, tokenizer_output, &state);
     
     ParseFree(state.parser, free);
     

+ 2 - 1
ncd/NCDValParser.h

@@ -33,6 +33,7 @@
 #include <stddef.h>
 
 #include <misc/debug.h>
+#include <misc/memref.h>
 #include <ncd/NCDVal.h>
 
 /**
@@ -45,6 +46,6 @@
  *                  written here
  * @return 1 on success, 0 on failure
  */
-int NCDValParser_Parse (const char *str, size_t str_len, NCDValMem *mem, NCDValRef *out_value) WARN_UNUSED;
+int NCDValParser_Parse (MemRef str, NCDValMem *mem, NCDValRef *out_value) WARN_UNUSED;
 
 #endif

+ 1 - 1
ncd/extra/NCDRequestClient.c

@@ -221,7 +221,7 @@ static void recv_if_handler_send (NCDRequestClient *o, uint8_t *data, int data_l
                     
                     // parse payload
                     NCDValRef payload_value;
-                    if (!NCDValParser_Parse((char *)payload, payload_len, &mem, &payload_value)) {
+                    if (!NCDValParser_Parse(MemRef_Make((char *)payload, payload_len), &mem, &payload_value)) {
                         BLog(BLOG_ERROR, "failed to parse reply payload");
                         NCDValMem_Free(&mem);
                         goto fail;

+ 1 - 1
ncd/extra/address_utils.h

@@ -255,7 +255,7 @@ static int ncd_read_bconnection_addr (NCDValRef val, struct BConnection_addr *ou
             goto fail;
         }
         
-        *out_addr = BConnection_addr_unix(NCDVal_StringData(data_arg), NCDVal_StringLength(data_arg));
+        *out_addr = BConnection_addr_unix(NCDVal_StringMemRef(data_arg));
     }
     else if (NCDVal_StringEquals(protocol_arg, "tcp")) {
         BAddr baddr;

+ 1 - 1
ncd/modules/basic_functions.c

@@ -379,7 +379,7 @@ static void decode_value_eval (NCDCall call)
         goto fail1;
     }
     NCDValRef value;
-    int res = NCDValParser_Parse(NCDVal_StringData(arg), NCDVal_StringLength(arg), NCDCall_ResMem(&call), &value);
+    int res = NCDValParser_Parse(NCDVal_StringMemRef(arg), NCDCall_ResMem(&call), &value);
     if (!res) {
         FunctionLog(&call, BLOG_ERROR, "decode_value: NCDValParser_Parse failed");
         goto fail1;

+ 1 - 1
ncd/modules/from_string.c

@@ -69,7 +69,7 @@ static void func_new (void *vo, NCDModuleInst *i, const struct NCDModuleInst_new
     NCDValMem_Init(&o->mem);
     
     // parse value string
-    if (!NCDValParser_Parse(NCDVal_StringData(str_arg), NCDVal_StringLength(str_arg), &o->mem, &o->val)) {
+    if (!NCDValParser_Parse(NCDVal_StringMemRef(str_arg), &o->mem, &o->val)) {
         ModuleLog(i, BLOG_ERROR, "failed to parse");
         goto fail1;
     }

+ 1 - 1
ncd/modules/log.c

@@ -106,7 +106,7 @@ static void do_log (int level, NCDValRef list, size_t start)
     for (size_t j = start; j < count; j++) {
         NCDValRef string = NCDVal_ListGet(list, j);
         ASSERT(NCDVal_IsString(string))
-        BLog_AppendBytes(NCDVal_StringData(string), NCDVal_StringLength(string));
+        BLog_AppendBytes(NCDVal_StringMemRef(string));
     }
     
     BLog_Finish(BLOG_CHANNEL_ncd_log_msg, level);

+ 1 - 1
ncd/modules/parse.c

@@ -107,7 +107,7 @@ static int parse_number (NCDModuleInst *i, MemRef str, NCDValMem *mem, NCDValRef
 
 static int parse_value (NCDModuleInst *i, MemRef str, NCDValMem *mem, NCDValRef *out)
 {
-    if (!NCDValParser_Parse(str.ptr, str.len, mem, out)) {
+    if (!NCDValParser_Parse(str, mem, out)) {
         ModuleLog(i, BLOG_ERROR, "failed to parse value");
         return 0;
     }

+ 1 - 1
ncd/modules/sys_request_server.c

@@ -382,7 +382,7 @@ static int request_init (struct connection *c, uint32_t request_id, const uint8_
     
     NCDValMem_Init(&r->request_data_mem);
     
-    if (!NCDValParser_Parse((const char *)data, data_len, &r->request_data_mem, &r->request_data)) {
+    if (!NCDValParser_Parse(MemRef_Make((const char *)data, data_len), &r->request_data_mem, &r->request_data)) {
         ModuleLog(o->i, BLOG_ERROR, "NCDValParser_Parse failed");
         goto fail1;
     }

+ 4 - 3
system/BConnectionGeneric.h

@@ -34,6 +34,7 @@
 
 #include <misc/debug.h>
 #include <misc/strdup.h>
+#include <misc/memref.h>
 #include <base/BLog.h>
 #include <system/BConnection.h>
 
@@ -59,12 +60,12 @@ static struct BConnection_addr BConnection_addr_baddr (BAddr baddr)
     return addr;
 }
 
-static struct BConnection_addr BConnection_addr_unix (const char *unix_socket_path, size_t len)
+static struct BConnection_addr BConnection_addr_unix (MemRef unix_socket_path)
 {
     struct BConnection_addr addr;
     addr.type = BCONNECTION_ADDR_TYPE_UNIX;
-    addr.u.unix_socket_path.str = unix_socket_path;
-    addr.u.unix_socket_path.len = len;
+    addr.u.unix_socket_path.str = unix_socket_path.ptr;
+    addr.u.unix_socket_path.len = unix_socket_path.len;
     return addr;
 }