// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.debug.core.sourcemap;
import org.chromium.debug.core.model.VmResourceId;
/**
* A map between "user" and "vm" source positions. "Vm" position applies
* to sources that are actually used inside virtual machine. "User" position
* applies to sources that user works with.
* All line/column numbers are 0-based.
*/
public interface SourcePositionMap {
SourcePosition translatePosition(VmResourceId id, int line, int column,
TranslateDirection direction);
enum TranslateDirection {
VM_TO_USER,
USER_TO_VM;
public TranslateDirection opposite() {
return this == VM_TO_USER ? USER_TO_VM : VM_TO_USER;
}
}
/**
* @return current instance of token
*/
Token getCurrentToken();
/**
* A token that can be kept and used later to check, whether source map has been updated.
* This helps correctly caching mapped positions.
*/
interface Token {
boolean isUpdated();
}
}