void MemoryPool::clear() {
    if (!delayed.empty()) {
        MemoryPoolStatus status;
        restore(status);
        checkAssert(delayed.empty());
    }
}
void* MemoryPool::alloc(size_t size, char alignOn, MemoryPoolItem** poolPtr) {
    MemoryPoolItem* i = new (malloc(sizeof(MemoryPoolItem))) MemoryPoolItem();
    checkAssert(i);
    i->func = free;
    i->data = malloc(size);
    delayed.push_back(i);
    if (poolPtr)
        *poolPtr = i;
    return i->data;
}
int MemoryPool::vprintf(char** strPtr, size_t max, const char* format, va_list ap) {
    char* str = (char*)alloc(max);
    checkAssert(str);
    int size = vsnprintf(str, max, format, ap);
    if (size >= ssize_t(max)) {
        str[max-1] = '\0';
    }
    if (strPtr != NULL)
        *strPtr = str;
    return size;
}
示例#4
0
    void check(const char code[], const char *filename = "test.cpp") {
        // Clear the error buffer..
        errout.str("");

        // Tokenize..
        Tokenizer tokenizer(&settings, this);
        std::istringstream istr(code);
        tokenizer.tokenize(istr, filename);

        // Check..
        CheckAssert checkAssert(&tokenizer, &settings, this);
        checkAssert.runSimplifiedChecks(&tokenizer, &settings, this);
    }
void MemoryPool::restore(MemoryPoolStatus status) {
    Queue<MemoryPoolItem*> toBeFreed;
    // pass 1, execute delayed items
    while (!delayed.empty() && delayed.back() != status.delayed) {
        MemoryPoolItem* c = delayed.pop();
        if (c->func != NULL)
            (c->func)(c->data);
        toBeFreed.push_back(c);
    }
    checkAssert(!delayed.empty() || status.delayed == nullptr);
    // pass 2, free allocated memory
    while (MemoryPoolItem* c = toBeFreed.pop_front())
        free(c);
}
示例#6
0
int main(int argc, char *argv[]){
    int numPlayers = 2;
    int cards[] = {smithy,adventurer,gardens,embargo,cutpurse,mine,
                          ambassador,outpost,baron,tribute};
    struct gameState game;
    struct gameState *state = &game;

    initializeGame(numPlayers, cards, 2468, state);
    int smithyResult = cardEffect(smithy, NULL, NULL, NULL, state, NULL, NULL);
    Assert((smithyResult == 0), "SMITHY CARD.");

    checkAssert();

    return 0;
}
示例#7
0
    void check(
        const char code[],
        const char *filename = NULL) {
        // Clear the error buffer..
        errout.str("");

        Settings settings;
        settings.addEnabled("style");
        settings.addEnabled("warning");
        settings.addEnabled("portability");
        settings.addEnabled("performance");

        // Tokenize..
        Tokenizer tokenizer(&settings, this);
        std::istringstream istr(code);
        tokenizer.tokenize(istr, filename ? filename : "test.cpp");

        // Check..
        CheckAssert checkAssert(&tokenizer, &settings, this);
        checkAssert.runSimplifiedChecks(&tokenizer, &settings, this);
    }