chiark / gitweb /
working on compiling out of troglodyte; before relegage maskmap
[chiark-tcl.git] / hbytes / hbytes.c
index b941937..22383df 100644 (file)
@@ -2,57 +2,54 @@
  *
  */
 
-#include <string.h>
-
 #include "hbytes.h"
-#include "tables.h"
 
 #define COMPLEX(hb) ((HBytes_ComplexValue*)hb->begin_complex)
 #define SIMPLE_LEN(hb) ((Byte*)(hb)->end_0 - (Byte*)(hb)->begin_complex)
 
 /* enquirers */
 
-int hbytes_len(const HBytes_Value *hb) {
+int cht_hb_len(const HBytes_Value *hb) {
   if (HBYTES_ISEMPTY(hb)) return 0;
   else if (HBYTES_ISCOMPLEX(hb)) return COMPLEX(hb)->len;
   else return SIMPLE_LEN(hb);
 }
 
-Byte *hbytes_data(const HBytes_Value *hb) {
+Byte *cht_hb_data(const HBytes_Value *hb) {
   if (HBYTES_ISEMPTY(hb)) return 0;
   else if (HBYTES_ISCOMPLEX(hb)) return COMPLEX(hb)->dstart;
   else return hb->begin_complex;
 }
 
-int hbytes_issentinel(const HBytes_Value *hb) {
+int cht_hb_issentinel(const HBytes_Value *hb) {
   return HBYTES_ISSENTINEL(hb);
 }
 
 /* constructors */
 
-void hbytes_empty(HBytes_Value *returns) {
+void cht_hb_empty(HBytes_Value *returns) {
   returns->begin_complex= returns->end_0= 0;
 }
 
-void hbytes_sentinel(HBytes_Value *returns) {
+void cht_hb_sentinel(HBytes_Value *returns) {
   returns->begin_complex= 0;
-  returns->end_0= (void*)&hbytes_type;
+  returns->end_0= (void*)&cht_hbytes_type;
 }
 
-Byte *hbytes_arrayspace(HBytes_Value *returns, int l) {
-  if (!l) { hbytes_empty(returns); return 0; }
+Byte *cht_hb_arrayspace(HBytes_Value *returns, int l) {
+  if (!l) { cht_hb_empty(returns); return 0; }
   returns->begin_complex= TALLOC(l);
   returns->end_0= returns->begin_complex + l;
   return returns->begin_complex;
 }
   
-void hbytes_array(HBytes_Value *returns, const Byte *array, int l) {
-  memcpy(hbytes_arrayspace(returns,l), array, l);
+void cht_hb_array(HBytes_Value *returns, const Byte *array, int l) {
+  memcpy(cht_hb_arrayspace(returns,l), array, l);
 }
 
 /* destructor */
 
-void hbytes_free(const HBytes_Value *frees) {
+void cht_hb_free(const HBytes_Value *frees) {
   if (HBYTES_ISCOMPLEX(frees)) {
     HBytes_ComplexValue *cx= COMPLEX(frees);
     TFREE(cx->dstart - cx->prespace);
@@ -78,7 +75,7 @@ static HBytes_ComplexValue *complex(HBytes_Value *hb) {
   return cx;
 }
 
-Byte *hbytes_prepend(HBytes_Value *hb, int el) {
+Byte *cht_hb_prepend(HBytes_Value *hb, int el) {
   HBytes_ComplexValue *cx;
   int new_prespace;
   Byte *old_block, *new_block, *new_dstart;
@@ -101,7 +98,7 @@ Byte *hbytes_prepend(HBytes_Value *hb, int el) {
   return cx->dstart;
 }
 
-Byte *hbytes_append(HBytes_Value *hb, int el) {
+Byte *cht_hb_append(HBytes_Value *hb, int el) {
   HBytes_ComplexValue *cx;
   int new_len, new_avail;
   Byte *newpart, *new_block, *old_block;
@@ -126,14 +123,14 @@ prechop(HBytes_Value *hb, int cl, const Byte **rv) {
   HBytes_ComplexValue *cx;
 
   if (cl<0) { *rv=0; return 0; }
-  if (cl==0) { *rv= (const void*)&hbytes_type; return 0; }
+  if (cl==0) { *rv= (const void*)&cht_hbytes_type; return 0; }
   
   cx= complex(hb);
   if (cl > cx->len) { *rv=0; return 0; }
   return cx;
 }
 
-const Byte *hbytes_unprepend(HBytes_Value *hb, int pl) {
+const Byte *cht_hb_unprepend(HBytes_Value *hb, int pl) {
   const Byte *chopped;
   HBytes_ComplexValue *cx= prechop(hb,pl,&chopped);
   if (!cx) return chopped;
@@ -146,7 +143,7 @@ const Byte *hbytes_unprepend(HBytes_Value *hb, int pl) {
   return chopped;
 }
 
-const Byte *hbytes_unappend(HBytes_Value *hb, int sl) {
+const Byte *cht_hb_unappend(HBytes_Value *hb, int sl) {
   const Byte *chopped;
   HBytes_ComplexValue *cx= prechop(hb,sl,&chopped);
   if (!cx) return chopped;
@@ -154,3 +151,7 @@ const Byte *hbytes_unappend(HBytes_Value *hb, int sl) {
   cx->len -= sl;
   return cx->dstart + cx->len;
 }
+
+void memxor(Byte *dest, const Byte *src, int l) {
+  while (l--) *dest++ ^= *src++;
+}