Esempio n. 1
0
const Env_var* Environment_get(const Environment* env, const char* name)
{
    assert(env != NULL);
    assert(name != NULL);

    return AAtree_get_exact(env->vars, name);
}
Esempio n. 2
0
const Value* Event_cache_get_value(const Event_cache* cache, const char* event_name)
{
    rassert(cache != NULL);
    rassert(event_name != NULL);

    Event_state* state = AAtree_get_exact(cache->cache, event_name);
    rassert(state != NULL);

    return &state->value;
}
Esempio n. 3
0
void Event_cache_update(Event_cache* cache, const char* event_name, const Value* value)
{
    rassert(cache != NULL);
    rassert(event_name != NULL);
    rassert(value != NULL);

    Event_state* state = AAtree_get_exact(cache->cache, event_name);
    if (state == NULL)
        return;

    Value_copy(&state->value, value);
    return;
}
Esempio n. 4
0
void Connections_print(const Connections* graph, FILE* out)
{
    rassert(graph != NULL);
    rassert(out != NULL);

//    Connections_reset(graph);
    const Device_node* master = AAtree_get_exact(graph->nodes, "");
    rassert(master != NULL);
    Device_node_print(master, out);
    fprintf(out, "\n");

    return;
}
Esempio n. 5
0
int32_t Input_map_get_device_index(const Input_map* im, int32_t input_id)
{
    rassert(im != NULL);
    rassert(input_id >= 0);
    rassert(input_id < im->num_inputs);

    const Entry* key = ENTRY_KEY(input_id);
    const Entry* result = AAtree_get_exact(im->map, key);
    if (result == NULL)
        return -1;

    return result->output;
}
Esempio n. 6
0
bool Channel_cv_state_is_carrying_enabled(
        const Channel_cv_state* state, const char* var_name)
{
    rassert(state != NULL);
    rassert(var_name != NULL);
    rassert(strlen(var_name) < KQT_VAR_NAME_MAX);

    const Entry* key = Entry_init(ENTRY_AUTO, var_name);

    const Entry* entry = AAtree_get_exact(state->tree, key);
    if (entry == NULL)
        return false;

    return entry->carry;
}
Esempio n. 7
0
const Value* Channel_cv_state_get_value(
        const Channel_cv_state* state, const char* var_name)
{
    rassert(state != NULL);
    rassert(var_name != NULL);
    rassert(strlen(var_name) < KQT_VAR_NAME_MAX);

    const Entry* key = Entry_init(ENTRY_AUTO, var_name);

    const Entry* entry = AAtree_get_exact(state->tree, key);
    if ((entry == NULL) || !entry->is_set)
        return NULL;

    return &entry->value;
}
Esempio n. 8
0
bool Event_cache_add_event(Event_cache* cache, char* event_name)
{
    rassert(cache != NULL);
    rassert(event_name != NULL);

    if (AAtree_get_exact(cache->cache, event_name) != NULL)
        return true;

    Event_state* es = new_Event_state(event_name);
    if (es == NULL || !AAtree_ins(cache->cache, es))
    {
        del_Event_state(es);
        return false;
    }

    return true;
}
Esempio n. 9
0
const Param_proc_filter* Au_expressions_get_proc_filter(
        const Au_expressions* ae, const char* name)
{
    rassert(ae != NULL);
    rassert(name != NULL);

    if (strlen(name) >= KQT_VAR_NAME_MAX)
        return NULL;

    Entry* key = ENTRY_AUTO;
    strcpy(key->name, name);

    const Entry* entry = AAtree_get_exact(ae->entries, key);
    if (entry == NULL)
        return NULL;

    return entry->filter;
}
Esempio n. 10
0
bool Channel_cv_state_set_value(
        Channel_cv_state* state, const char* var_name, const Value* value)
{
    rassert(state != NULL);
    rassert(var_name != NULL);
    rassert(strlen(var_name) < KQT_VAR_NAME_MAX);
    rassert(value != NULL);
    rassert(Value_type_is_realtime(value->type));

    const Entry* key = Entry_init(ENTRY_AUTO, var_name);

    Entry* entry = AAtree_get_exact(state->tree, key);
    if (entry == NULL)
        return false;

    Value_copy(&entry->value, value);
    entry->is_set = true;

    return true;
}
Esempio n. 11
0
bool Note_map_add_entry(
        Note_map* map,
        double cents,
        double force,
        Sample_entry* entry)
{
    assert(map != NULL);
    assert(isfinite(cents));
    assert(isfinite(force));
    assert(entry != NULL);

    Random_list* key = &(Random_list){ .force = force, .cents = cents };
    Random_list* list = AAtree_get_exact(map->map, key);
    if (list == NULL)
    {
        Random_list* list = memory_alloc_item(Random_list);
        if (list == NULL || !AAtree_ins(map->map, list))
        {
            memory_free(list);
            return false;
        }
        list->freq = exp2(cents / 1200) * 440;
        list->cents = cents;
        list->force = force;
        list->entry_count = 0;
    }

    if (list->entry_count >= NOTE_MAP_RANDOMS_MAX)
    {
        assert(list->entry_count == NOTE_MAP_RANDOMS_MAX);
        return false;
    }

    list->entries[list->entry_count].ref_freq = list->freq;
    list->entries[list->entry_count].cents = entry->cents;
    list->entries[list->entry_count].vol_scale = entry->vol_scale;
    list->entries[list->entry_count].sample = entry->sample;
    ++list->entry_count;

    return true;
}
Esempio n. 12
0
static bool read_connection(Streader* sr, int32_t index, void* userdata)
{
    rassert(sr != NULL);
    rassert(userdata != NULL);
    ignore(index);

    read_conn_data* rcdata = userdata;

    char src_name[KQT_DEVICE_NODE_NAME_MAX] = "";
    char dest_name[KQT_DEVICE_NODE_NAME_MAX] = "";
    if (!Streader_readf(
                sr,
                "[%s,%s]",
                READF_STR(KQT_DEVICE_NODE_NAME_MAX, src_name),
                READF_STR(KQT_DEVICE_NODE_NAME_MAX, dest_name)))
        return false;

    int src_port = validate_connection_path(
            sr, src_name, rcdata->level, DEVICE_PORT_TYPE_SEND);
    int dest_port = validate_connection_path(
            sr, dest_name, rcdata->level, DEVICE_PORT_TYPE_RECV);
    if (Streader_is_error_set(sr))
        return false;

    if (rcdata->level == CONNECTION_LEVEL_AU)
    {
        if (string_eq(src_name, ""))
            strcpy(src_name, "Iin");
    }

    if (AAtree_get_exact(rcdata->graph->nodes, src_name) == NULL)
    {
        const Device* actual_master = rcdata->master;
        if ((rcdata->level == CONNECTION_LEVEL_AU) &&
                string_eq(src_name, "Iin"))
            actual_master = Audio_unit_get_input_interface((Audio_unit*)rcdata->master);

        Device_node* new_src = new_Device_node(
                src_name, rcdata->au_table, actual_master);

        mem_error_if(new_src == NULL, rcdata->graph, NULL, sr);
        mem_error_if(
                !AAtree_ins(rcdata->graph->nodes, new_src),
                rcdata->graph,
                new_src,
                sr);
    }
    Device_node* src_node = AAtree_get_exact(rcdata->graph->nodes, src_name);

    if (AAtree_get_exact(rcdata->graph->nodes, dest_name) == NULL)
    {
        Device_node* new_dest = new_Device_node(
                dest_name, rcdata->au_table, rcdata->master);

        mem_error_if(new_dest == NULL, rcdata->graph, NULL, sr);
        mem_error_if(
                !AAtree_ins(rcdata->graph->nodes, new_dest),
                rcdata->graph,
                new_dest,
                sr);
    }
    Device_node* dest_node = AAtree_get_exact(rcdata->graph->nodes, dest_name);

    rassert(src_node != NULL);
    rassert(dest_node != NULL);
    mem_error_if(
            !Device_node_connect(dest_node, dest_port, src_node, src_port),
            rcdata->graph,
            NULL,
            sr);

    return true;
}
Esempio n. 13
0
const Device_node* Connections_get_master(const Connections* graph)
{
    rassert(graph != NULL);
    return AAtree_get_exact(graph->nodes, "");
}