]> gitweb.factorcode.org Git - factor.git/blobdiff - vm/utilities.hpp
io.streams.256color: faster by caching styles
[factor.git] / vm / utilities.hpp
index cd84fb4526e1445afea7be1bd2773b621bad9ce0..9e7de0b3b56f974638d6f287481365caca77cf93 100644 (file)
@@ -1,6 +1,13 @@
 namespace factor {
 
-inline static void memset_2(void* dst, u16 pattern, size_t size) {
+// Poor mans range-based for loops.
+#define FACTOR_FOR_EACH(iterable)                               \
+  for (auto iter = (iterable).begin(),    \
+           _end = (iterable).end();                             \
+       iter != _end;                                            \
+       iter++)
+
+inline static void memset_2(void* dst, uint16_t pattern, size_t size) {
 #ifdef __APPLE__
   cell cell_pattern = (pattern | (pattern << 16));
   memset_pattern4(dst, &cell_pattern, size);
@@ -8,8 +15,8 @@ inline static void memset_2(void* dst, u16 pattern, size_t size) {
   if (pattern == 0)
     memset(dst, 0, size);
   else {
-    u16* start = (u16*)dst;
-    u16* end = (u16*)((cell) dst + size);
+    uint16_t* start = (uint16_t*)dst;
+    uint16_t* end = (uint16_t*)((cell)dst + size);
     while (start < end) {
       *start = pattern;
       start++;
@@ -30,7 +37,7 @@ inline static void memset_cell(void* dst, cell pattern, size_t size) {
     memset(dst, 0, size);
   else {
     cell* start = (cell*)dst;
-    cell* end = (cell*)((cell) dst + size);
+    cell* end = (cell*)((cell)dst + size);
     while (start < end) {
       *start = pattern;
       start++;