All Downloads are FREE. Search and download functionalities are using the official Maven repository.

z3-z3-4.13.0.src.ast.sls.sls_powers.h Maven / Gradle / Ivy

The newest version!
/*++
Copyright (c) 2012 Microsoft Corporation

Module Name:

    sls_powers.h

Abstract:

    Power-of-2 module for SLS

Author:

    Christoph (cwinter) 2012-02-29

Notes:

--*/

#pragma once

#include "util/mpz.h"
#include "util/map.h"

class powers : public u_map {
    unsynch_mpz_manager & m;
public:
    powers(unsynch_mpz_manager & m) : m(m) {}
    ~powers() {
        for (iterator it = begin(); it != end(); it++) {
            m.del(*it->m_value);
            dealloc(it->m_value);
        }
    }

    const mpz & operator()(unsigned n) {
        u_map::iterator it = find_iterator(n);
        if (it != end())
            return *it->m_value;
        else {
            mpz * new_obj = alloc(mpz);                        
            m.mul2k(m.mk_z(1), n, *new_obj);
            insert(n, new_obj);
            return *new_obj;
        }
    }
};  





© 2015 - 2024 Weber Informatics LLC | Privacy Policy