}
-
-CORD CORD_from_fn(CORD_fn fn, void * client_data, size_t len)
+static CordRep *CORD_from_fn_inner(CORD_fn fn, void * client_data, size_t len)
{
if (len == 0) return(0);
if (len <= SHORT_LIMIT) {
if (result == 0) OUT_OF_MEMORY;
memcpy(result, buf, len);
result[len] = '\0';
- return((CORD) result);
+ return (CordRep *)result;
}
gen_case:
{
result->len = len;
result->fn = fn;
result->client_data = client_data;
- return((CORD) result);
+ return (CordRep *)result;
}
}
+CORD CORD_from_fn(CORD_fn fn, void * client_data, size_t len)
+{
+ return (/* const */ CORD) CORD_from_fn_inner(fn, client_data, len);
+}
+
size_t CORD_len(CORD x)
{
if (x == 0) {
if (sa == 0) OUT_OF_MEMORY;
sa->sa_cord = (CordRep *)x;
sa->sa_index = i;
- result = (CordRep *)CORD_from_fn(f, (void *)sa, n);
+ result = CORD_from_fn_inner(f, (void *)sa, n);
if ((CORD)result != CORD_EMPTY && 0 == result -> function.null)
result -> function.header = SUBSTR_HDR;
return (CORD)result;