tmf: Move timestamps to their own package
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.core / src / org / eclipse / linuxtools / tmf / core / timestamp / ITmfTimestamp.java
1 /*******************************************************************************
2 * Copyright (c) 2012 Ericsson
3 *
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *
9 * Contributors:
10 * Francois Chouinard - Initial API and implementation
11 *******************************************************************************/
12
13 package org.eclipse.linuxtools.tmf.core.timestamp;
14
15 import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
16
17 /**
18 * The fundamental time reference in the TMF.
19 * <p>
20 * It defines a generic timestamp interface in its most basic form:
21 * <ul>
22 * <li>timestamp = [value] * 10**[scale] +/- [precision]
23 * </ul>
24 * Where:
25 * <ul>
26 * <li>[value] is an unstructured integer value
27 * <li>[scale] is the magnitude of the value wrt some application-specific
28 * base unit (e.g. the second)
29 * <li>[precision] indicates the error on the value (useful for comparing
30 * timestamps in different scales). Default: 0.
31 * </ul>
32 *
33 * @author Francois Chouinard
34 * @version 2.0
35 * @since 2.0
36 *
37 * @see ITmfEvent
38 * @see TmfTimeRange
39 */
40 public interface ITmfTimestamp extends Comparable<ITmfTimestamp> {
41
42 // ------------------------------------------------------------------------
43 // Constants
44 // ------------------------------------------------------------------------
45
46 /**
47 * The millisecond scale factor (10e0)
48 * @since 2.0
49 */
50 public static final int SECOND_SCALE = 0;
51
52 /**
53 * The millisecond scale factor (10e-3)
54 * @since 2.0
55 */
56 public static final int MILLISECOND_SCALE = -3;
57
58 /**
59 * The microsecond scale factor (10e-6)
60 * @since 2.0
61 */
62 public static final int MICROSECOND_SCALE = -6;
63
64 /**
65 * The nanosecond scale factor (10e-9)
66 * @since 2.0
67 */
68 public static final int NANOSECOND_SCALE = -9;
69
70 // ------------------------------------------------------------------------
71 // Getters
72 // ------------------------------------------------------------------------
73
74 /**
75 * @return the timestamp value (magnitude)
76 */
77 public long getValue();
78
79 /**
80 * @return the timestamp scale (exponent)
81 */
82 public int getScale();
83
84 /**
85 * @return the timestamp precision (measurement tolerance)
86 */
87 public int getPrecision();
88
89 // ------------------------------------------------------------------------
90 // Operations
91 // ------------------------------------------------------------------------
92
93 /**
94 * Normalize (adjust scale and offset) of the timestamp
95 *
96 * @param offset the offset to apply to the timestamp value (after scaling)
97 * @param scale the new timestamp scale
98 * @return a new 'adjusted' ITmfTimestamp
99 */
100 public ITmfTimestamp normalize(long offset, int scale);
101
102 /**
103 * Compares [this] and [ts] within timestamp precision
104 *
105 * @param ts the other timestamp
106 * @param withinPrecision consider the precision when testing for equality
107 * @return -1, 0 or 1 (less than, equals, greater than)
108 */
109 public int compareTo(ITmfTimestamp ts, boolean withinPrecision);
110
111 /**
112 * Returns the difference between [this] and [ts] as a timestamp
113 *
114 * @param ts the other timestamp
115 * @return the time difference (this - other) as an ITmfTimestamp
116 */
117 public ITmfTimestamp getDelta(ITmfTimestamp ts);
118
119 // ------------------------------------------------------------------------
120 // Comparable
121 // ------------------------------------------------------------------------
122
123 /* (non-Javadoc)
124 * @see java.lang.Comparable#compareTo(java.lang.Object)
125 */
126 @Override
127 int compareTo(ITmfTimestamp ts);
128
129 /**
130 * Format the timestamp as per the format provided
131 *
132 * @param format the timestamp formatter
133 * @return the formatted timestamp
134 * @since 2.0
135 */
136 public String toString(final TmfTimestampFormat format);
137
138 }
This page took 0.032971 seconds and 5 git commands to generate.