Ejemplo n.º 1
0
Array Array__create(
  Unsigned initial_size)
{
    // This routine will create and return a new {Array} object that
    // can contain at least {initial_size}.

    // Make sure we allocate at least 1 element:
    if (initial_size == 0) {
	// Minimum {initial_size} is 1:
	initial_size = 1;
    }

    // Allocate the {Array} elements:
    Element empty = (Element)0;
    Elements elements =
      (Elements)Memory__allocate(sizeof(empty) * initial_size);
    
    // Zero out {elements}:
    Unsigned index = 0;
    for (; index < initial_size; index++) {
	elements[index] = empty;
    }

    // Create {array} and fill it in:
    Array array = new(Array);
    array->available = initial_size;
    array->size = 0;
    array->elements = elements;

    return array;
}
Ejemplo n.º 2
0
String String__create(
  Unsigned size)
{
    // This routine will create a string that can contain {size} characters:

    // Allocate the string:
    String string = (String)Memory__allocate(size + 1);

    // Terminate the string:
    string[size] = '\0';

    return string;
}
Ejemplo n.º 3
0
String String__format(String format, ...) {
    // Set up *variadic_arguments to start after *format*:
    va_list variadic_arguments;
    va_start(variadic_arguments, format);

    // Compute *formatted_size*:
    char buffer[2];
    Unsigned formatted_size = vsnprintf(buffer, 0, format, variadic_arguments);
    // Allocated *formatted*:
    String formatted = (String)Memory__allocate(formatted_size + 1);

    // Format *formatted*:
    (void)vsnprintf(formatted, formatted_size + 1, format, variadic_arguments);

    return formatted;
}
Ejemplo n.º 4
0
String String__allocate(Unsigned size) {
    return (String)Memory__allocate(size + 1);
}
Ejemplo n.º 5
0
String String__allocate(unsigned int size) {
    return (String)Memory__allocate(size + 1, "String__allocate");
}