sem-core 0.6.2

Entity-level semantic diff engine. Extracts functions, classes, and methods from 20 languages via tree-sitter and diffs at the entity level.
Documentation
#include "models.hpp"
#include "database.hpp"

Dog createDog(std::string name) {
    Dog dog(name);
    if (!dog.validate()) {
        throw std::invalid_argument("invalid dog");
    }
    Connection* conn = getConnection();
    conn->execute("INSERT INTO dogs VALUES (?)");
    conn->commit();
    return dog;
}

Cat createCat(std::string name) {
    Cat cat(name);
    if (!cat.validate()) {
        throw std::invalid_argument("invalid cat");
    }
    Connection* conn = getConnection();
    conn->execute("INSERT INTO cats VALUES (?)");
    conn->commit();
    return cat;
}

void transferAnimal(void* animal, Shelter* shelter) {
    Transaction txn(getConnection());
    txn.execute("UPDATE animals SET shelter_id = ?");
    shelter->add(animal);
    txn.commit();
}

void* listAnimals() {
    Connection* conn = getConnection();
    return conn->execute("SELECT * FROM animals");
}