P2_error P2_error_init() { P2_error_type = P2_register_type(P2_ERROR_NAME, NULL, NULL, NULL, NULL); registered_errors_ = array__new(30, 2.0); error_dictionary_ = hash_table__new(60, 2.0, 2.0, STRING_DEFAULTS); P2_SUCCESS = NULL; // Bad token syntax INVALID_TOKEN = P2_register_error("INVALID_TOKEN"); INVALID_IDENTIFIER = P2_register_error("INVALID_IDENTIFIER"); INVALID_COMMAND_NAME = P2_register_error("INVALID_COMMAND_NAME"); // Item not found UNKNOWN_COMMAND = P2_register_error("UNKNOWN_COMMAND"); UNKNOWN_SYMBOL = P2_register_error("UNKNOWN_SYMBOL"); UNKNOWN_VARIABLE = P2_register_error("UNKNOWN_VARIABLE"); UNKNOWN_DATASET = P2_register_error("UNKNOWN_DATASET"); // Bad command call BAD_ARGUMENT = P2_register_error("BAD_ARGUMENT"); TOO_FEW_ARGUMENTS = P2_register_error("TOO_FEW_ARGUMENTS"); TOO_MANY_ARGUMENTS = P2_register_error("TOO_MANY_ARGUMENTS"); REDUX_FAILURE = P2_register_error("REDUX_FAILURE"); // Program-level errors DUPLICATE_COMMAND_NAME = P2_register_error("DUPLICATE_COMMAND_NAME"); BAD_REGEX = P2_register_error("BAD_REGEX"); UNEXPECTED_VALUE = P2_register_error("UNEXPECTED_VALUE"); return P2_SUCCESS; }
Map map__new(map__Hash hash, map__Eq eq) { Map map = malloc(sizeof(MapStruct)); map->count = 0; map->buckets = array__new(MIN_BUCKETS, sizeof(void *)); map->buckets->releaser = release_bucket; array__add_zeroed_items(map->buckets, MIN_BUCKETS); map->hash = hash; map->eq = eq; map->key_releaser = NULL; map->value_releaser = NULL; map->pair_alloc = malloc; return map; }