###############################################################################
 # Copyright (c) 2005 The Regents of the University of California. 
 # This material was produced under U.S. Government contract W-7405-ENG-36 
 # for Los Alamos National Laboratory, which is operated by the University 
 # of California for the U.S. Department of Energy. The U.S. Government has 
 # rights to use, reproduce, and distribute this software. NEITHER THE 
 # GOVERNMENT NOR THE UNIVERSITY MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR 
 # ASSUMES ANY LIABILITY FOR THE USE OF THIS SOFTWARE. If software is modified 
 # to produce derivative works, such modified software should be clearly marked, 
 # so as not to confuse it with the version available from LANL.
 # 
 # Additionally, this program and the accompanying materials 
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
 # http://www.eclipse.org/legal/epl-v10.html
 # 
 # LA-CC 04-115
 ###############################################################################
##
 # @author Clement
 #
 ##

PBreakpoint.1=\ [ignore count: {0}]
PBreakpoint.2=\ if {0}

# The marker message of a line breakpoint. 
# Format: Line breakpoint: <file name>[line: <line number>] <condition>
PLineBreakpoint=Line breakpoint:{0}[line: {1}] {2}

PFunctionBreakpoint=Function breakpoint:{0}[function: {1}] {2}

PAddressBreakpoint=Address breakpoint:{0}[address: {1}] {2}

# The marker message of a write watchpoint. 
# Format: Write watchpoint: <file name> at <expression> <condition>
PWatchpoint.0=Write watchpoint{0}at{1}{2}

# The marker message of a read watchpoint. 
# Format: Read watchpoint: <file name> at <expression> <condition>
PWatchpoint.1=Read watchpoint{0}at{1}{2}

# The marker message of an access watchpoint. 
# Format: Access watchpoint: <file name> at <expression> <condition>
PWatchpoint.2=Access watchpoint{0}at{1}{2}

# The marker message of a watchpoint. 
# Format: Watchpoint: <file name> at <expression> <condition>
PWatchpoint.3==Watchpoint{0}at{1}{2}
