summaryrefslogtreecommitdiffstats
path: root/verigraph/src/it/polito/verigraph/mcnet/components/Core.java
blob: 37898176b3927e97353712eda20d442c48f36c57 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/*******************************************************************************
 * Copyright (c) 2017 Politecnico di Torino and others.
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Apache License, Version 2.0
 * which accompanies this distribution, and is available at
 * http://www.apache.org/licenses/LICENSE-2.0
 *******************************************************************************/
package it.polito.verigraph.mcnet.components;

import com.microsoft.z3.Context;
import com.microsoft.z3.Solver;

/**Core component for everything that matters
 *
 *
 */
public abstract class Core{

    final int MAX_PORT = 512;

    /**
     * Base class for all objects in the modeling framework
     * @param ctx
     * @param args
     */
    public Core(Context ctx, Object[]... args){ // Object[]... -> The nearest way to implement variable length argument lists
        //in Java, in the most generic way.
        init(ctx,args);
    }
    /**
     * Override _init for any constructor initialization. Avoids having to explicitly call super.__init__ every Time.class
     * @param ctx
     * @param args
     */
    abstract protected void init(Context ctx,Object[]... args);

    /**
     * Add constraints to solver
     * @param solver
     */
    abstract protected void addConstraints(Solver solver);
}