typestar

Handles opacos en C

El header declara un tipo incompleto, así que quien llama no ve los campos.

#include <stdlib.h>

typedef struct Counter Counter;

struct Counter {
    long value;
    long limit;
};

Counter *counter_new(long limit) {
    Counter *c = malloc(sizeof *c);
    if (c != NULL) {
        c->value = 0;
        c->limit = limit;
    }
    return c;
}

int counter_bump(Counter *c) {
    if (c->value >= c->limit) {
        return 0;
    }
    c->value++;
    return 1;
}

void counter_free(Counter *c) {
    free(c);
}

Cómo funciona

  1. Un struct con declaración adelantada es un tipo opaco.
  2. Solo el archivo de implementación tiene la definición.
  3. Toda operación pasa por funciones, así la disposición queda privada.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
29
Caracteres a escribir
368
Tokens
116
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 66 segundos.

Escribe este fragmento

Paso 1 de 3 en Encapsulación; paso 5 de 11 en APIs, errores y pruebas.

← Anterior Siguiente →