2 * Copyright (C) 2014, United States Government, as represented by the
3 * Administrator of the National Aeronautics and Space Administration.
6 * The Java Pathfinder core (jpf-core) platform is licensed under the
7 * Apache License, Version 2.0 (the "License"); you may not use this file except
8 * in compliance with the License. You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0.
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
22 * (incomplete) model class for java.text.Format
23 * the reason we model this is that we want to cut off all the inner
24 * workings by just delegating to real formatters stored in our
27 public abstract class Format {
29 // <?> how does that work with backtracking? my initial guess is that
30 // we can safely overwrite an index because after backtracking, the
31 // formatter will never be used. It's therefore sufficient if we keep the
32 // nInstances counter in the JPF space
33 // (just a reminder - we can't use the reference value because it might
34 // change -- the ElementInfo invariance sucks!
35 static int nInstances;
36 private int id = nInstances++; // just for peer implementation purposes
38 public String format (Object o) {
39 StringBuffer sb = new StringBuffer();
40 FieldPosition pos = new FieldPosition(0);
41 return format(o, sb, pos).toString();
44 public abstract StringBuffer format (Object o, StringBuffer sb, FieldPosition pos);
46 public abstract Object parseObject (String source, ParsePosition pos);
48 public Object parseObject(String source) throws ParseException {
49 ParsePosition pos = new ParsePosition(0);
50 Object result = parseObject(source, pos);
52 throw new ParseException("Format.parseObject(String) failed",