// Path: src/main/java/tr/com/serkanozal/mysafe/impl/allocpath/AllocationPath.java
// public class AllocationPath {
// 
//     private static final int MAX_ALLOCATION_PATH_DEPTH_LIMIT = 4;
//     private static final int DEFAULT_MAX_ALLOCATION_PATH_DEPTH = MAX_ALLOCATION_PATH_DEPTH_LIMIT;
//     public static final int MAX_ALLOCATION_PATH_DEPTH =
//             Math.min(MAX_ALLOCATION_PATH_DEPTH_LIMIT,
//                      Integer.getInteger("mysafe.maxAllocationPathDepth", DEFAULT_MAX_ALLOCATION_PATH_DEPTH));
// 
//     public final long key;
//     public final String[] callPoints;
// 
//     public AllocationPath(long key, String[] callPoints) {
//         this.key = key;
//         this.callPoints = callPoints;
//     }
// 
// }
// 
// Path: src/main/java/tr/com/serkanozal/mysafe/impl/allocpath/storage/AllocationPathStorage.java
// public interface AllocationPathStorage {
// 
//     long getAllocationPathKey(long address);
//     
//     void connectAddressWithAllocationPath(long address, long allocationPathKey);
//     
//     void disconnectAddressFromAllocationPath(long address);
//     
//     boolean isEmpty();
//     
// }


import tr.com.serkanozal.mysafe.impl.allocpath.AllocationPath;
import tr.com.serkanozal.mysafe.impl.allocpath.storage.AllocationPathStorage;
package tr.com.serkanozal.mysafe.impl.allocpath.manager;


/**
 * @author serkan
 */
public interface AllocationPathManager {

    void saveAllocationPathOnAllocation(AllocationPathStorage allocationPathStorage, long address, int skipFrameCount);

// Path: src/main/java/tr/com/serkanozal/mysafe/impl/allocpath/AllocationPath.java
// public class AllocationPath {
// 
//     private static final int MAX_ALLOCATION_PATH_DEPTH_LIMIT = 4;
//     private static final int DEFAULT_MAX_ALLOCATION_PATH_DEPTH = MAX_ALLOCATION_PATH_DEPTH_LIMIT;
//     public static final int MAX_ALLOCATION_PATH_DEPTH =
//             Math.min(MAX_ALLOCATION_PATH_DEPTH_LIMIT,
//                      Integer.getInteger("mysafe.maxAllocationPathDepth", DEFAULT_MAX_ALLOCATION_PATH_DEPTH));
// 
//     public final long key;
//     public final String[] callPoints;
// 
//     public AllocationPath(long key, String[] callPoints) {
//         this.key = key;
//         this.callPoints = callPoints;
//     }
// 
// }
// 
// Path: src/main/java/tr/com/serkanozal/mysafe/impl/allocpath/storage/AllocationPathStorage.java
// public interface AllocationPathStorage {
// 
//     long getAllocationPathKey(long address);
//     
//     void connectAddressWithAllocationPath(long address, long allocationPathKey);
//     
//     void disconnectAddressFromAllocationPath(long address);
//     
//     boolean isEmpty();
//     
// }


// Path: src/main/java/tr/com/serkanozal/mysafe/impl/allocpath/manager/AllocationPathManager.java
import tr.com.serkanozal.mysafe.impl.allocpath.AllocationPath;
import tr.com.serkanozal.mysafe.impl.allocpath.storage.AllocationPathStorage;

package tr.com.serkanozal.mysafe.impl.allocpath.manager;


/**
 * @author serkan
 */
public interface AllocationPathManager {

    void saveAllocationPathOnAllocation(AllocationPathStorage allocationPathStorage, long address, int skipFrameCount);

    void deleteAllocationPathOnFree(AllocationPathStorage allocationPathStorage, long address);