aboutsummaryrefslogtreecommitdiff
path: root/project/mavlink-library/src/main/scala/com/github/jodersky/mavlink/parsing/FieldTypes.scala
diff options
context:
space:
mode:
Diffstat (limited to 'project/mavlink-library/src/main/scala/com/github/jodersky/mavlink/parsing/FieldTypes.scala')
-rw-r--r--project/mavlink-library/src/main/scala/com/github/jodersky/mavlink/parsing/FieldTypes.scala27
1 files changed, 27 insertions, 0 deletions
diff --git a/project/mavlink-library/src/main/scala/com/github/jodersky/mavlink/parsing/FieldTypes.scala b/project/mavlink-library/src/main/scala/com/github/jodersky/mavlink/parsing/FieldTypes.scala
new file mode 100644
index 0000000..0cf29b4
--- /dev/null
+++ b/project/mavlink-library/src/main/scala/com/github/jodersky/mavlink/parsing/FieldTypes.scala
@@ -0,0 +1,27 @@
+package com.github.jodersky.mavlink.parsing
+
+import scala.xml.Node
+
+object FieldTypes {
+
+ sealed trait Type {
+ def width: Int
+ def scalaType: String
+ def nativeType: String
+ }
+
+ case class IntType(signed: Boolean, width: Int, scalaType: String, nativeType: String) extends Type
+
+ def parse(xml: Node): Type = xml.text match {
+ case "int8_t" => IntType(true, 1, "Byte", xml.text)
+ case "int16_t" => IntType(true, 2, "Short", xml.text)
+ case "int32_t" => IntType(true, 4, "Int", xml.text)
+ case "int64_t" => IntType(true, 8, "Long", xml.text)
+ case "uint8_t" => IntType(false, 1, "Byte", xml.text)
+ case "uint16_t" => IntType(false, 2, "Short", xml.text)
+ case "uint32_t" => IntType(false, 4, "Int", xml.text)
+ case "uint64_t" => IntType(false, 8, "Long", xml.text)
+ case _ => Parser.fatal("unsupported type \"" + xml.text + "\"", xml)
+ }
+
+} \ No newline at end of file