| # FIDL examples |
| |
| This is a catalog of FIDL examples intended to demonstrate FIDL concepts through |
| simplified implementations of real software workflows. |
| |
| ## Example index |
| |
| The following examples sequentially demonstrate useful FIDL concepts. |
| |
| <!-- DO_NOT_REMOVE_COMMENT:examples (Why? See: /tools/fidl/scripts/canonical_example/README.md) --> |
| |
| ### Calculator |
| |
| The [calculator][example_calculator] example shows fundamental building blocks |
| for creating your first FIDL protocol. |
| |
| ### Key-value store |
| |
| The [key-value store][example_key_value_store] example demonstrates how to build |
| a simple key-value store using FIDL in order to learn about the various data |
| types available in the language. |
| |
| ### Canvas |
| |
| The [canvas][example_canvas] example demonstrates how to build a simple 2D |
| line-rendering canvas using FIDL in order to learn about commonly used data flow |
| patterns. |
| |
| <!-- /DO_NOT_REMOVE_COMMENT:examples (Why? See: /tools/fidl/scripts/canonical_example/README.md) --> |
| |
| ## Concept index |
| |
| Each "concept" in the FIDL language is exemplified in at least one of the |
| examples listed in the preceding section. A quick reference of each such |
| concept, as well as its example implementations, is listed in the following |
| section. |
| |
| <!-- DO_NOT_REMOVE_COMMENT:concepts (Why? See: /tools/fidl/scripts/canonical_example/README.md) --> |
| |
| ### Acknowledgement pattern |
| |
| <<../widgets/_acknowledgement_pattern.md>> |
| |
| ### Alias |
| |
| <<../widgets/_alias.md>> |
| |
| ### Anonymous type |
| |
| <<../widgets/_anonymous_type.md>> |
| |
| ### Bits |
| |
| <<../widgets/_bits.md>> |
| |
| ### Discoverable |
| |
| <<../widgets/_discoverable.md>> |
| |
| ### Enum |
| |
| <<../widgets/_enum.md>> |
| |
| ### Feed forward pattern |
| |
| <<../widgets/_feed_forward_pattern.md>> |
| |
| ### Generated name |
| |
| <<../widgets/_generated_name.md>> |
| |
| ### Handle rights |
| |
| <<../widgets/_handle_rights.md>> |
| |
| ### Infallible two way method |
| |
| <<../widgets/_infallible_two_way_method.md>> |
| |
| ### Named payload |
| |
| <<../widgets/_named_payload.md>> |
| |
| ### Optionality |
| |
| <<../widgets/_optionality.md>> |
| |
| ### Pagination pattern |
| |
| <<../widgets/_pagination_pattern.md>> |
| |
| ### Persistence |
| |
| <<../widgets/_persistence.md>> |
| |
| ### Protocol end |
| |
| <<../widgets/_protocol_end.md>> |
| |
| ### Protocol |
| |
| <<../widgets/_protocol.md>> |
| |
| ### Recursive type |
| |
| <<../widgets/_recursive_type.md>> |
| |
| ### Resource type |
| |
| <<../widgets/_resource_type.md>> |
| |
| ### Scalar type |
| |
| <<../widgets/_scalar_type.md>> |
| |
| ### Size constraint |
| |
| <<../widgets/_size_constraint.md>> |
| |
| ### Struct payload |
| |
| <<../widgets/_struct_payload.md>> |
| |
| ### Table payload |
| |
| <<../widgets/_table_payload.md>> |
| |
| ### Throttled event pattern |
| |
| <<../widgets/_throttled_event_pattern.md>> |
| |
| ### Union payload |
| |
| <<../widgets/_union_payload.md>> |
| |
| <!-- /DO_NOT_REMOVE_COMMENT:concepts (Why? See: /tools/fidl/scripts/canonical_example/README.md) --> |
| |
| [example_calculator]: calculator/README.md |
| [example_canvas]: canvas/README.md |
| [example_key_value_store]: key_value_store/README.md |