blob: 6ff5eb65ed501dabaddb7a6fcfb2047744a11a06 [file] [log] [blame] [view]
# 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