Esempio n. 1
0
bool FSMDirector_TransferInputs(struct FSMDirector* director, struct IOPort* port) {
    if (!port->isInput(port) /*|| !port->isOpaque(port)*/) {
        fprintf(stderr, "Attempted to transferInputs on a port is not an opaque input port.");
        exit(-1);
    }
    bool wasTransferred = false;
    PblMap* tokensIn = pblMapNewHashMap();
    for (int i = 0; i < port->getWidth(port); i++) {
        if (i < port->getWidthInside(port)) {
            if (port->hasToken(port, i)) {
                Token* t = port->get(port, i);
                port->sendInside(port, i, t);
                pblMapAdd(tokensIn, &port, sizeof(struct IOPort*), t, sizeof(Token));
                wasTransferred = true;
            }
        } else {
            if (port->hasToken(port, i)) {
                port->get(port, i);
            }
        }
    }
    if (wasTransferred) {
        director->transferModalInputs(tokensIn);
    }
    pblMapFree(tokensIn);
    return wasTransferred;
}
Esempio n. 2
0
bool FSMDirector_DirectorTransferModalOutputs1(struct FSMDirector* director, struct IOPort* port) {
    bool result = false;
    if (!port->isOutput(port) /*|| !port->isOpaque(port)*/) {
        fprintf(stderr, "Attempted to transferOutputs on a port that is not an opaque input port.");
        exit(-1);
    }

    PblMap* tokensOut = pblMapNewHashMap();
    for (int i = 0; i < port->getWidthInside(port); i++) {
        if (port->hasTokenInside(port, i)) {
            Token* t = port->getInside(port, i);
            port->sendLocalInside(port, i, t);
            pblMapAdd(tokensOut, &port, sizeof(struct IOPort*), t, sizeof(Token));
            result = true;
        }
    }
    if (result) {
        director->transferModalOutputs(tokensOut);
    }
    pblMapFree(tokensOut);
    return result;
}
Esempio n. 3
0
/*
 * Test frame for the map library
 *
 * this test frame calls the map library,
 * it does not have any parameters, it is meant for
 * debugging the map library
 */
int pblMap_TestFrame( int argc, char * argv[ ] )
{
    PblMap * map;
    int rc;

    char * data;

    map = pblMapNewTreeMap();
    fprintf( stdout, "pblMapNewTreeMap() map = %p\n", map );

    rc = pblMapIsEmpty( map );
    fprintf( stdout, "pblMapIsEmpty( map ) rc = %d\n", rc );

    rc = pblMapAddStrStr( map, "123", "123_1" );
    fprintf( stdout, "pblMapAddStrStr( map, 123, 123_1 ) rc = %d\n", rc );

    rc = pblMapContainsKeyStr( map, "123" );
    fprintf( stdout, "pblMapContainsKeyStr( map, 123 ) rc = %d\n", rc );

    rc = pblMapAddStrStr( map, "123", "123_2" );
    fprintf( stdout, "pblMapAddStrStr( map, 123, 123_2 ) rc = %d\n", rc );

    rc = pblMapContainsKeyStr( map, "123" );
    fprintf( stdout, "pblMapContainsKeyStr( map, 123 ) rc = %d\n", rc );

    rc = pblMapAddStrStr( map, "124", "124" );
    fprintf( stdout, "pblMapAddStrStr( map, 124, 124 ) rc = %d\n", rc );

    rc = pblMapContainsKeyStr( map, "124" );
    fprintf( stdout, "pblMapContainsKeyStr( map, 124 ) rc = %d\n", rc );

    rc = pblMapContainsKeyStr( map, "not there" );
    fprintf( stdout, "pblMapContainsKeyStr( map, not there ) rc = %d\n", rc );

    rc = pblMapContainsValueStr( map, "124" );
    fprintf( stdout, "pblMapContainsValueStr( map, 124 ) rc = %d\n", rc );

    rc = pblMapContainsValueStr( map, "not there" );
    fprintf( stdout, "pblMapContainsValueStr( map, not there ) rc = %d\n", rc );

    data = (char*)pblMapGetStr( map, "123" );
    fprintf( stdout, "pblMapGetStr( map, 123 ) data = %s\n",
             data );

    data = (char*)pblMapGetStr( map, "124" );
    fprintf( stdout, "pblMapGetStr( map, 124 ) data = %s\n",
    		data );

    data = (char*)pblMapGetStr( map, "not there" );
    fprintf( stdout,
             "pblMapGetStr( map, not there ) data = %p\n",
             data );

    data = (char*)pblMapPutStrStr( map, "123", "123_3" );
    fprintf(
             stdout,
             "pblMapPutStrStr( map, 123, 123_3 ) data = %s\n",
             data );
    PBL_FREE(data);

    data = (char*)pblMapGetStr( map, "123" );
    fprintf( stdout, "pblMapGetStr( map, 123 ) data = %s\n",
    		data );

    data = (char*)pblMapPutStrStr( map, "125", "125" );
    fprintf( stdout,
             "pblMapPutStrStr( map, 125, 125 ) data = %p\n",
             data );
    PBL_FREE(data);

    data = (char*)pblMapRemoveStr( map, "125" );
    fprintf( stdout,
             "pblMapRemoveStr( map, 125 ) data = %s\n",
             data );
	PBL_FREE(data);

    data = (char*)pblMapRemoveStr( map, "not there" );
    fprintf( stdout,
             "pblMapRemoveStr( map, not there ) data = %p\n",
             data );

    rc = pblMapSize( map );
    fprintf( stdout, "pblMapSize( map ) rc = %d\n", rc );

    rc = pblMapIsEmpty( map );
    fprintf( stdout, "pblMapIsEmpty( map ) rc = %d\n", rc );

    pblMapFree( map );
    fprintf( stdout, "pblMapFree( map ) \n" );

    return rc;
}