--- /dev/null
+=Binding=\r
+Information between databoard's datatype and Java classes are transferred using a ''[javadoc/org/simantics/databoard/binding/Binding.html Binding]''.\r
+The type and hierarchy structure of binding is same as its repsective type and [javadoc/org/simantics/databoard/type/Datatype.html Datatype]. \r
+As datatype has tree-structure, so does a binding. \r
+\r
+{| border="1" cellpadding="3" cellspacing="0" align="center"\r
+| '''#'''||'''Type'''||'''Description'''\r
+|-\r
+| -||[javadoc/org/simantics/databoard/binding/Binding.java|Binding]||Base class for all Bindings\r
+|- \r
+| 0-5||[javadoc/org/simantics/databoard/binding/BooleanBinding.java|BooleanBinding],[javadoc/org/simantics/databoard/binding/ByteBinding.java|ByteBinding],[javadoc/org/simantics/databoard/binding/IntBinding.java|IntBinding],[javadoc/org/simantics/databoard/binding/LongBinding.java|LongBinding],[javadoc/org/simantics/databoard/binding/FloatBinding.java|FloatBinding],[javadoc/org/simantics/databoard/binding/DoubleBinding.java|DoubleBinding]||Primitive and numeric Bindings\r
+|- \r
+| 6||[javadoc/org/simantics/databoard/binding/StringBinding.java|StringBinding]|| String\r
+|- \r
+| 7||[javadoc/org/simantics/databoard/binding/RecordBinding.java|RecordBinding]|| Record \r
+|- \r
+| 8||[javadoc/org/simantics/databoard/binding/ArrayBinding.java|ArrayBinding]|| Array - an ordered sequence of elements of one value.\r
+|- \r
+| 9||[javadoc/org/simantics/databoard/binding/MapBinding.java|MapBinding]|| Map - an ''ordered'' map of keys to values. \r
+|- \r
+| 11||[javadoc/org/simantics/databoard/binding/UnionBinding.java|UnionBinding]|| Union\r
+|- \r
+| 10||[javadoc/org/simantics/databoard/binding/OptionalBinding.java|OptionalBinding]|| Optional value\r
+|- \r
+| 12||[javadoc/org/simantics/databoard/binding/VariantBinding.java|VariantBinding]|| Variant value\r
+|}\r
+\r
+==Built-in Bindings=\r
+\r
+==Class Binding==\r
+To acquire a binding, the developer can use a utility that creates one using Java reflection functions. \r
+ Binding binding = Bindings.getBinding( Double.class );\r
+\r
+The Binding implementation is based on reflection or constructed from byte-code at runtime. Reflection is used if ASM library is not available. \r
+\r
+An automatic mechanism can create binding out of Java class, provided that certain rules are followed.\r
+\r
+''Record-like class:''\r
+ class Foo {\r
+ public String name;\r
+ public Object value;\r
+ }\r
+\r
+''Immutable class:''\r
+ class Foo {\r
+ private String name;\r
+ private Object value;\r
+ \r
+ public Foo(String name, Object value) {\r
+ this.name = name;\r
+ this.value = value;\r
+ }\r
+ \r
+ public String getName() {\r
+ return name;\r
+ }\r
+ \r
+ public Object getValue() {\r
+ return value;\r
+ }\r
+ \r
+ }\r
+\r
+''Bean-like classes:''\r
+ class Foo {\r
+ private String name;\r
+ private Object value;\r
+ \r
+ public void setName(String name) {\r
+ this.name = name;\r
+ }\r
+ \r
+ public void setValue(Object value) {\r
+ this.value = value;\r
+ }\r
+ \r
+ public String getName() {\r
+ return name;\r
+ }\r
+ \r
+ public Object getValue() {\r
+ return value;\r
+ }\r
+ \r
+ }\r
+\r
+===Annotations===\r
+You can aid the Binding creation with annotations.\r
+\r
+ such as @Recursive, @Optional, @Arguments.\r
+\r
+{| style="background-color: #e9e9e9; border: 1px solid #aaaaaa; "\r
+| '''Class''' \r
+|-\r
+|}\r
+\r
+\r
+==Hand-Written Binding==
\ No newline at end of file