PrimitiveFieldType.java
Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 2011 Google Inc.
00003  * 
00004  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
00005  * use this file except in compliance with the License. You may obtain a copy of
00006  * the License at
00007  * 
00008  * http://www.apache.org/licenses/LICENSE-2.0
00009  * 
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
00012  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
00013  * License for the specific language governing permissions and limitations under
00014  * the License.
00015  */
00016 
00017 package org.ros.internal.message.field;
00018 
00019 import com.google.common.base.Preconditions;
00020 import com.google.common.collect.ImmutableSet;
00021 
00022 import org.jboss.netty.buffer.ChannelBuffer;
00023 import org.ros.message.Duration;
00024 import org.ros.message.Time;
00025 
00026 import java.nio.ByteBuffer;
00027 import java.nio.charset.Charset;
00028 
00032 public enum PrimitiveFieldType implements FieldType {
00033 
00034   BOOL {
00035     @SuppressWarnings("unchecked")
00036     @Override
00037     public Boolean getDefaultValue() {
00038       return Boolean.FALSE;
00039     }
00040 
00041     @Override
00042     public BooleanArrayField newVariableList(String name, int size) {
00043       return BooleanArrayField.newVariable(name, size);
00044     }
00045 
00046     @Override
00047     public int getSerializedSize() {
00048       return 1;
00049     }
00050 
00051     @Override
00052     public <T> void serialize(T value, ChannelBuffer buffer) {
00053       Preconditions.checkArgument(value instanceof Boolean);
00054       buffer.writeByte((byte) ((Boolean) value ? 1 : 0));
00055     }
00056 
00057     @SuppressWarnings("unchecked")
00058     @Override
00059     public Boolean deserialize(ChannelBuffer buffer) {
00060       return buffer.readByte() == 1;
00061     }
00062 
00063     @SuppressWarnings("unchecked")
00064     @Override
00065     public Boolean parseFromString(String value) {
00066       return value.equals("1");
00067     }
00068 
00069     @Override
00070     public String getJavaTypeName() {
00071       return "boolean";
00072     }
00073   },
00074   INT8 {
00075     @SuppressWarnings("unchecked")
00076     @Override
00077     public Byte getDefaultValue() {
00078       return Byte.valueOf((byte) 0);
00079     }
00080 
00081     @Override
00082     public Field newVariableList(String name, int size) {
00083       return ChannelBufferField.newVariable(this, name, size);
00084     }
00085 
00086     @Override
00087     public int getSerializedSize() {
00088       return 1;
00089     }
00090 
00091     @Override
00092     public <T> void serialize(T value, ChannelBuffer buffer) {
00093       Preconditions.checkArgument(value instanceof Byte);
00094       buffer.writeByte((Byte) value);
00095     }
00096 
00097     @SuppressWarnings("unchecked")
00098     @Override
00099     public Byte deserialize(ChannelBuffer buffer) {
00100       return buffer.readByte();
00101     }
00102 
00103     @SuppressWarnings("unchecked")
00104     @Override
00105     public Byte parseFromString(String value) {
00106       return Byte.parseByte(value);
00107     }
00108 
00109     @Override
00110     public String getJavaTypeName() {
00111       return "byte";
00112     }
00113   },
00117   BYTE {
00118     @SuppressWarnings("unchecked")
00119     @Override
00120     public Byte getDefaultValue() {
00121       return INT8.getDefaultValue();
00122     }
00123 
00124     @Override
00125     public Field newVariableList(String name, int size) {
00126       return ChannelBufferField.newVariable(this, name, size);
00127     }
00128 
00129     @Override
00130     public int getSerializedSize() {
00131       return INT8.getSerializedSize();
00132     }
00133 
00134     @Override
00135     public <T> void serialize(T value, ChannelBuffer buffer) {
00136       INT8.serialize(value, buffer);
00137     }
00138 
00139     @SuppressWarnings("unchecked")
00140     @Override
00141     public Byte deserialize(ChannelBuffer buffer) {
00142       return INT8.deserialize(buffer);
00143     }
00144 
00145     @SuppressWarnings("unchecked")
00146     @Override
00147     public Byte parseFromString(String value) {
00148       return INT8.parseFromString(value);
00149     }
00150 
00151     @Override
00152     public String getJavaTypeName() {
00153       return INT8.getJavaTypeName();
00154     }
00155   },
00156   UINT8 {
00157     @SuppressWarnings("unchecked")
00158     @Override
00159     public Byte getDefaultValue() {
00160       return INT8.getDefaultValue();
00161     }
00162 
00163     @Override
00164     public Field newVariableList(String name, int size) {
00165       return ChannelBufferField.newVariable(this, name, size);
00166     }
00167 
00168     @Override
00169     public int getSerializedSize() {
00170       return INT8.getSerializedSize();
00171     }
00172 
00173     @Override
00174     public <T> void serialize(T value, ChannelBuffer buffer) {
00175       INT8.serialize(value, buffer);
00176     }
00177 
00178     @SuppressWarnings("unchecked")
00179     @Override
00180     public Byte deserialize(ChannelBuffer buffer) {
00181       return INT8.deserialize(buffer);
00182     }
00183 
00184     @SuppressWarnings("unchecked")
00185     @Override
00186     public Byte parseFromString(String value) {
00187       return (byte) Short.parseShort(value);
00188     }
00189 
00190     @Override
00191     public String getJavaTypeName() {
00192       return INT8.getJavaTypeName();
00193     }
00194   },
00198   CHAR {
00199     @SuppressWarnings("unchecked")
00200     @Override
00201     public Byte getDefaultValue() {
00202       return UINT8.getDefaultValue();
00203     }
00204 
00205     @Override
00206     public Field newVariableList(String name, int size) {
00207       return ChannelBufferField.newVariable(this, name, size);
00208     }
00209 
00210     @Override
00211     public int getSerializedSize() {
00212       return UINT8.getSerializedSize();
00213     }
00214 
00215     @Override
00216     public <T> void serialize(T value, ChannelBuffer buffer) {
00217       UINT8.serialize(value, buffer);
00218     }
00219 
00220     @SuppressWarnings("unchecked")
00221     @Override
00222     public Byte deserialize(ChannelBuffer buffer) {
00223       return UINT8.deserialize(buffer);
00224     }
00225 
00226     @SuppressWarnings("unchecked")
00227     @Override
00228     public Byte parseFromString(String value) {
00229       return UINT8.parseFromString(value);
00230     }
00231 
00232     @Override
00233     public String getJavaTypeName() {
00234       return UINT8.getJavaTypeName();
00235     }
00236   },
00237   INT16 {
00238     @SuppressWarnings("unchecked")
00239     @Override
00240     public Short getDefaultValue() {
00241       return Short.valueOf((short) 0);
00242     }
00243 
00244     @Override
00245     public Field newVariableList(String name, int size) {
00246       return ShortArrayField.newVariable(this, name, size);
00247     }
00248 
00249     @Override
00250     public int getSerializedSize() {
00251       return 2;
00252     }
00253 
00254     @Override
00255     public <T> void serialize(T value, ChannelBuffer buffer) {
00256       Preconditions.checkArgument(value instanceof Short);
00257       buffer.writeShort((Short) value);
00258     }
00259 
00260     @SuppressWarnings("unchecked")
00261     @Override
00262     public Short deserialize(ChannelBuffer buffer) {
00263       return buffer.readShort();
00264     }
00265 
00266     @SuppressWarnings("unchecked")
00267     @Override
00268     public Short parseFromString(String value) {
00269       return Short.parseShort(value);
00270     }
00271 
00272     @Override
00273     public String getJavaTypeName() {
00274       return "short";
00275     }
00276   },
00277   UINT16 {
00278     @SuppressWarnings("unchecked")
00279     @Override
00280     public Short getDefaultValue() {
00281       return INT16.getDefaultValue();
00282     }
00283 
00284     @Override
00285     public Field newVariableList(String name, int size) {
00286       return ShortArrayField.newVariable(this, name, size);
00287     }
00288 
00289     @Override
00290     public int getSerializedSize() {
00291       return INT16.getSerializedSize();
00292     }
00293 
00294     @Override
00295     public <T> void serialize(T value, ChannelBuffer buffer) {
00296       INT16.serialize(value, buffer);
00297     }
00298 
00299     @SuppressWarnings("unchecked")
00300     @Override
00301     public Short deserialize(ChannelBuffer buffer) {
00302       return INT16.deserialize(buffer);
00303     }
00304 
00305     @SuppressWarnings("unchecked")
00306     @Override
00307     public Short parseFromString(String value) {
00308       return (short) Integer.parseInt(value);
00309     }
00310 
00311     @Override
00312     public String getJavaTypeName() {
00313       return INT16.getJavaTypeName();
00314     }
00315   },
00316   INT32 {
00317     @SuppressWarnings("unchecked")
00318     @Override
00319     public Integer getDefaultValue() {
00320       return Integer.valueOf(0);
00321     }
00322 
00323     @Override
00324     public Field newVariableList(String name, int size) {
00325       return IntegerArrayField.newVariable(this, name, size);
00326     }
00327 
00328     @Override
00329     public int getSerializedSize() {
00330       return 4;
00331     }
00332 
00333     @Override
00334     public <T> void serialize(T value, ChannelBuffer buffer) {
00335       Preconditions.checkArgument(value instanceof Integer);
00336       buffer.writeInt((Integer) value);
00337     }
00338 
00339     @SuppressWarnings("unchecked")
00340     @Override
00341     public Integer deserialize(ChannelBuffer buffer) {
00342       return buffer.readInt();
00343     }
00344 
00345     @SuppressWarnings("unchecked")
00346     @Override
00347     public Integer parseFromString(String value) {
00348       return Integer.parseInt(value);
00349     }
00350 
00351     @Override
00352     public String getJavaTypeName() {
00353       return "int";
00354     }
00355   },
00356   UINT32 {
00357     @SuppressWarnings("unchecked")
00358     @Override
00359     public Integer getDefaultValue() {
00360       return INT32.getDefaultValue();
00361     }
00362 
00363     @Override
00364     public Field newVariableList(String name, int size) {
00365       return IntegerArrayField.newVariable(this, name, size);
00366     }
00367 
00368     @Override
00369     public int getSerializedSize() {
00370       return INT32.getSerializedSize();
00371     }
00372 
00373     @Override
00374     public <T> void serialize(T value, ChannelBuffer buffer) {
00375       INT32.serialize(value, buffer);
00376     }
00377 
00378     @SuppressWarnings("unchecked")
00379     @Override
00380     public Integer deserialize(ChannelBuffer buffer) {
00381       return INT32.deserialize(buffer);
00382     }
00383 
00384     @SuppressWarnings("unchecked")
00385     @Override
00386     public Integer parseFromString(String value) {
00387       return (int) Long.parseLong(value);
00388     }
00389 
00390     @Override
00391     public String getJavaTypeName() {
00392       return INT32.getJavaTypeName();
00393     }
00394   },
00395   INT64 {
00396     @SuppressWarnings("unchecked")
00397     @Override
00398     public Long getDefaultValue() {
00399       return Long.valueOf(0);
00400     }
00401 
00402     @Override
00403     public Field newVariableList(String name, int size) {
00404       return LongArrayField.newVariable(this, name, size);
00405     }
00406 
00407     @Override
00408     public int getSerializedSize() {
00409       return 8;
00410     }
00411 
00412     @Override
00413     public <T> void serialize(T value, ChannelBuffer buffer) {
00414       Preconditions.checkArgument(value instanceof Long);
00415       buffer.writeLong((Long) value);
00416     }
00417 
00418     @SuppressWarnings("unchecked")
00419     @Override
00420     public Long deserialize(ChannelBuffer buffer) {
00421       return buffer.readLong();
00422     }
00423 
00424     @SuppressWarnings("unchecked")
00425     @Override
00426     public Long parseFromString(String value) {
00427       return Long.parseLong(value);
00428     }
00429 
00430     @Override
00431     public String getJavaTypeName() {
00432       return "long";
00433     }
00434   },
00435   UINT64 {
00436     @SuppressWarnings("unchecked")
00437     @Override
00438     public Long getDefaultValue() {
00439       return INT64.getDefaultValue();
00440     }
00441 
00442     @Override
00443     public Field newVariableList(String name, int size) {
00444       return INT64.newVariableList(name, size);
00445     }
00446 
00447     @Override
00448     public int getSerializedSize() {
00449       return INT64.getSerializedSize();
00450     }
00451 
00452     @Override
00453     public <T> void serialize(T value, ChannelBuffer buffer) {
00454       INT64.serialize(value, buffer);
00455     }
00456 
00457     @SuppressWarnings("unchecked")
00458     @Override
00459     public Long deserialize(ChannelBuffer buffer) {
00460       return INT64.deserialize(buffer);
00461     }
00462 
00463     @SuppressWarnings("unchecked")
00464     @Override
00465     public Long parseFromString(String value) {
00466       return INT64.parseFromString(value);
00467     }
00468 
00469     @Override
00470     public String getJavaTypeName() {
00471       return INT64.getJavaTypeName();
00472     }
00473   },
00474   FLOAT32 {
00475     @SuppressWarnings("unchecked")
00476     @Override
00477     public Float getDefaultValue() {
00478       return Float.valueOf(0);
00479     }
00480 
00481     @Override
00482     public Field newVariableList(String name, int size) {
00483       return FloatArrayField.newVariable(name, size);
00484     }
00485 
00486     @Override
00487     public int getSerializedSize() {
00488       return 4;
00489     }
00490 
00491     @Override
00492     public <T> void serialize(T value, ChannelBuffer buffer) {
00493       Preconditions.checkArgument(value instanceof Float);
00494       buffer.writeFloat((Float) value);
00495     }
00496 
00497     @SuppressWarnings("unchecked")
00498     @Override
00499     public Float deserialize(ChannelBuffer buffer) {
00500       return buffer.readFloat();
00501     }
00502 
00503     @SuppressWarnings("unchecked")
00504     @Override
00505     public Float parseFromString(String value) {
00506       return Float.parseFloat(value);
00507     }
00508 
00509     @Override
00510     public String getJavaTypeName() {
00511       return "float";
00512     }
00513   },
00514   FLOAT64 {
00515     @SuppressWarnings("unchecked")
00516     @Override
00517     public Double getDefaultValue() {
00518       return Double.valueOf(0);
00519     }
00520 
00521     @Override
00522     public int getSerializedSize() {
00523       return 8;
00524     }
00525 
00526     @Override
00527     public Field newVariableList(String name, int size) {
00528       return DoubleArrayField.newVariable(name, size);
00529     }
00530 
00531     @Override
00532     public <T> void serialize(T value, ChannelBuffer buffer) {
00533       Preconditions.checkArgument(value instanceof Double);
00534       buffer.writeDouble((Double) value);
00535     }
00536 
00537     @SuppressWarnings("unchecked")
00538     @Override
00539     public Double deserialize(ChannelBuffer buffer) {
00540       return buffer.readDouble();
00541     }
00542 
00543     @SuppressWarnings("unchecked")
00544     @Override
00545     public Double parseFromString(String value) {
00546       return Double.parseDouble(value);
00547     }
00548 
00549     @Override
00550     public String getJavaTypeName() {
00551       return "double";
00552     }
00553   },
00554   STRING {
00555     @SuppressWarnings("unchecked")
00556     @Override
00557     public String getDefaultValue() {
00558       return "";
00559     }
00560 
00561     @Override
00562     public Field newVariableList(String name, int size) {
00563       return ListField.newVariable(this, name);
00564     }
00565 
00566     @Override
00567     public int getSerializedSize() {
00568       throw new UnsupportedOperationException();
00569     }
00570 
00571     @Override
00572     public <T> void serialize(T value, ChannelBuffer buffer) {
00573       Preconditions.checkArgument(value instanceof String);
00574       byte[] bytes = ((String) value).getBytes();
00575       buffer.writeInt(bytes.length);
00576       buffer.writeBytes(bytes);
00577     }
00578 
00579     @SuppressWarnings("unchecked")
00580     @Override
00581     public String deserialize(ChannelBuffer buffer) {
00582       int length = buffer.readInt();
00583       ByteBuffer stringBuffer = buffer.readSlice(length).toByteBuffer();
00584       return Charset.forName("US-ASCII").decode(stringBuffer).toString();
00585     }
00586 
00587     @SuppressWarnings("unchecked")
00588     @Override
00589     public String parseFromString(String value) {
00590       return value;
00591     }
00592 
00593     @Override
00594     public String getJavaTypeName() {
00595       return "java.lang.String";
00596     }
00597   },
00598   TIME {
00599     @SuppressWarnings("unchecked")
00600     @Override
00601     public Time getDefaultValue() {
00602       return new Time();
00603     }
00604 
00605     @Override
00606     public Field newVariableList(String name, int size) {
00607       return ListField.newVariable(this, name);
00608     }
00609 
00610     @Override
00611     public int getSerializedSize() {
00612       return 8;
00613     }
00614 
00615     @Override
00616     public <T> void serialize(T value, ChannelBuffer buffer) {
00617       Preconditions.checkArgument(value instanceof Time);
00618       buffer.writeInt(((Time) value).secs);
00619       buffer.writeInt(((Time) value).nsecs);
00620     }
00621 
00622     @SuppressWarnings("unchecked")
00623     @Override
00624     public Time deserialize(ChannelBuffer buffer) {
00625       return new Time(buffer.readInt(), buffer.readInt());
00626     }
00627 
00628     @SuppressWarnings("unchecked")
00629     @Override
00630     public Void parseFromString(String value) {
00631       throw new UnsupportedOperationException();
00632     }
00633 
00634     @Override
00635     public String getJavaTypeName() {
00636       return Time.class.getName();
00637     }
00638   },
00639   DURATION {
00640     @SuppressWarnings("unchecked")
00641     @Override
00642     public Duration getDefaultValue() {
00643       return new Duration();
00644     }
00645 
00646     @Override
00647     public Field newVariableList(String name, int size) {
00648       return ListField.newVariable(this, name);
00649     }
00650 
00651     @Override
00652     public int getSerializedSize() {
00653       return 8;
00654     }
00655 
00656     @Override
00657     public <T> void serialize(T value, ChannelBuffer buffer) {
00658       Preconditions.checkArgument(value instanceof Duration);
00659       buffer.writeInt(((Duration) value).secs);
00660       buffer.writeInt(((Duration) value).nsecs);
00661     }
00662 
00663     @SuppressWarnings("unchecked")
00664     @Override
00665     public Duration deserialize(ChannelBuffer buffer) {
00666       return new Duration(buffer.readInt(), buffer.readInt());
00667     }
00668 
00669     @SuppressWarnings("unchecked")
00670     @Override
00671     public Void parseFromString(String value) {
00672       throw new UnsupportedOperationException();
00673     }
00674 
00675     @Override
00676     public String getJavaTypeName() {
00677       return Duration.class.getName();
00678     }
00679   };
00680 
00681   private static final ImmutableSet<String> TYPE_NAMES;
00682 
00683   static {
00684     ImmutableSet.Builder<String> builder = ImmutableSet.<String>builder();
00685     for (PrimitiveFieldType type : values()) {
00686       builder.add(type.getName());
00687     }
00688     TYPE_NAMES = builder.build();
00689   }
00690 
00691   public static boolean existsFor(String name) {
00692     return TYPE_NAMES.contains(name);
00693   }
00694 
00695   @Override
00696   public Field newVariableValue(String name) {
00697     return ValueField.newVariable(this, name);
00698   }
00699 
00700   @Override
00701   public <T> Field newConstantValue(String name, T value) {
00702     return ValueField.newConstant(this, name, value);
00703   }
00704 
00705   @Override
00706   public String getName() {
00707     return toString().toLowerCase();
00708   }
00709 
00710   @Override
00711   public String getMd5String() {
00712     return getName();
00713   }
00714 }


rosjava_bootstrap
Author(s): Daniel Stonier , Damon Kohler
autogenerated on Fri Aug 28 2015 12:41:44