コード例 #1
0
ファイル: string.c プロジェクト: matz/streem
strm_string
strm_str_intern_str(strm_string str)
{
  if (strm_str_intern_p(str)) {
    return str;
  }
  if (!strm_event_loop_started) {
    return str_intern(strm_str_ptr(str), strm_str_len(str), 0);
  }
  pthread_mutex_lock(&sym_mutex);
  str = str_intern(strm_str_ptr(str), strm_str_len(str), 0);
  pthread_mutex_unlock(&sym_mutex);

  return str;
}
コード例 #2
0
ファイル: string.c プロジェクト: msGenDev/streem
strm_string*
strm_str_intern(const char *p, size_t len)
{
  strm_string *str;

  assert(p!=NULL);
  if (!strm_event_loop_started) {
    return str_intern(p, len);
  }
  pthread_mutex_lock(&sym_mutex);
  str = str_intern(p, len);
  pthread_mutex_unlock(&sym_mutex);

  return str;
}
コード例 #3
0
ファイル: libstring.c プロジェクト: RaphaelBaskerville/latino
lat_object* lat_str_new(const char* p, size_t len)
{
  if (p && (len < MAX_STR_INTERN)) {
    return str_intern(p, len);
  }
  return str_new(p, len);
}
コード例 #4
0
ファイル: str.c プロジェクト: claybridges/order-pp
str_type uint_to_str(unsigned int n) {
  const int result_size = (sizeof(n)*CHAR_BIT + 2)/3 + 1;
  char* result = checked_malloc(result_size);
  int required_size = snprintf(result, result_size, "%u", n);
  // We do not expect errors, because the result buffer can hold the
  // base 10 representation of any unsigned integer.
  assert(0 <= required_size && required_size <= result_size);
  return str_intern(result);
}
コード例 #5
0
ファイル: string.c プロジェクト: msGenDev/streem
strm_string*
strm_str_new(const char *p, size_t len)
{
  if (!strm_event_loop_started) {
    /* single thread mode */
    if (p && (len < STRM_STR_INTERN_LIMIT || readonly_data_p(p))) {
      return str_intern(p, len);
    }
  }
  return str_new(p, len);
}
コード例 #6
0
ファイル: str.c プロジェクト: claybridges/order-pp
str_type str_substr(str_type first, str_type beyond) {
  assert(first);
  assert(beyond);

  const ptrdiff_t len = beyond - first;

  char* result = checked_malloc(len + 1);
  memcpy(result, first, len);
  result[len] = '\0';

  return str_intern(result);
}
コード例 #7
0
ファイル: db_io.c プロジェクト: zelch/LambdaMOO
const char *
dbio_read_string_intern(void)
{
    const char *s, *r;

    s = dbio_read_string();
    r = str_intern(s);

    /* puts(r); */

    return r;
}
コード例 #8
0
ファイル: str.c プロジェクト: claybridges/order-pp
str_type str_cat(str_type str0, ...) {
  assert(str0);

  ptrdiff_t tot_len = 0;
  {
    va_list args;
    va_start(args, str0);

    str_type stri = str0;
    do {
      tot_len += strlen(stri);
      stri = va_arg(args, str_type);
    } while (str_end != stri);

    va_end(args);
  }

  char* const result = checked_malloc(tot_len + 1);
  {
    va_list args;
    va_start(args, str0);

    char* dst = result;
    str_type stri = str0;
    do {
      ptrdiff_t len = strlen(stri);
      memcpy(dst, stri, len);
      dst += len;
      stri = va_arg(args, str_type);
    } while (str_end != stri);

    dst[0] = '\0';

    va_end(args);
  }
  return str_intern(result);
}
コード例 #9
0
ファイル: string.c プロジェクト: matz/streem
strm_string
strm_str_intern_static(const char* p, strm_int len)
{
  return str_intern(p, len, 1);
}