<commit_before>typedef struct {
	unsafe$Pointer arr;
	uintptr len;
	uintptr cap;
} slice;


#define SLICEL(slx, typ, lowx) ({ \
	slice s = slx;                \
	uintptr l = lowx;             \
	s.arr = ((typ)s.arr) + l;     \
	s.len -= l;                   \
	s.cap -= l;                   \
	s;                            \
})

#define SLICELC(slx, typ, lowx) ({ \
	slice s = slx;                 \
	uintptr l = lowx;              \
	if (l > s.len) panicIndex();   \
	s.arr = ((typ)s.arr) + l;      \
	s.len -= l;                    \
	s.cap -= l;                    \
	s;                             \
})

#define SLICELH(slx, typ, lowx, highx) ({ \
	slice s = slx;                        \
	uintptr l = lowx;                     \
	s.arr = ((typ)s.arr) + l;             \
	s.len = (highx) - l;                  \
	s.cap -= l;                           \
	s;                                    \
})

#define SLICELHC(slx, typ, lowx, highx) ({ \
	slice s = slx;                         \
	uintptr l = lowx;                      \
	uintptr h = highx;                     \
	if (l > h || h > s.cap) panicIndex();  \
	s.arr = ((typ)s.arr) + l;              \
	s.len = h - l;                         \
	s.cap -= l;                            \
	s;                                     \
})

#define SLICELHM(slx, typ, lowx, highx, maxx) ({            \
	uintptr l = lowx;                                       \
	(slice){((typ)(slx).arr) + l, (highx) - l, (maxx) - l}; \
})

#define SLICELHMC(slx, typ, lowx, highx, maxx) ({  \
	slice s = slx;                                 \
	uintptr l = lowx;                              \
	uintptr h = highx;                             \
	uintptr m = maxx;                              \
	if (l > h || h > m || m > s.cap) panicIndex(); \
	s.arr = ((typ)s.arr) + l;                      \
	s.len = h - l;                                 \
	s.cap = m - l;                                 \
	s;                                             \
})

#define SLICEH(slx, highx) ({ \
	slice s = slx;            \
	s.len = highx;            \
	s;                        \
})

#define SLICEHC(slx, highx) ({   \
	slice s = slx;               \
	uintptr h = highx            \
	if (h > s.cap) panicIndex(); \
	s.len = h;                   \
	s;                           \
})

// #define SLICEM(slx, maxx) Go 1.2 doesn't allow [::max].
	
#define SLICEHM(slx, highx, maxx) ((slice){(slx).arr, highx, maxx})             

#define SLICEHMC(slx, highx, maxx) ({     \
	slice s = slx;                        \
	uintptr h = highx;                    \
	uintptr m = maxx;                     \
	if (h > m || m > s.cap) panicIndex(); \
	s.len = h;                            \
	s.cap = m;                            \
	s;                                    \
})

#define _ALEN(arx) (sizeof(arx) / sizeof((arx).arr[0]))
<commit_msg>gotoc: SLICEHC fixed<commit_after>typedef struct {
	unsafe$Pointer arr;
	uintptr len;
	uintptr cap;
} slice;


#define SLICEL(slx, typ, lowx) ({ \
	slice s = slx;                \
	uintptr l = lowx;             \
	s.arr = ((typ)s.arr) + l;     \
	s.len -= l;                   \
	s.cap -= l;                   \
	s;                            \
})

#define SLICELC(slx, typ, lowx) ({ \
	slice s = slx;                 \
	uintptr l = lowx;              \
	if (l > s.len) panicIndex();   \
	s.arr = ((typ)s.arr) + l;      \
	s.len -= l;                    \
	s.cap -= l;                    \
	s;                             \
})

#define SLICELH(slx, typ, lowx, highx) ({ \
	slice s = slx;                        \
	uintptr l = lowx;                     \
	s.arr = ((typ)s.arr) + l;             \
	s.len = (highx) - l;                  \
	s.cap -= l;                           \
	s;                                    \
})

#define SLICELHC(slx, typ, lowx, highx) ({ \
	slice s = slx;                         \
	uintptr l = lowx;                      \
	uintptr h = highx;                     \
	if (l > h || h > s.cap) panicIndex();  \
	s.arr = ((typ)s.arr) + l;              \
	s.len = h - l;                         \
	s.cap -= l;                            \
	s;                                     \
})

#define SLICELHM(slx, typ, lowx, highx, maxx) ({            \
	uintptr l = lowx;                                       \
	(slice){((typ)(slx).arr) + l, (highx) - l, (maxx) - l}; \
})

#define SLICELHMC(slx, typ, lowx, highx, maxx) ({  \
	slice s = slx;                                 \
	uintptr l = lowx;                              \
	uintptr h = highx;                             \
	uintptr m = maxx;                              \
	if (l > h || h > m || m > s.cap) panicIndex(); \
	s.arr = ((typ)s.arr) + l;                      \
	s.len = h - l;                                 \
	s.cap = m - l;                                 \
	s;                                             \
})

#define SLICEH(slx, highx) ({ \
	slice s = slx;            \
	s.len = highx;            \
	s;                        \
})

#define SLICEHC(slx, highx) ({   \
	slice s = slx;               \
	uintptr h = highx;           \
	if (h > s.cap) panicIndex(); \
	s.len = h;                   \
	s;                           \
})

// #define SLICEM(slx, maxx) Go 1.2 doesn't allow [::max].
	
#define SLICEHM(slx, highx, maxx) ((slice){(slx).arr, highx, maxx})             

#define SLICEHMC(slx, highx, maxx) ({     \
	slice s = slx;                        \
	uintptr h = highx;                    \
	uintptr m = maxx;                     \
	if (h > m || m > s.cap) panicIndex(); \
	s.len = h;                            \
	s.cap = m;                            \
	s;                                    \
})

#define _ALEN(arx) (sizeof(arx) / sizeof((arx).arr[0]))

{'fraction_non_alphanumeric': 0.14593930889317663, 'fraction_numerical': 0.0010524469391334855, 'mean_word_length': 0.7566235366605052, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 21, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 16, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1332091', 'n_tokens_mistral': 1996, 'n_tokens_neox': 1933, 'n_words': 436}