mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-12 16:00:59 +00:00
Compare commits
294 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0312061985 | ||
|
|
9f94ceedbc | ||
|
|
bcd2b9d039 | ||
|
|
82fefbf252 | ||
|
|
65e49faf76 | ||
|
|
50be3cfe8c | ||
|
|
026c243dc5 | ||
|
|
a9257b6963 | ||
|
|
fceafd438d | ||
|
|
33a15d63cf | ||
|
|
ad6d6638f3 | ||
|
|
69ac6a712d | ||
|
|
4b69b27d43 | ||
|
|
9318c6c981 | ||
|
|
df287ee6a7 | ||
|
|
0d7bf7e8a7 | ||
|
|
e67310bf1c | ||
|
|
121c4c99ae | ||
|
|
27f5a0fdae | ||
|
|
3592b19150 | ||
|
|
733e432bfd | ||
|
|
5414e04b45 | ||
|
|
c9a286bf29 | ||
|
|
f9a70c79f1 | ||
|
|
1eb4bd3ca7 | ||
|
|
41e47e4951 | ||
|
|
4999936289 | ||
|
|
8e2852fa73 | ||
|
|
7e52f59f14 | ||
|
|
1ff248739e | ||
|
|
2cffba28b4 | ||
|
|
34f0728ea2 | ||
|
|
569e6cb461 | ||
|
|
086097ff94 | ||
|
|
2b0ce37b12 | ||
|
|
67bf1084c0 | ||
|
|
f82c4ac904 | ||
|
|
9a40ab2495 | ||
|
|
5c14ee7e8b | ||
|
|
26e77dce41 | ||
|
|
6913c34e62 | ||
|
|
0222cd4a63 | ||
|
|
0042afa5e2 | ||
|
|
8852f10a84 | ||
|
|
a8df3c8f35 | ||
|
|
b8629d402e | ||
|
|
ccdab58c11 | ||
|
|
a96fe8f206 | ||
|
|
99fda81905 | ||
|
|
8694806f14 | ||
|
|
5a75ad407d | ||
|
|
2d86857bec | ||
|
|
0f90dc8290 | ||
|
|
c9125e6385 | ||
|
|
28ddfaeda7 | ||
|
|
7e59e0727c | ||
|
|
79d9e33ea3 | ||
|
|
bbb6b932fc | ||
|
|
46cc3d6432 | ||
|
|
fb3ccd36c0 | ||
|
|
492475a1b2 | ||
|
|
c75a0154eb | ||
|
|
a2cd1ea3b6 | ||
|
|
32e63af684 | ||
|
|
1f4a9038ce | ||
|
|
a9df44828d | ||
|
|
5f453ef738 | ||
|
|
49061f8c7c | ||
|
|
807adb73b2 | ||
|
|
2f59a0319b | ||
|
|
6a8898573c | ||
|
|
d7a70db6ac | ||
|
|
b127c57ff0 | ||
|
|
2436bd8175 | ||
|
|
69a53e495d | ||
|
|
c7a8102b12 | ||
|
|
2146bacd2e | ||
|
|
8db59321d9 | ||
|
|
42879f6ea6 | ||
|
|
7833affd7e | ||
|
|
c065e972db | ||
|
|
06b12d55ea | ||
|
|
baddf90599 | ||
|
|
8b35a6bc32 | ||
|
|
6cb4d671a8 | ||
|
|
fb9afbafc7 | ||
|
|
dafd2f1f29 | ||
|
|
6ede1ccc9e | ||
|
|
8755c35a18 | ||
|
|
75f05d6389 | ||
|
|
3b27f5396e | ||
|
|
58c8eb5847 | ||
|
|
0e034ecdba | ||
|
|
0f8b71180f | ||
|
|
a5a2da0161 | ||
|
|
28783927af | ||
|
|
a1378fbd16 | ||
|
|
dcacfc5b11 | ||
|
|
f9dabf511a | ||
|
|
5ba66f71c5 | ||
|
|
5adfac9fc3 | ||
|
|
c6fce30e9b | ||
|
|
ef30729a71 | ||
|
|
30ae5f189c | ||
|
|
299725fe2e | ||
|
|
a41fefa1a8 | ||
|
|
d89f611f6f | ||
|
|
150644d7f4 | ||
|
|
c696275eaf | ||
|
|
7106d86685 | ||
|
|
da6472013f | ||
|
|
e646392647 | ||
|
|
e040f4e975 | ||
|
|
f4a9c5325b | ||
|
|
8f2e1dbd88 | ||
|
|
595bf0007a | ||
|
|
0cfb7eb80b | ||
|
|
67eb95de92 | ||
|
|
b1f617fcb2 | ||
|
|
960cd4d635 | ||
|
|
6ff9e90e7e | ||
|
|
5b32e8f5c2 | ||
|
|
0bed8cd4a0 | ||
|
|
7cd216c51e | ||
|
|
129ef422e8 | ||
|
|
e5fc3b16d8 | ||
|
|
c0d16995a4 | ||
|
|
70c8292c29 | ||
|
|
d47cd10d77 | ||
|
|
66bd3d7400 | ||
|
|
0cc1edb3ad | ||
|
|
57375a9e1c | ||
|
|
0346535221 | ||
|
|
7d62dcc422 | ||
|
|
b3cd878dfe | ||
|
|
09486a9f97 | ||
|
|
dd79eed495 | ||
|
|
0e1305c8e2 | ||
|
|
88549130e1 | ||
|
|
6dfc59dfcc | ||
|
|
5ba80c24e0 | ||
|
|
da55ac3a27 | ||
|
|
c6f9e010bb | ||
|
|
94ff188a3e | ||
|
|
5a937f1ba1 | ||
|
|
e1c3690a2a | ||
|
|
b08abbbbf6 | ||
|
|
7d6d99c6be | ||
|
|
d3055a97e7 | ||
|
|
0dc5a75dc0 | ||
|
|
f175e60998 | ||
|
|
a632c3c004 | ||
|
|
11789e41b6 | ||
|
|
a9c0845504 | ||
|
|
526c92546f | ||
|
|
eb80ead90b | ||
|
|
386b6353ed | ||
|
|
d09696bbe6 | ||
|
|
a228e8c9b8 | ||
|
|
91a3172519 | ||
|
|
e0d4562782 | ||
|
|
49677b0b70 | ||
|
|
8e34ad5db7 | ||
|
|
eb64390080 | ||
|
|
46577d0d2f | ||
|
|
32029ac699 | ||
|
|
4354945727 | ||
|
|
755573bcda | ||
|
|
205285c35c | ||
|
|
f4e23bf91e | ||
|
|
1fdb5d263a | ||
|
|
c4211538bd | ||
|
|
bcb9ef1876 | ||
|
|
c5441dc199 | ||
|
|
7f417e3397 | ||
|
|
3c35a143ea | ||
|
|
56e2bc30b0 | ||
|
|
eb40a54672 | ||
|
|
15f16f149e | ||
|
|
053d39adaf | ||
|
|
6f71b76e6f | ||
|
|
4b7d8e0df9 | ||
|
|
0def91105f | ||
|
|
8176a204fc | ||
|
|
e8b2492cf1 | ||
|
|
5d4386b1bc | ||
|
|
a6a3989dd4 | ||
|
|
696f47f1f7 | ||
|
|
a3dfcf3326 | ||
|
|
d3e8cb60a1 | ||
|
|
0343396e49 | ||
|
|
f625ff3330 | ||
|
|
362dd663f8 | ||
|
|
5a8a395756 | ||
|
|
afafd206a3 | ||
|
|
48da238920 | ||
|
|
8836ddab41 | ||
|
|
23922e7eba | ||
|
|
f8fe811d5c | ||
|
|
0cc525b722 | ||
|
|
28861d1d7d | ||
|
|
204473cdb5 | ||
|
|
85088a196d | ||
|
|
6e214c3a49 | ||
|
|
96294e9f84 | ||
|
|
b7856f8e27 | ||
|
|
0100f6a577 | ||
|
|
e0a87e36d5 | ||
|
|
b67f1ad6d0 | ||
|
|
ae6753684e | ||
|
|
a352bdbc34 | ||
|
|
cb14043f82 | ||
|
|
d64dc6200a | ||
|
|
ea7cfcd591 | ||
|
|
067553156a | ||
|
|
b128b802d9 | ||
|
|
1d3afb90c5 | ||
|
|
fe5e4c71c5 | ||
|
|
17b9eed4e1 | ||
|
|
cbc8872b99 | ||
|
|
05743591e1 | ||
|
|
2bc2529245 | ||
|
|
18cadc79c1 | ||
|
|
426f3b8bf2 | ||
|
|
950a71ab89 | ||
|
|
86486a1735 | ||
|
|
c2f764c22b | ||
|
|
e97ff95970 | ||
|
|
33212657ae | ||
|
|
66e9d9823a | ||
|
|
9fc153a8f8 | ||
|
|
c2bf810638 | ||
|
|
0ce6957763 | ||
|
|
82c6712606 | ||
|
|
b5957975c5 | ||
|
|
85f71321fd | ||
|
|
3e6cd51b63 | ||
|
|
10b79d87c1 | ||
|
|
16a7df46f0 | ||
|
|
76f5e9816a | ||
|
|
368428cb94 | ||
|
|
72b56fd081 | ||
|
|
63b7b25289 | ||
|
|
13fc75cb6b | ||
|
|
e6e38a8d17 | ||
|
|
d9f2cc2d62 | ||
|
|
197ae6cc7e | ||
|
|
489d9735e9 | ||
|
|
3308444147 | ||
|
|
ef5ae488dd | ||
|
|
08efe60954 | ||
|
|
01a7bc3c58 | ||
|
|
67084b9921 | ||
|
|
ed11b08fc9 | ||
|
|
c1e7aee489 | ||
|
|
75143f836b | ||
|
|
fb4f6fb894 | ||
|
|
19d8942943 | ||
|
|
dbce69c63b | ||
|
|
aeba096403 | ||
|
|
966aae2144 | ||
|
|
e7dc252b0e | ||
|
|
4172c3f0bd | ||
|
|
417821fdd7 | ||
|
|
c192ab423b | ||
|
|
a397dd7e8c | ||
|
|
6eae49a79a | ||
|
|
f6af2087ee | ||
|
|
ab716ee41d | ||
|
|
d6d83c3a92 | ||
|
|
aa6848fbf6 | ||
|
|
6c8a8d054d | ||
|
|
63495b935a | ||
|
|
56ecc1f548 | ||
|
|
3fda20d7c7 | ||
|
|
fa3fa91936 | ||
|
|
52f2596e15 | ||
|
|
0916f1c87e | ||
|
|
0888e7cb4d | ||
|
|
876a64aae1 | ||
|
|
2803983c70 | ||
|
|
88dd92de40 | ||
|
|
477b1b5d13 | ||
|
|
1cb1c4baee | ||
|
|
50cdf92e1e | ||
|
|
9a7fb4d68a | ||
|
|
3cb27fa241 | ||
|
|
d3d7e2ef99 | ||
|
|
d4d355d883 | ||
|
|
0fde16e426 | ||
|
|
32a6744286 | ||
|
|
42ee479c31 | ||
|
|
df007dfde8 | ||
|
|
d44ce00af1 |
@@ -1,24 +1,16 @@
|
|||||||
---
|
---
|
||||||
buildifier: latest
|
buildifier: latest
|
||||||
platforms:
|
matrix:
|
||||||
ubuntu1804:
|
bazel:
|
||||||
|
- 7.x
|
||||||
|
- 8.x
|
||||||
|
tasks:
|
||||||
|
verify_ubuntu2004:
|
||||||
|
platform: ubuntu2004
|
||||||
|
bazel: ${{ bazel }}
|
||||||
environment:
|
environment:
|
||||||
CC: clang
|
CC: clang
|
||||||
SWIFT_VERSION: "5.5.3"
|
SWIFT_VERSION: "5.8"
|
||||||
SWIFT_HOME: "$HOME/swift-$SWIFT_VERSION"
|
|
||||||
PATH: "$PATH:$SWIFT_HOME/usr/bin"
|
|
||||||
shell_commands:
|
|
||||||
- "echo --- Downloading and extracting Swift $SWIFT_VERSION to $SWIFT_HOME"
|
|
||||||
- "mkdir $SWIFT_HOME"
|
|
||||||
- "curl https://download.swift.org/swift-${SWIFT_VERSION}-release/ubuntu1804/swift-${SWIFT_VERSION}-RELEASE/swift-${SWIFT_VERSION}-RELEASE-ubuntu18.04.tar.gz | tar xvz --strip-components=1 -C $SWIFT_HOME"
|
|
||||||
build_targets:
|
|
||||||
- "//..."
|
|
||||||
test_targets:
|
|
||||||
- "//..."
|
|
||||||
ubuntu2004:
|
|
||||||
environment:
|
|
||||||
CC: clang
|
|
||||||
SWIFT_VERSION: "5.5.3"
|
|
||||||
SWIFT_HOME: "$HOME/swift-$SWIFT_VERSION"
|
SWIFT_HOME: "$HOME/swift-$SWIFT_VERSION"
|
||||||
PATH: "$PATH:$SWIFT_HOME/usr/bin"
|
PATH: "$PATH:$SWIFT_HOME/usr/bin"
|
||||||
shell_commands:
|
shell_commands:
|
||||||
@@ -29,8 +21,40 @@ platforms:
|
|||||||
- "//..."
|
- "//..."
|
||||||
test_targets:
|
test_targets:
|
||||||
- "//..."
|
- "//..."
|
||||||
macos:
|
verify_ubuntu2204:
|
||||||
|
platform: ubuntu2204
|
||||||
|
bazel: ${{ bazel }}
|
||||||
|
environment:
|
||||||
|
CC: clang
|
||||||
|
SWIFT_VERSION: "5.8"
|
||||||
|
SWIFT_HOME: "$HOME/swift-$SWIFT_VERSION"
|
||||||
|
PATH: "$PATH:$SWIFT_HOME/usr/bin"
|
||||||
|
shell_commands:
|
||||||
|
- "echo --- Downloading and extracting Swift $SWIFT_VERSION to $SWIFT_HOME"
|
||||||
|
- "mkdir $SWIFT_HOME"
|
||||||
|
- "curl https://download.swift.org/swift-${SWIFT_VERSION}-release/ubuntu2204/swift-${SWIFT_VERSION}-RELEASE/swift-${SWIFT_VERSION}-RELEASE-ubuntu22.04.tar.gz | tar xvz --strip-components=1 -C $SWIFT_HOME"
|
||||||
build_targets:
|
build_targets:
|
||||||
- "//..."
|
- "//..."
|
||||||
test_targets:
|
test_targets:
|
||||||
- "//..."
|
- "//..."
|
||||||
|
test_module_cpp:
|
||||||
|
platform: ubuntu2204
|
||||||
|
bazel: ${{ bazel }}
|
||||||
|
working_directory: tests/bazel_repository_test_dir
|
||||||
|
build_targets:
|
||||||
|
- "//..."
|
||||||
|
test_module_ts:
|
||||||
|
platform: ubuntu2204
|
||||||
|
bazel: ${{ bazel }}
|
||||||
|
working_directory: tests/ts/bazel_repository_test_dir
|
||||||
|
test_targets:
|
||||||
|
- "//..."
|
||||||
|
verify_macos:
|
||||||
|
platform: macos
|
||||||
|
bazel: ${{ bazel }}
|
||||||
|
xcode_version: "15.2"
|
||||||
|
build_targets:
|
||||||
|
- "//:flatbuffers"
|
||||||
|
- "//:flatc"
|
||||||
|
test_targets:
|
||||||
|
- "//tests:flatbuffers_test"
|
||||||
|
|||||||
5
.bazelignore
Normal file
5
.bazelignore
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
ts/node_modules
|
||||||
|
|
||||||
|
# Test workspaces
|
||||||
|
tests/bazel_repository_test_dir
|
||||||
|
tests/ts/bazel_repository_test_dir
|
||||||
18
.bazelrc
Normal file
18
.bazelrc
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# We cannot use "common" here because the "version" command doesn't support
|
||||||
|
# --deleted_packages. We need to specify it for both build and query instead.
|
||||||
|
build --deleted_packages=tests/bazel_repository_test_dir,tests/ts/bazel_repository_test_dir
|
||||||
|
query --deleted_packages=tests/bazel_repository_test_dir,tests/ts/bazel_repository_test_dir
|
||||||
|
# Point tools such as coursier (used in rules_jvm_external) to Bazel's internal JDK
|
||||||
|
# suggested in https://github.com/bazelbuild/rules_jvm_external/issues/445
|
||||||
|
common --repo_env=JAVA_HOME=../bazel_tools/jdk
|
||||||
|
common --action_env=JAVA_HOME=../bazel_tools/jdk
|
||||||
|
# Workaround "Error: need --enable_runfiles on Windows for to support rules_js"
|
||||||
|
common:windows --enable_runfiles
|
||||||
|
# Swift is not required on Windows
|
||||||
|
common:windows --deleted_packages=swift
|
||||||
|
# Ignore warnings in external dependencies
|
||||||
|
build --per_file_copt=external/.*@-Wno-everything --host_per_file_copt=external/.*@-Wno-everything
|
||||||
|
# Honor the setting of `skipLibCheck` in the tsconfig.json file.
|
||||||
|
common --@aspect_rules_ts//ts:skipLibCheck=honor_tsconfig
|
||||||
|
# Use "tsc" as the transpiler when ts_project has no `transpiler` set.
|
||||||
|
common --@aspect_rules_ts//ts:default_to_tsc_transpiler
|
||||||
11
.github/ISSUE_TEMPLATE/404-doc.md
vendored
Normal file
11
.github/ISSUE_TEMPLATE/404-doc.md
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
name: 404 Doc
|
||||||
|
about: To fix broken documentation links
|
||||||
|
title: "[Doc 404]"
|
||||||
|
labels: documentation
|
||||||
|
assignees: dbaileychess
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Target URL:
|
||||||
|
[Optional] Source Site:
|
||||||
2
.github/labeler.yml
vendored
2
.github/labeler.yml
vendored
@@ -48,11 +48,11 @@ java:
|
|||||||
kotlin:
|
kotlin:
|
||||||
- '**/*.kt'
|
- '**/*.kt'
|
||||||
- src/idl_gen_kotlin.cpp
|
- src/idl_gen_kotlin.cpp
|
||||||
|
- src/idl_gen_kotlin_kmp.cpp
|
||||||
|
|
||||||
lua:
|
lua:
|
||||||
- '**/*.lua'
|
- '**/*.lua'
|
||||||
- lua/**/*
|
- lua/**/*
|
||||||
- src/idl_gen_lua.cpp
|
|
||||||
- src/bfbs_gen_lua.cpp
|
- src/bfbs_gen_lua.cpp
|
||||||
|
|
||||||
lobster:
|
lobster:
|
||||||
|
|||||||
258
.github/workflows/build.yml
vendored
258
.github/workflows/build.yml
vendored
@@ -12,6 +12,9 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
|
schedule:
|
||||||
|
# Run daily at 4:45 A.M. to catch dependencies that break us.
|
||||||
|
- cron: '45 4 * * *'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-linux:
|
build-linux:
|
||||||
@@ -21,15 +24,15 @@ jobs:
|
|||||||
digests-gcc: ${{ steps.hash-gcc.outputs.hashes }}
|
digests-gcc: ${{ steps.hash-gcc.outputs.hashes }}
|
||||||
digests-clang: ${{ steps.hash-clang.outputs.hashes }}
|
digests-clang: ${{ steps.hash-clang.outputs.hashes }}
|
||||||
name: Build Linux
|
name: Build Linux
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
cxx: [g++-10, clang++-12]
|
cxx: [g++-13, clang++-18]
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: cmake
|
- name: cmake
|
||||||
run: CXX=${{ matrix.cxx }} cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON .
|
run: CXX=${{ matrix.cxx }} cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON -DFLATBUFFERS_STATIC_FLATC=ON .
|
||||||
- name: build
|
- name: build
|
||||||
run: make -j
|
run: make -j
|
||||||
- name: test
|
- name: test
|
||||||
@@ -38,12 +41,8 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
chmod +x flatc
|
chmod +x flatc
|
||||||
./flatc --version
|
./flatc --version
|
||||||
# - name: flatc tests
|
|
||||||
# run: |
|
|
||||||
# yarn global add esbuild
|
|
||||||
# python3 tests/flatc/main.py
|
|
||||||
- name: upload build artifacts
|
- name: upload build artifacts
|
||||||
uses: actions/upload-artifact@v1
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: Linux flatc binary ${{ matrix.cxx }}
|
name: Linux flatc binary ${{ matrix.cxx }}
|
||||||
path: flatc
|
path: flatc
|
||||||
@@ -57,36 +56,61 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
files: Linux.flatc.binary.${{ matrix.cxx }}.zip
|
files: Linux.flatc.binary.${{ matrix.cxx }}.zip
|
||||||
- name: Generate SLSA subjects - clang
|
- name: Generate SLSA subjects - clang
|
||||||
if: matrix.cxx == 'clang++-12' && startsWith(github.ref, 'refs/tags/')
|
if: matrix.cxx == 'clang++-18' && startsWith(github.ref, 'refs/tags/')
|
||||||
id: hash-clang
|
id: hash-clang
|
||||||
run: echo "::set-output name=hashes::$(sha256sum Linux.flatc.binary.${{ matrix.cxx }}.zip | base64 -w0)"
|
run: echo "hashes=$(sha256sum Linux.flatc.binary.${{ matrix.cxx }}.zip | base64 -w0)" >> $GITHUB_OUTPUT
|
||||||
- name: Generate SLSA subjects - gcc
|
- name: Generate SLSA subjects - gcc
|
||||||
if: matrix.cxx == 'g++-10' && startsWith(github.ref, 'refs/tags/')
|
if: matrix.cxx == 'g++-13' && startsWith(github.ref, 'refs/tags/')
|
||||||
id: hash-gcc
|
id: hash-gcc
|
||||||
run: echo "::set-output name=hashes::$(sha256sum Linux.flatc.binary.${{ matrix.cxx }}.zip | base64 -w0)"
|
run: echo "hashes=$(sha256sum Linux.flatc.binary.${{ matrix.cxx }}.zip | base64 -w0)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
build-linux-no-file-tests:
|
build-linux-no-file-tests:
|
||||||
name: Build Linux with -DFLATBUFFERS_NO_FILE_TESTS
|
name: Build Linux with -DFLATBUFFERS_NO_FILE_TESTS
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: cmake
|
- name: cmake
|
||||||
run: CXX=clang++-12 cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON -DFLATBUFFERS_CXX_FLAGS="-DFLATBUFFERS_NO_FILE_TESTS" .
|
run: CXX=clang++-18 cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON -DFLATBUFFERS_CXX_FLAGS="-DFLATBUFFERS_NO_FILE_TESTS" .
|
||||||
- name: build
|
- name: build
|
||||||
run: make -j
|
run: make -j
|
||||||
|
- name: test
|
||||||
|
run: ./flattests
|
||||||
|
|
||||||
|
build-linux-out-of-source:
|
||||||
|
name: Build Linux with out-of-source build location
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: make build directory
|
||||||
|
run: mkdir build
|
||||||
|
- name: cmake
|
||||||
|
working-directory: build
|
||||||
|
run: >
|
||||||
|
CXX=clang++-18 cmake .. -G "Unix Makefiles" -DFLATBUFFERS_STRICT_MODE=ON
|
||||||
|
-DFLATBUFFERS_BUILD_CPP17=ON -DFLATBUFFERS_CPP_STD=17
|
||||||
|
- name: build
|
||||||
|
working-directory: build
|
||||||
|
run: make -j
|
||||||
|
- name: test
|
||||||
|
working-directory: build
|
||||||
|
run: pwd && ./flattests
|
||||||
|
- name: test C++17
|
||||||
|
working-directory: build
|
||||||
|
run: ./flattests_cpp17
|
||||||
|
|
||||||
build-linux-cpp-std:
|
build-linux-cpp-std:
|
||||||
name: Build Linux C++
|
name: Build Linux C++
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
std: [11, 14, 17, 20, 23]
|
std: [11, 14, 17, 20, 23]
|
||||||
cxx: [g++-10, clang++-12]
|
cxx: [g++-13, clang++-18]
|
||||||
exclude:
|
exclude:
|
||||||
# GCC 10.3.0 doesn't support std 23
|
# Clang++15 10.3.0 stdlibc++ doesn't fully support std 23
|
||||||
- cxx: g++-10
|
- cxx: clang++-18
|
||||||
std: 23
|
std: 23
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: cmake
|
- name: cmake
|
||||||
@@ -103,7 +127,7 @@ jobs:
|
|||||||
if: matrix.std >= 17
|
if: matrix.std >= 17
|
||||||
run: ./flattests_cpp17
|
run: ./flattests_cpp17
|
||||||
|
|
||||||
build-windows-cpp-std:
|
build-cpp-std:
|
||||||
name: Build Windows C++
|
name: Build Windows C++
|
||||||
runs-on: windows-2019
|
runs-on: windows-2019
|
||||||
strategy:
|
strategy:
|
||||||
@@ -145,10 +169,8 @@ jobs:
|
|||||||
run: msbuild.exe FlatBuffers.sln /p:Configuration=Release /p:Platform=x64
|
run: msbuild.exe FlatBuffers.sln /p:Configuration=Release /p:Platform=x64
|
||||||
- name: test
|
- name: test
|
||||||
run: Release\flattests.exe
|
run: Release\flattests.exe
|
||||||
# - name: flatc tests
|
|
||||||
# run: python3 tests/flatc/main.py --flatc Release\flatc.exe
|
|
||||||
- name: upload build artifacts
|
- name: upload build artifacts
|
||||||
uses: actions/upload-artifact@v1
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: Windows flatc binary
|
name: Windows flatc binary
|
||||||
path: Release\flatc.exe
|
path: Release\flatc.exe
|
||||||
@@ -165,39 +187,11 @@ jobs:
|
|||||||
if: startsWith(github.ref, 'refs/tags/')
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
id: hash
|
id: hash
|
||||||
shell: bash
|
shell: bash
|
||||||
run: echo "::set-output name=hashes::$(sha256sum Windows.flatc.binary.zip | base64 -w0)"
|
run: echo "hashes=$(sha256sum Windows.flatc.binary.zip | base64 -w0)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
build-windows-2017:
|
|
||||||
name: Build Windows 2017
|
|
||||||
runs-on: windows-2019
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Add msbuild to PATH
|
|
||||||
uses: microsoft/setup-msbuild@v1.1
|
|
||||||
- name: cmake
|
|
||||||
run: cmake -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON .
|
|
||||||
- name: build tool version 15 (VS 2017)
|
|
||||||
run: msbuild.exe FlatBuffers.sln /p:Configuration=Release /p:Platform=x64 /p:VisualStudioVersion=15.0
|
|
||||||
- name: test
|
|
||||||
run: Release\flattests.exe
|
|
||||||
|
|
||||||
build-windows-2015:
|
|
||||||
name: Build Windows 2015
|
|
||||||
runs-on: windows-2019
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Add msbuild to PATH
|
|
||||||
uses: microsoft/setup-msbuild@v1.1
|
|
||||||
- name: cmake
|
|
||||||
run: cmake -G "Visual Studio 14 2015" -A x64 -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON .
|
|
||||||
- name: build tool version 14 (VS 2015)
|
|
||||||
run: msbuild.exe FlatBuffers.sln /p:Configuration=Release /p:Platform=x64 /p:VisualStudioVersion=14.0
|
|
||||||
- name: test
|
|
||||||
run: Release\flattests.exe
|
|
||||||
|
|
||||||
build-dotnet-windows:
|
build-dotnet-windows:
|
||||||
name: Build .NET Windows
|
name: Build .NET Windows
|
||||||
runs-on: windows-2019
|
runs-on: windows-2022-64core
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
configuration: [
|
configuration: [
|
||||||
@@ -209,19 +203,24 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: Setup .NET Core SDK
|
- name: Setup .NET Core SDK
|
||||||
uses: actions/setup-dotnet@v3
|
uses: actions/setup-dotnet@v4.2.0
|
||||||
with:
|
with:
|
||||||
dotnet-version: '3.1.x'
|
dotnet-version: '8.0.x'
|
||||||
- name: Build
|
- name: Build
|
||||||
run: |
|
run: |
|
||||||
cd tests\FlatBuffers.Test
|
cd tests\FlatBuffers.Test
|
||||||
dotnet new sln --force --name FlatBuffers.Core.Test
|
dotnet new sln --force --name FlatBuffers.Test
|
||||||
dotnet sln FlatBuffers.Core.Test.sln add FlatBuffers.Core.Test.csproj
|
dotnet sln FlatBuffers.Test.sln add FlatBuffers.Test.csproj
|
||||||
dotnet build -c Release ${{matrix.configuration}} -o out FlatBuffers.Core.Test.sln
|
dotnet build -c Release ${{matrix.configuration}} FlatBuffers.Test.sln
|
||||||
- name: Run
|
- name: Run net6.0
|
||||||
run: |
|
run: |
|
||||||
cd tests\FlatBuffers.Test
|
cd tests\FlatBuffers.Test\bin\Release\net6.0
|
||||||
out\FlatBuffers.Core.Test.exe
|
dir
|
||||||
|
.\FlatBuffers.Test.exe
|
||||||
|
- name: Run net8.0
|
||||||
|
run: |
|
||||||
|
cd tests\FlatBuffers.Test\bin\Release\net8.0
|
||||||
|
.\FlatBuffers.Test.exe
|
||||||
|
|
||||||
build-mac-intel:
|
build-mac-intel:
|
||||||
permissions:
|
permissions:
|
||||||
@@ -229,11 +228,11 @@ jobs:
|
|||||||
outputs:
|
outputs:
|
||||||
digests: ${{ steps.hash.outputs.hashes }}
|
digests: ${{ steps.hash.outputs.hashes }}
|
||||||
name: Build Mac (for Intel)
|
name: Build Mac (for Intel)
|
||||||
runs-on: macos-latest
|
runs-on: macos-latest-large
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: cmake
|
- name: cmake
|
||||||
run: cmake -G "Xcode" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON .
|
run: cmake -G "Xcode" -DCMAKE_OSX_ARCHITECTURES="x86_64" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON .
|
||||||
- name: build
|
- name: build
|
||||||
run: xcodebuild -toolchain clang -configuration Release -target flattests
|
run: xcodebuild -toolchain clang -configuration Release -target flattests
|
||||||
- name: check that the binary is x86_64
|
- name: check that the binary is x86_64
|
||||||
@@ -247,12 +246,10 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
chmod +x Release/flatc
|
chmod +x Release/flatc
|
||||||
Release/flatc --version
|
Release/flatc --version
|
||||||
# - name: flatc tests
|
|
||||||
# run: python3 tests/flatc/main.py --flatc Release/flatc
|
|
||||||
- name: upload build artifacts
|
- name: upload build artifacts
|
||||||
uses: actions/upload-artifact@v1
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: Mac flatc binary
|
name: Mac flatc binary Intel
|
||||||
path: Release/flatc
|
path: Release/flatc
|
||||||
# Below if only for release.
|
# Below if only for release.
|
||||||
- name: Zip file
|
- name: Zip file
|
||||||
@@ -266,7 +263,7 @@ jobs:
|
|||||||
- name: Generate SLSA subjects
|
- name: Generate SLSA subjects
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
id: hash
|
id: hash
|
||||||
run: echo "::set-output name=hashes::$(shasum -a 256 MacIntel.flatc.binary.zip | base64)"
|
run: echo "hashes=$(shasum -a 256 MacIntel.flatc.binary.zip | base64)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
build-mac-universal:
|
build-mac-universal:
|
||||||
permissions:
|
permissions:
|
||||||
@@ -293,9 +290,9 @@ jobs:
|
|||||||
chmod +x Release/flatc
|
chmod +x Release/flatc
|
||||||
Release/flatc --version
|
Release/flatc --version
|
||||||
- name: upload build artifacts
|
- name: upload build artifacts
|
||||||
uses: actions/upload-artifact@v1
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: Mac flatc binary
|
name: Mac flatc binary Universal
|
||||||
path: Release/flatc
|
path: Release/flatc
|
||||||
# Below if only for release.
|
# Below if only for release.
|
||||||
- name: Zip file
|
- name: Zip file
|
||||||
@@ -309,11 +306,11 @@ jobs:
|
|||||||
- name: Generate SLSA subjects
|
- name: Generate SLSA subjects
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
id: hash
|
id: hash
|
||||||
run: echo "::set-output name=hashes::$(shasum -a 256 Mac.flatc.binary.zip | base64)"
|
run: echo "hashes=$(shasum -a 256 Mac.flatc.binary.zip | base64)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
build-android:
|
build-android:
|
||||||
name: Build Android (on Linux)
|
name: Build Android (on Linux)
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: set up Java
|
- name: set up Java
|
||||||
@@ -332,10 +329,10 @@ jobs:
|
|||||||
|
|
||||||
build-generator:
|
build-generator:
|
||||||
name: Check Generated Code
|
name: Check Generated Code
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
cxx: [g++-10, clang++-12]
|
cxx: [g++-13, clang++-18]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: cmake
|
- name: cmake
|
||||||
@@ -363,10 +360,10 @@ jobs:
|
|||||||
|
|
||||||
build-benchmarks:
|
build-benchmarks:
|
||||||
name: Build Benchmarks (on Linux)
|
name: Build Benchmarks (on Linux)
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
cxx: [g++-10]
|
cxx: [g++-13]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: cmake
|
- name: cmake
|
||||||
@@ -374,14 +371,14 @@ jobs:
|
|||||||
- name: Run benchmarks
|
- name: Run benchmarks
|
||||||
run: ./flatbenchmark --benchmark_repetitions=5 --benchmark_display_aggregates_only=true --benchmark_out_format=console --benchmark_out=benchmarks/results_${{matrix.cxx}}
|
run: ./flatbenchmark --benchmark_repetitions=5 --benchmark_display_aggregates_only=true --benchmark_out_format=console --benchmark_out=benchmarks/results_${{matrix.cxx}}
|
||||||
- name: Upload benchmarks results
|
- name: Upload benchmarks results
|
||||||
uses: actions/upload-artifact@v1
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: Linux flatbenchmark results ${{matrix.cxx}}
|
name: Linux flatbenchmark results ${{matrix.cxx}}
|
||||||
path: benchmarks/results_${{matrix.cxx}}
|
path: benchmarks/results_${{matrix.cxx}}
|
||||||
|
|
||||||
build-java:
|
build-java:
|
||||||
name: Build Java
|
name: Build Java
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: test
|
- name: test
|
||||||
@@ -390,22 +387,34 @@ jobs:
|
|||||||
|
|
||||||
build-kotlin-macos:
|
build-kotlin-macos:
|
||||||
name: Build Kotlin MacOS
|
name: Build Kotlin MacOS
|
||||||
runs-on: macos-latest
|
runs-on: macos-13
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
# Force Xcode 14.3 since Xcode 15 doesnt support older versions of
|
||||||
|
# kotlin. For Xcode 15, kotlin should be bumpped to 1.9.10
|
||||||
|
# https://stackoverflow.com/a/77150623
|
||||||
|
# For now, run with macos-13 which has this 14.3 installed:
|
||||||
|
# https://github.com/actions/runner-images/blob/main/images/macos/macos-13-Readme.md#xcode
|
||||||
|
- name: Set up Xcode version
|
||||||
|
run: sudo xcode-select -s /Applications/Xcode_14.3.app/Contents/Developer
|
||||||
- uses: gradle/wrapper-validation-action@v1.0.5
|
- uses: gradle/wrapper-validation-action@v1.0.5
|
||||||
- uses: actions/setup-java@v3
|
- uses: actions/setup-java@v3
|
||||||
with:
|
with:
|
||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
java-version: '11'
|
java-version: '11'
|
||||||
|
- name: Build flatc
|
||||||
|
run: |
|
||||||
|
cmake -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF .
|
||||||
|
make -j
|
||||||
|
echo "${PWD}" >> $GITHUB_PATH
|
||||||
- name: Build
|
- name: Build
|
||||||
working-directory: kotlin
|
working-directory: kotlin
|
||||||
run: ./gradlew clean iosX64Test macosX64Test
|
run: ./gradlew clean iosSimulatorArm64Test macosX64Test macosArm64Test
|
||||||
|
|
||||||
build-kotlin-linux:
|
build-kotlin-linux:
|
||||||
name: Build Kotlin Linux
|
name: Build Kotlin Linux
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
@@ -414,6 +423,11 @@ jobs:
|
|||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
java-version: '11'
|
java-version: '11'
|
||||||
- uses: gradle/wrapper-validation-action@v1.0.5
|
- uses: gradle/wrapper-validation-action@v1.0.5
|
||||||
|
- name: Build flatc
|
||||||
|
run: |
|
||||||
|
cmake -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF .
|
||||||
|
make -j
|
||||||
|
echo "${PWD}" >> $GITHUB_PATH
|
||||||
- name: Build
|
- name: Build
|
||||||
working-directory: kotlin
|
working-directory: kotlin
|
||||||
# we are using docker's version of gradle
|
# we are using docker's version of gradle
|
||||||
@@ -421,27 +435,39 @@ jobs:
|
|||||||
# gradlew
|
# gradlew
|
||||||
run: gradle jvmMainClasses jvmTest jsTest jsBrowserTest
|
run: gradle jvmMainClasses jvmTest jsTest jsBrowserTest
|
||||||
|
|
||||||
build-rust:
|
build-rust-linux:
|
||||||
name: Build Rust
|
name: Build Rust Linux
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: test
|
- name: test
|
||||||
working-directory: tests
|
working-directory: tests
|
||||||
run: bash RustTest.sh
|
run: bash RustTest.sh
|
||||||
|
|
||||||
build-python:
|
build-rust-windows:
|
||||||
name: Build Python
|
name: Build Rust Windows
|
||||||
runs-on: ubuntu-latest
|
runs-on: windows-2022-64core
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
- name: test
|
||||||
|
working-directory: tests
|
||||||
|
run: ./RustTest.bat
|
||||||
|
|
||||||
|
build-python:
|
||||||
|
name: Build Python
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: flatc
|
||||||
|
# FIXME: make test script not rely on flatc
|
||||||
|
run: cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_INSTALL=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF -DFLATBUFFERS_STRICT_MODE=ON . && make -j
|
||||||
- name: test
|
- name: test
|
||||||
working-directory: tests
|
working-directory: tests
|
||||||
run: bash PythonTest.sh
|
run: bash PythonTest.sh
|
||||||
|
|
||||||
build-go:
|
build-go:
|
||||||
name: Build Go
|
name: Build Go
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: flatc
|
- name: flatc
|
||||||
@@ -453,7 +479,7 @@ jobs:
|
|||||||
|
|
||||||
build-php:
|
build-php:
|
||||||
name: Build PHP
|
name: Build PHP
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: flatc
|
- name: flatc
|
||||||
@@ -467,9 +493,18 @@ jobs:
|
|||||||
|
|
||||||
build-swift:
|
build-swift:
|
||||||
name: Build Swift
|
name: Build Swift
|
||||||
runs-on: ubuntu-latest
|
strategy:
|
||||||
|
matrix:
|
||||||
|
swift: ["5.8", "5.9", "5.10"]
|
||||||
|
# Only 22.04 has swift at the moment https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2204-Readme.md?plain=1#L30
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
- uses: swift-actions/setup-swift@v2
|
||||||
|
with:
|
||||||
|
swift-version: ${{ matrix.swift }}
|
||||||
|
- name: Get swift version
|
||||||
|
run: swift --version
|
||||||
- name: test
|
- name: test
|
||||||
working-directory: tests/swift/tests
|
working-directory: tests/swift/tests
|
||||||
run: |
|
run: |
|
||||||
@@ -478,20 +513,22 @@ jobs:
|
|||||||
|
|
||||||
build-swift-wasm:
|
build-swift-wasm:
|
||||||
name: Build Swift Wasm
|
name: Build Swift Wasm
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
container:
|
container:
|
||||||
image: ghcr.io/swiftwasm/carton:0.15.3
|
image: ghcr.io/swiftwasm/carton:0.20.1
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: Setup Wasmer
|
- uses: bytecodealliance/actions/wasmtime/setup@v1
|
||||||
uses: wasmerio/setup-wasmer@v2
|
- uses: swiftwasm/setup-swiftwasm@v1
|
||||||
- name: Test
|
with:
|
||||||
working-directory: tests/swift/Wasm.tests
|
swift-version: "wasm-6.0.2-RELEASE"
|
||||||
run: carton test
|
- name: Test
|
||||||
|
working-directory: tests/swift/Wasm.tests
|
||||||
|
run: swift run carton test
|
||||||
|
|
||||||
build-ts:
|
build-ts:
|
||||||
name: Build TS
|
name: Build TS
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: flatc
|
- name: flatc
|
||||||
@@ -509,7 +546,7 @@ jobs:
|
|||||||
|
|
||||||
build-dart:
|
build-dart:
|
||||||
name: Build Dart
|
name: Build Dart
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- uses: dart-lang/setup-dart@v1
|
- uses: dart-lang/setup-dart@v1
|
||||||
@@ -524,7 +561,7 @@ jobs:
|
|||||||
|
|
||||||
build-nim:
|
build-nim:
|
||||||
name: Build Nim
|
name: Build Nim
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: flatc
|
- name: flatc
|
||||||
@@ -533,17 +570,32 @@ jobs:
|
|||||||
- uses: jiro4989/setup-nim-action@v1
|
- uses: jiro4989/setup-nim-action@v1
|
||||||
- name: install library
|
- name: install library
|
||||||
working-directory: nim
|
working-directory: nim
|
||||||
run: nimble -y develop
|
run: nimble -y develop && nimble install
|
||||||
- name: test
|
- name: test
|
||||||
working-directory: tests/nim
|
working-directory: tests/nim
|
||||||
run: python3 testnim.py
|
run: python3 testnim.py
|
||||||
|
|
||||||
|
bazel:
|
||||||
|
name: Bazel
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: bazel build
|
||||||
|
run: >
|
||||||
|
bazel build
|
||||||
|
//:flatc
|
||||||
|
//:flatbuffers
|
||||||
|
- name: bazel test
|
||||||
|
run: >
|
||||||
|
bazel test
|
||||||
|
//tests:flatbuffers_test
|
||||||
|
|
||||||
release-digests:
|
release-digests:
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
needs: [build-linux, build-windows, build-mac-intel, build-mac-universal]
|
needs: [build-linux, build-windows, build-mac-intel, build-mac-universal]
|
||||||
outputs:
|
outputs:
|
||||||
digests: ${{ steps.hash.outputs.digests }}
|
digests: ${{ steps.hash.outputs.digests }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- name: Merge results
|
- name: Merge results
|
||||||
id: hash
|
id: hash
|
||||||
@@ -560,7 +612,7 @@ jobs:
|
|||||||
echo "$MAC_DIGESTS" | base64 -d >> checksums.txt
|
echo "$MAC_DIGESTS" | base64 -d >> checksums.txt
|
||||||
echo "$MACINTEL_DIGESTS" | base64 -d >> checksums.txt
|
echo "$MACINTEL_DIGESTS" | base64 -d >> checksums.txt
|
||||||
echo "$WINDOWS_DIGESTS" | base64 -d >> checksums.txt
|
echo "$WINDOWS_DIGESTS" | base64 -d >> checksums.txt
|
||||||
echo "::set-output name=digests::$(cat checksums.txt | base64 -w0)"
|
echo "digests=$(cat checksums.txt | base64 -w0)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
provenance:
|
provenance:
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
|
|||||||
71
.github/workflows/codeql.yml
vendored
71
.github/workflows/codeql.yml
vendored
@@ -1,71 +0,0 @@
|
|||||||
# For most projects, this workflow file will not need changing; you simply need
|
|
||||||
# to commit it to your repository.
|
|
||||||
#
|
|
||||||
# You may wish to alter this file to override the set of languages analyzed,
|
|
||||||
# or to provide custom queries or build logic.
|
|
||||||
#
|
|
||||||
# ******** NOTE ********
|
|
||||||
# We have attempted to detect the languages in your repository. Please check
|
|
||||||
# the `language` matrix defined below to confirm you have the correct set of
|
|
||||||
# supported CodeQL languages.
|
|
||||||
#
|
|
||||||
name: "CodeQL"
|
|
||||||
permissions: read-all
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ master ]
|
|
||||||
pull_request:
|
|
||||||
# The branches below must be a subset of the branches above
|
|
||||||
branches: [ master ]
|
|
||||||
schedule:
|
|
||||||
- cron: '16 20 * * 0'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
analyze:
|
|
||||||
name: Analyze
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
actions: read
|
|
||||||
contents: read
|
|
||||||
security-events: write
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
language: [ 'cpp' ]
|
|
||||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
|
||||||
# Learn more about CodeQL language support at https://git.io/codeql-language-support
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
|
||||||
- name: Initialize CodeQL
|
|
||||||
uses: github/codeql-action/init@v2
|
|
||||||
with:
|
|
||||||
languages: ${{ matrix.language }}
|
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
|
||||||
# By default, queries listed here will override any specified in a config file.
|
|
||||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
|
||||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
|
||||||
|
|
||||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
|
||||||
# If this step fails, then you should remove it and run the build manually (see below)
|
|
||||||
# - name: Autobuild
|
|
||||||
# uses: github/codeql-action/autobuild@v2
|
|
||||||
|
|
||||||
# ℹ️ Command-line programs to run using the OS shell.
|
|
||||||
# 📚 https://git.io/JvXDl
|
|
||||||
|
|
||||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
|
||||||
# and modify them (or add more) to build your code if your project
|
|
||||||
# uses a compiled language
|
|
||||||
|
|
||||||
- run: |
|
|
||||||
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON .
|
|
||||||
make -j
|
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
|
||||||
uses: github/codeql-action/analyze@v2
|
|
||||||
36
.github/workflows/docs.yml
vendored
Normal file
36
.github/workflows/docs.yml
vendored
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
name: docs
|
||||||
|
on:
|
||||||
|
# For manual pushes.
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
# Pushes to main that touch the documentation directory.
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
paths:
|
||||||
|
- 'docs/**'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Configure Git Credentials
|
||||||
|
run: |
|
||||||
|
git config user.name github-actions[bot]
|
||||||
|
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
|
||||||
|
- uses: actions/setup-python@v5
|
||||||
|
with:
|
||||||
|
python-version: 3.x
|
||||||
|
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
|
||||||
|
- uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
key: mkdocs-material-${{ env.cache_id }}
|
||||||
|
path: .cache
|
||||||
|
restore-keys: |
|
||||||
|
mkdocs-material-
|
||||||
|
- run: pip install mkdocs-material
|
||||||
|
- run: pip install mkdocs-redirects
|
||||||
|
- run: mkdocs gh-deploy --force -f docs/mkdocs.yml
|
||||||
35
.github/workflows/extrabuild.yml
vendored
35
.github/workflows/extrabuild.yml
vendored
@@ -1,35 +0,0 @@
|
|||||||
name: Build and unit tests that are more time consuming
|
|
||||||
permissions: read-all
|
|
||||||
|
|
||||||
on:
|
|
||||||
# For manual tests.
|
|
||||||
workflow_dispatch:
|
|
||||||
pull_request:
|
|
||||||
types:
|
|
||||||
- closed
|
|
||||||
schedule:
|
|
||||||
- cron: "30 20 * * *"
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-linux-s390x:
|
|
||||||
name: Build Linux on s390x arch and run unit tests
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- uses: uraimo/run-on-arch-action@v2
|
|
||||||
name: Run commands
|
|
||||||
id: runcmd
|
|
||||||
with:
|
|
||||||
arch: s390x
|
|
||||||
distro: ubuntu_latest
|
|
||||||
install: |
|
|
||||||
apt-get update -q -y
|
|
||||||
apt-get -y install cmake
|
|
||||||
apt-get -y install make
|
|
||||||
apt-get -y install g++
|
|
||||||
run: |
|
|
||||||
lscpu | grep Endian
|
|
||||||
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release
|
|
||||||
make -j
|
|
||||||
./flattests
|
|
||||||
|
|
||||||
2
.github/workflows/label.yml
vendored
2
.github/workflows/label.yml
vendored
@@ -19,6 +19,6 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/labeler@main
|
- uses: actions/labeler@ee18d5d34efd9b4f7dafdb0e363cb688eb438044 # 4.1.0
|
||||||
with:
|
with:
|
||||||
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
2
.github/workflows/main.yml
vendored
2
.github/workflows/main.yml
vendored
@@ -27,7 +27,7 @@ jobs:
|
|||||||
language: c++
|
language: c++
|
||||||
fuzz-seconds: 60
|
fuzz-seconds: 60
|
||||||
- name: Upload Crash
|
- name: Upload Crash
|
||||||
uses: actions/upload-artifact@v1
|
uses: actions/upload-artifact@v4
|
||||||
if: failure() && steps.build.outcome == 'success'
|
if: failure() && steps.build.outcome == 'success'
|
||||||
with:
|
with:
|
||||||
name: artifacts
|
name: artifacts
|
||||||
|
|||||||
58
.github/workflows/release.yml
vendored
58
.github/workflows/release.yml
vendored
@@ -5,7 +5,7 @@ on:
|
|||||||
# For manual tests.
|
# For manual tests.
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
release:
|
release:
|
||||||
types: [created]
|
types: [published]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
publish-npm:
|
publish-npm:
|
||||||
@@ -15,7 +15,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- uses: actions/setup-node@v3
|
- uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: '16.x'
|
node-version: '20.x'
|
||||||
registry-url: 'https://registry.npmjs.org'
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
|
||||||
- run: npm publish
|
- run: npm publish
|
||||||
@@ -60,8 +60,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- uses: actions/setup-dotnet@v3
|
- uses: actions/setup-dotnet@v3
|
||||||
with:
|
with:
|
||||||
dotnet-version: '6.0.x'
|
dotnet-version: '8.0.x'
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: |
|
run: |
|
||||||
dotnet build Google.FlatBuffers.csproj -c Release
|
dotnet build Google.FlatBuffers.csproj -c Release
|
||||||
@@ -98,9 +97,56 @@ jobs:
|
|||||||
- name: Publish Maven
|
- name: Publish Maven
|
||||||
run: mvn --batch-mode clean deploy
|
run: mvn --batch-mode clean deploy
|
||||||
env:
|
env:
|
||||||
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
|
OSSRH_USERNAME: ${{ secrets.OSSRH_USER_V2 }}
|
||||||
OSSRH_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
|
OSSRH_PASSWORD: ${{ secrets.OSSRH_TOKEN_V2 }}
|
||||||
|
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
|
||||||
|
|
||||||
|
publish-maven-kotlin:
|
||||||
|
name: Publish Maven - Kotlin
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: ./kotlin
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Set up Maven Central Repository
|
||||||
|
uses: actions/setup-java@v3
|
||||||
|
with:
|
||||||
|
java-version: '11'
|
||||||
|
distribution: 'adopt'
|
||||||
|
cache: 'maven'
|
||||||
|
server-id: ossrh
|
||||||
|
server-username: OSSRH_USERNAME
|
||||||
|
server-password: OSSRH_PASSWORD
|
||||||
|
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }}
|
||||||
|
gpg-passphrase: MAVEN_GPG_PASSPHRASE # this needs to be an env var
|
||||||
|
|
||||||
|
- name: Publish Kotlin Library on Maven
|
||||||
|
run: ./gradlew publishAllPublicationsToSonatypeRepository
|
||||||
|
env:
|
||||||
|
OSSRH_USERNAME: ${{ secrets.OSSRH_USER_V2 }}
|
||||||
|
OSSRH_PASSWORD: ${{ secrets.OSSRH_TOKEN_V2 }}
|
||||||
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
|
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
|
||||||
|
|
||||||
|
|
||||||
|
publish-crates:
|
||||||
|
name: Publish crates.io
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: stable
|
||||||
|
override: true
|
||||||
|
|
||||||
|
- name: Publish Flatbuffers
|
||||||
|
uses: katyo/publish-crates@v2
|
||||||
|
with:
|
||||||
|
path: ./rust/flatbuffers
|
||||||
|
registry-token: ${{ secrets.CARGO_TOKEN }}
|
||||||
|
|
||||||
|
- name: Publish Flexbuffers
|
||||||
|
uses: katyo/publish-crates@v2
|
||||||
|
with:
|
||||||
|
path: ./rust/flexbuffers
|
||||||
|
registry-token: ${{ secrets.CARGO_TOKEN }}
|
||||||
|
|||||||
55
.github/workflows/scorecards.yml
vendored
55
.github/workflows/scorecards.yml
vendored
@@ -1,55 +0,0 @@
|
|||||||
name: Scorecards supply-chain security
|
|
||||||
on:
|
|
||||||
# Only the default branch is supported.
|
|
||||||
branch_protection_rule:
|
|
||||||
schedule:
|
|
||||||
- cron: '21 2 * * 5'
|
|
||||||
push:
|
|
||||||
branches: [ master ]
|
|
||||||
|
|
||||||
# Declare default permissions as read only.
|
|
||||||
permissions: read-all
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
analysis:
|
|
||||||
name: Scorecards analysis
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
# Needed to upload the results to code-scanning dashboard.
|
|
||||||
security-events: write
|
|
||||||
actions: read
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: "Checkout code"
|
|
||||||
uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3.0.0
|
|
||||||
with:
|
|
||||||
persist-credentials: false
|
|
||||||
|
|
||||||
- name: "Run analysis"
|
|
||||||
uses: ossf/scorecard-action@ce330fde6b1a5c9c75b417e7efc510b822a35564 # v1.1.2
|
|
||||||
with:
|
|
||||||
results_file: results.sarif
|
|
||||||
results_format: sarif
|
|
||||||
# Read-only PAT token. To create it,
|
|
||||||
# follow the steps in https://github.com/ossf/scorecard-action#pat-token-creation.
|
|
||||||
repo_token: ${{ secrets.SCORECARD_READ_TOKEN }}
|
|
||||||
# Publish the results to enable scorecard badges. For more details, see
|
|
||||||
# https://github.com/ossf/scorecard-action#publishing-results.
|
|
||||||
# For private repositories, `publish_results` will automatically be set to `false`,
|
|
||||||
# regardless of the value entered here.
|
|
||||||
publish_results: true
|
|
||||||
|
|
||||||
# Upload the results as artifacts (optional).
|
|
||||||
- name: "Upload artifact"
|
|
||||||
uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0
|
|
||||||
with:
|
|
||||||
name: SARIF file
|
|
||||||
path: results.sarif
|
|
||||||
retention-days: 5
|
|
||||||
|
|
||||||
# Upload the results to GitHub's code scanning dashboard.
|
|
||||||
- name: "Upload to code-scanning"
|
|
||||||
uses: github/codeql-action/upload-sarif@5f532563584d71fdef14ee64d17bafb34f751ce5 # v1.0.26
|
|
||||||
with:
|
|
||||||
sarif_file: results.sarif
|
|
||||||
33
.github/workflows/stale.yml
vendored
33
.github/workflows/stale.yml
vendored
@@ -1,9 +1,13 @@
|
|||||||
name: Mark stale issues and pull requests
|
name: Mark stale issues and pull requests
|
||||||
permissions: read-all
|
permissions:
|
||||||
|
issues: write
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
# For manual tests.
|
||||||
|
workflow_dispatch:
|
||||||
schedule:
|
schedule:
|
||||||
- cron: "30 20 * * *"
|
- cron: "30 20 * * *"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
stale:
|
stale:
|
||||||
@@ -11,14 +15,23 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/stale@v4.0.0
|
- uses: actions/stale@v7.0.0
|
||||||
with:
|
with:
|
||||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
stale-pr-message: 'This pull request is stale because it has been open 6 months with no activity. Please comment or this will be closed in 14 days.'
|
operations-per-run: 500
|
||||||
stale-issue-message: 'This issue is stale because it has been open 6 months with no activity. Please comment or this will be closed in 14 days.'
|
|
||||||
days-before-stale: 182 # 6 months
|
|
||||||
days-before-close: 14
|
|
||||||
operations-per-run: 1500
|
|
||||||
exempt-issue-labels: not-stale
|
|
||||||
exempt-pr-labels: not-stale
|
|
||||||
exempt-all-milestones: true
|
exempt-all-milestones: true
|
||||||
|
remove-stale-when-updated: true
|
||||||
|
|
||||||
|
stale-issue-message: 'This issue is stale because it has been open 6 months with no activity. Please comment or label `not-stale`, or this will be closed in 14 days.'
|
||||||
|
close-issue-message: 'This issue was automatically closed due to no activity for 6 months plus the 14 day notice period.'
|
||||||
|
days-before-issue-stale: 182 # 6 months
|
||||||
|
days-before-issue-close: 14 # 2 weeks
|
||||||
|
exempt-issue-labels: not-stale
|
||||||
|
|
||||||
|
stale-pr-message: 'This pull request is stale because it has been open 6 months with no activity. Please comment or label `not-stale`, or this will be closed in 14 days.'
|
||||||
|
close-pr-message: 'This pull request was automatically closed due to no activity for 6 months plus the 14 day notice period.'
|
||||||
|
days-before-pr-stale: 182 # 6 months
|
||||||
|
days-before-pr-close: 14 # 2 week
|
||||||
|
exempt-pr-labels: not-stale
|
||||||
|
exempt-draft-pr: false
|
||||||
|
|
||||||
|
|||||||
6
.gitignore
vendored
6
.gitignore
vendored
@@ -151,3 +151,9 @@ flatbuffers.pc
|
|||||||
# https://cmake.org/cmake/help/latest/module/FetchContent.html#variable:FETCHCONTENT_BASE_DIR
|
# https://cmake.org/cmake/help/latest/module/FetchContent.html#variable:FETCHCONTENT_BASE_DIR
|
||||||
cmake-build-debug/
|
cmake-build-debug/
|
||||||
_deps/
|
_deps/
|
||||||
|
**/.gradle/**
|
||||||
|
kotlin/**/generated
|
||||||
|
MODULE.bazel.lock
|
||||||
|
|
||||||
|
# Ignore the generated docs
|
||||||
|
docs/site
|
||||||
33
BUILD.bazel
33
BUILD.bazel
@@ -25,6 +25,28 @@ config_setting(
|
|||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "distribution",
|
||||||
|
srcs = [
|
||||||
|
".bazelignore",
|
||||||
|
".npmrc",
|
||||||
|
"BUILD.bazel",
|
||||||
|
"MODULE.bazel",
|
||||||
|
"build_defs.bzl",
|
||||||
|
"package.json",
|
||||||
|
"pnpm-lock.yaml",
|
||||||
|
"typescript.bzl",
|
||||||
|
"//grpc/src/compiler:distribution",
|
||||||
|
"//include/codegen:distribution",
|
||||||
|
"//reflection:distribution",
|
||||||
|
"//src:distribution",
|
||||||
|
"//ts:distribution",
|
||||||
|
] + glob([
|
||||||
|
"include/flatbuffers/*.h",
|
||||||
|
]),
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
|
|
||||||
# Public flatc library to compile flatbuffer files at runtime.
|
# Public flatc library to compile flatbuffer files at runtime.
|
||||||
cc_library(
|
cc_library(
|
||||||
name = "flatbuffers",
|
name = "flatbuffers",
|
||||||
@@ -47,6 +69,7 @@ filegroup(
|
|||||||
"include/flatbuffers/code_generators.h",
|
"include/flatbuffers/code_generators.h",
|
||||||
"include/flatbuffers/default_allocator.h",
|
"include/flatbuffers/default_allocator.h",
|
||||||
"include/flatbuffers/detached_buffer.h",
|
"include/flatbuffers/detached_buffer.h",
|
||||||
|
"include/flatbuffers/file_manager.h",
|
||||||
"include/flatbuffers/flatbuffer_builder.h",
|
"include/flatbuffers/flatbuffer_builder.h",
|
||||||
"include/flatbuffers/flatbuffers.h",
|
"include/flatbuffers/flatbuffers.h",
|
||||||
"include/flatbuffers/flex_flat_util.h",
|
"include/flatbuffers/flex_flat_util.h",
|
||||||
@@ -98,15 +121,7 @@ filegroup(
|
|||||||
# Library used by flatbuffer_cc_library rules.
|
# Library used by flatbuffer_cc_library rules.
|
||||||
cc_library(
|
cc_library(
|
||||||
name = "runtime_cc",
|
name = "runtime_cc",
|
||||||
hdrs = [
|
hdrs = ["//:public_headers"],
|
||||||
"include/flatbuffers/base.h",
|
|
||||||
"include/flatbuffers/flatbuffers.h",
|
|
||||||
"include/flatbuffers/flexbuffers.h",
|
|
||||||
"include/flatbuffers/stl_emulation.h",
|
|
||||||
"include/flatbuffers/util.h",
|
|
||||||
"include/flatbuffers/vector.h",
|
|
||||||
"include/flatbuffers/verifier.h",
|
|
||||||
],
|
|
||||||
linkstatic = 1,
|
linkstatic = 1,
|
||||||
strip_include_prefix = "/include",
|
strip_include_prefix = "/include",
|
||||||
)
|
)
|
||||||
|
|||||||
76
CHANGELOG.md
76
CHANGELOG.md
@@ -4,6 +4,82 @@ All major or breaking changes will be documented in this file, as well as any
|
|||||||
new features that should be highlighted. Minor fixes or improvements are not
|
new features that should be highlighted. Minor fixes or improvements are not
|
||||||
necessarily listed.
|
necessarily listed.
|
||||||
|
|
||||||
|
## [25.1.24] (January 24 2024)(https://github.com/google/flatbuffers/releases/tag/v25.1.24))
|
||||||
|
|
||||||
|
* Mostly related to bazel build support.
|
||||||
|
* Min bazel supported is now 7 or higher, as WORKSPACE files are removed (#8509)
|
||||||
|
* Minor C++ codegen fix removing extra semicolon (#8488)
|
||||||
|
|
||||||
|
## [25.1.21] (January 21 2025)(https://github.com/google/flatbuffers/releases/tag/v25.1.21)
|
||||||
|
|
||||||
|
* Rust Full Reflection (#8102)
|
||||||
|
* Mostly documentation updates hosted at https://flatbuffers.dev
|
||||||
|
|
||||||
|
## [24.3.25] (March 25 2024)(https://github.com/google/flatbuffers/releases/tag/v24.3.25)
|
||||||
|
|
||||||
|
* Fixed license metadata parsing (#8253)
|
||||||
|
* [C++] Allow string_view in `LookUpByKey` in addition to null-terminated c-style strings (#8203)
|
||||||
|
|
||||||
|
## [24.3.7] (March 7 2024)(https://github.com/google/flatbuffers/releases/tag/v24.3.7)
|
||||||
|
|
||||||
|
* Just to fix some of the CI build issues from the 24.3.6 release.
|
||||||
|
|
||||||
|
## [24.3.6] (March 6 2024)(https://github.com/google/flatbuffers/releases/tag/v24.3.6)
|
||||||
|
|
||||||
|
* Fix typescript object API to allow 0 values for null-default scalars (#7864)
|
||||||
|
|
||||||
|
## [23.5.26 (May 26 2023)](https://github.com/google/flatbuffers/releases/tag/v23.5.26)
|
||||||
|
|
||||||
|
* Mostly bug fixing for 64-bit support
|
||||||
|
* Adds support for specifying underling type of unions in C++ and TS/JS (#7954)
|
||||||
|
|
||||||
|
## [23.5.9 (May 9 2023)](https://github.com/google/flatbuffers/releases/tag/v23.5.9)
|
||||||
|
|
||||||
|
* 64-bit support for C++ (#7935)
|
||||||
|
|
||||||
|
## [23.5.8 (May 8 2023)](https://github.com/google/flatbuffers/releases/tag/v23.5.8)
|
||||||
|
|
||||||
|
* add key_field to compiled tests
|
||||||
|
* Add golden language directory
|
||||||
|
* Rework cmake flatc codegeneration (#7938)
|
||||||
|
* remove defining generated files in test srcs
|
||||||
|
* Add binary schema reflection (#7932)
|
||||||
|
* Migrate from rules_nodejs to rules_js/rules_ts (take 2) (#7928)
|
||||||
|
* `flat_buffers.dart`: mark const variable finals for internal Dart linters
|
||||||
|
* fixed some windows warnings (#7929)
|
||||||
|
* inject no long for FBS generation to remove logs in flattests (#7926)
|
||||||
|
* Revert "Migrate from rules_nodejs to rules_js/rules_ts (#7923)" (#7927)
|
||||||
|
* Migrate from rules_nodejs to rules_js/rules_ts (#7923)
|
||||||
|
* Only generate @kotlin.ExperimentalUnsigned annotation on create*Vector methods having an unsigned array type parameter. (#7881)
|
||||||
|
* additional check for absl::string_view availability (#7897)
|
||||||
|
* Optionally generate Python type annotations (#7858)
|
||||||
|
* Replace deprecated command with environment file (#7921)
|
||||||
|
* drop glibc from runtime dependencies (#7906)
|
||||||
|
* Make JSON supporting advanced union features (#7869)
|
||||||
|
* Allow to use functions from `BuildFlatBuffers.cmake` from a flatbuffers installation installed with CMake. (#7912)
|
||||||
|
* TS/JS: Use TypeError instead of Error when appropriate (#7910)
|
||||||
|
* Go: make generated code more compliant to "go fmt" (#7907)
|
||||||
|
* Support file_identifier in Go (#7904)
|
||||||
|
* Optionally generate type prefixes and suffixes for python code (#7857)
|
||||||
|
* Go: add test for FinishWithFileIdentifier (#7905)
|
||||||
|
* Fix go_sample.sh (#7903)
|
||||||
|
* [TS/JS] Upgrade dependencies (#7889)
|
||||||
|
* Add a FileWriter interface (#7821)
|
||||||
|
* TS/JS: Use minvalue from enum if not found (#7888)
|
||||||
|
* [CS] Verifier (#7850)
|
||||||
|
* README.md: PyPI case typo (#7880)
|
||||||
|
* Update go documentation link to point to root module (#7879)
|
||||||
|
* use Bool for flatbuffers bool instead of Byte (#7876)
|
||||||
|
* fix using null string in vector (#7872)
|
||||||
|
* Add `flatbuffers-64` branch to CI for pushes
|
||||||
|
* made changes to the rust docs so they would compile. new_with_capacity is deprecated should use with_capacity, get_root_as_monster should be root_as_monster (#7871)
|
||||||
|
* Adding comment for code clarification (#7856)
|
||||||
|
* ToCamelCase() when kLowerCamel now converts first char to lower. (#7838)
|
||||||
|
* Fix help output for --java-checkerframework (#7854)
|
||||||
|
* Update filename to README.md and improve formatting (#7855)
|
||||||
|
* Update stale.yml
|
||||||
|
* Updated remaining usages of LICENSE.txt
|
||||||
|
|
||||||
## [23.3.3 (Mar 3 2023)](https://github.com/google/flatbuffers/releases/tag/v23.3.3)
|
## [23.3.3 (Mar 3 2023)](https://github.com/google/flatbuffers/releases/tag/v23.3.3)
|
||||||
|
|
||||||
* Refactoring of `flatc` generators to use an interface (#7797).
|
* Refactoring of `flatc` generators to use an interface (#7797).
|
||||||
|
|||||||
@@ -59,6 +59,9 @@ function(build_flatbuffers flatbuffers_schemas
|
|||||||
if(FLATBUFFERS_FLATC_EXECUTABLE)
|
if(FLATBUFFERS_FLATC_EXECUTABLE)
|
||||||
set(FLATC_TARGET "")
|
set(FLATC_TARGET "")
|
||||||
set(FLATC ${FLATBUFFERS_FLATC_EXECUTABLE})
|
set(FLATC ${FLATBUFFERS_FLATC_EXECUTABLE})
|
||||||
|
elseif(TARGET flatbuffers::flatc)
|
||||||
|
set(FLATC_TARGET flatbuffers::flatc)
|
||||||
|
set(FLATC flatbuffers::flatc)
|
||||||
else()
|
else()
|
||||||
set(FLATC_TARGET flatc)
|
set(FLATC_TARGET flatc)
|
||||||
set(FLATC flatc)
|
set(FLATC flatc)
|
||||||
@@ -211,6 +214,9 @@ function(flatbuffers_generate_headers)
|
|||||||
if(FLATBUFFERS_FLATC_EXECUTABLE)
|
if(FLATBUFFERS_FLATC_EXECUTABLE)
|
||||||
set(FLATC_TARGET "")
|
set(FLATC_TARGET "")
|
||||||
set(FLATC ${FLATBUFFERS_FLATC_EXECUTABLE})
|
set(FLATC ${FLATBUFFERS_FLATC_EXECUTABLE})
|
||||||
|
elseif(TARGET flatbuffers::flatc)
|
||||||
|
set(FLATC_TARGET flatbuffers::flatc)
|
||||||
|
set(FLATC flatbuffers::flatc)
|
||||||
else()
|
else()
|
||||||
set(FLATC_TARGET flatc)
|
set(FLATC_TARGET flatc)
|
||||||
set(FLATC flatc)
|
set(FLATC flatc)
|
||||||
@@ -382,6 +388,9 @@ function(flatbuffers_generate_binary_files)
|
|||||||
if(FLATBUFFERS_FLATC_EXECUTABLE)
|
if(FLATBUFFERS_FLATC_EXECUTABLE)
|
||||||
set(FLATC_TARGET "")
|
set(FLATC_TARGET "")
|
||||||
set(FLATC ${FLATBUFFERS_FLATC_EXECUTABLE})
|
set(FLATC ${FLATBUFFERS_FLATC_EXECUTABLE})
|
||||||
|
elseif(TARGET flatbuffers::flatc)
|
||||||
|
set(FLATC_TARGET flatbuffers::flatc)
|
||||||
|
set(FLATC flatbuffers::flatc)
|
||||||
else()
|
else()
|
||||||
set(FLATC_TARGET flatc)
|
set(FLATC_TARGET flatc)
|
||||||
set(FLATC flatc)
|
set(FLATC flatc)
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ if (UNIX)
|
|||||||
|
|
||||||
set(CPACK_RPM_PACKAGE_VENDOR "Google, Inc.")
|
set(CPACK_RPM_PACKAGE_VENDOR "Google, Inc.")
|
||||||
set(CPACK_RPM_PACKAGE_LICENSE "Apache 2.0")
|
set(CPACK_RPM_PACKAGE_LICENSE "Apache 2.0")
|
||||||
set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE.txt)
|
set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE)
|
||||||
set(CPACK_PACKAGE_DESCRIPTION_FILE ${CMAKE_SOURCE_DIR}/CMake/DESCRIPTION.txt)
|
set(CPACK_PACKAGE_DESCRIPTION_FILE ${CMAKE_SOURCE_DIR}/CMake/DESCRIPTION.txt)
|
||||||
|
|
||||||
# This may reduce rpm compatiblity with very old systems.
|
# This may reduce rpm compatiblity with very old systems.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
set(VERSION_MAJOR 23)
|
set(VERSION_MAJOR 25)
|
||||||
set(VERSION_MINOR 3)
|
set(VERSION_MINOR 1)
|
||||||
set(VERSION_PATCH 3)
|
set(VERSION_PATCH 24)
|
||||||
set(VERSION_COMMIT 0)
|
set(VERSION_COMMIT 0)
|
||||||
|
|
||||||
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git")
|
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git")
|
||||||
@@ -29,7 +29,7 @@ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git")
|
|||||||
message(WARNING "\"${GIT_DESCRIBE_DIRTY}\" does not match pattern v<major>.<minor>.<patch>-<commit>")
|
message(WARNING "\"${GIT_DESCRIBE_DIRTY}\" does not match pattern v<major>.<minor>.<patch>-<commit>")
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
message(WARNING "git describe failed with exit code: ${GIT_DESCRIBE_RESULT}")
|
message(WARNING "git describe failed with exit code: ${GIT_DESCRIBE_RESULT}\nMake sure you cloned with tags or run 'git fetch --tags'.")
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
message(WARNING "git is not found")
|
message(WARNING "git is not found")
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
include("${CMAKE_CURRENT_LIST_DIR}/FlatBuffersTargets.cmake" OPTIONAL)
|
include("${CMAKE_CURRENT_LIST_DIR}/FlatBuffersTargets.cmake" OPTIONAL)
|
||||||
include("${CMAKE_CURRENT_LIST_DIR}/FlatcTargets.cmake" OPTIONAL)
|
include("${CMAKE_CURRENT_LIST_DIR}/FlatcTargets.cmake" OPTIONAL)
|
||||||
include("${CMAKE_CURRENT_LIST_DIR}/FlatBuffersSharedTargets.cmake" OPTIONAL)
|
include("${CMAKE_CURRENT_LIST_DIR}/FlatBuffersSharedTargets.cmake" OPTIONAL)
|
||||||
|
include("${CMAKE_CURRENT_LIST_DIR}/BuildFlatBuffers.cmake" OPTIONAL)
|
||||||
232
CMakeLists.txt
232
CMakeLists.txt
@@ -21,7 +21,7 @@ option(FLATBUFFERS_BUILD_FLATC "Enable the build of the flatbuffers compiler"
|
|||||||
ON)
|
ON)
|
||||||
option(FLATBUFFERS_STATIC_FLATC "Build flatbuffers compiler with -static flag"
|
option(FLATBUFFERS_STATIC_FLATC "Build flatbuffers compiler with -static flag"
|
||||||
OFF)
|
OFF)
|
||||||
option(FLATBUFFERS_BUILD_FLATHASH "Enable the build of flathash" ON)
|
option(FLATBUFFERS_BUILD_FLATHASH "Enable the build of flathash" OFF)
|
||||||
option(FLATBUFFERS_BUILD_BENCHMARKS "Enable the build of flatbenchmark."
|
option(FLATBUFFERS_BUILD_BENCHMARKS "Enable the build of flatbenchmark."
|
||||||
OFF)
|
OFF)
|
||||||
option(FLATBUFFERS_BUILD_GRPCTEST "Enable the build of grpctest" OFF)
|
option(FLATBUFFERS_BUILD_GRPCTEST "Enable the build of grpctest" OFF)
|
||||||
@@ -127,6 +127,7 @@ set(FlatBuffers_Library_SRCS
|
|||||||
include/flatbuffers/default_allocator.h
|
include/flatbuffers/default_allocator.h
|
||||||
include/flatbuffers/detached_buffer.h
|
include/flatbuffers/detached_buffer.h
|
||||||
include/flatbuffers/code_generator.h
|
include/flatbuffers/code_generator.h
|
||||||
|
include/flatbuffers/file_manager.h
|
||||||
include/flatbuffers/flatbuffer_builder.h
|
include/flatbuffers/flatbuffer_builder.h
|
||||||
include/flatbuffers/flatbuffers.h
|
include/flatbuffers/flatbuffers.h
|
||||||
include/flatbuffers/flexbuffers.h
|
include/flatbuffers/flexbuffers.h
|
||||||
@@ -159,18 +160,21 @@ set(FlatBuffers_Compiler_SRCS
|
|||||||
src/idl_gen_csharp.cpp
|
src/idl_gen_csharp.cpp
|
||||||
src/idl_gen_dart.cpp
|
src/idl_gen_dart.cpp
|
||||||
src/idl_gen_kotlin.cpp
|
src/idl_gen_kotlin.cpp
|
||||||
|
src/idl_gen_kotlin_kmp.cpp
|
||||||
src/idl_gen_go.cpp
|
src/idl_gen_go.cpp
|
||||||
src/idl_gen_java.cpp
|
src/idl_gen_java.cpp
|
||||||
src/idl_gen_ts.cpp
|
src/idl_gen_ts.cpp
|
||||||
src/idl_gen_php.cpp
|
src/idl_gen_php.cpp
|
||||||
src/idl_gen_python.cpp
|
src/idl_gen_python.cpp
|
||||||
src/idl_gen_lobster.cpp
|
src/idl_gen_lobster.cpp
|
||||||
src/idl_gen_lua.cpp
|
|
||||||
src/idl_gen_rust.cpp
|
src/idl_gen_rust.cpp
|
||||||
src/idl_gen_fbs.cpp
|
src/idl_gen_fbs.cpp
|
||||||
src/idl_gen_grpc.cpp
|
src/idl_gen_grpc.cpp
|
||||||
src/idl_gen_json_schema.cpp
|
src/idl_gen_json_schema.cpp
|
||||||
src/idl_gen_swift.cpp
|
src/idl_gen_swift.cpp
|
||||||
|
src/file_name_saving_file_manager.cpp
|
||||||
|
src/file_binary_writer.cpp
|
||||||
|
src/file_writer.cpp
|
||||||
src/idl_namer.h
|
src/idl_namer.h
|
||||||
src/namer.h
|
src/namer.h
|
||||||
src/flatc.cpp
|
src/flatc.cpp
|
||||||
@@ -179,6 +183,10 @@ set(FlatBuffers_Compiler_SRCS
|
|||||||
src/bfbs_gen_lua.h
|
src/bfbs_gen_lua.h
|
||||||
src/bfbs_gen_nim.h
|
src/bfbs_gen_nim.h
|
||||||
src/bfbs_namer.h
|
src/bfbs_namer.h
|
||||||
|
include/codegen/idl_namer.h
|
||||||
|
include/codegen/namer.h
|
||||||
|
include/codegen/python.h
|
||||||
|
include/codegen/python.cc
|
||||||
include/flatbuffers/code_generators.h
|
include/flatbuffers/code_generators.h
|
||||||
src/binary_annotator.h
|
src/binary_annotator.h
|
||||||
src/binary_annotator.cpp
|
src/binary_annotator.cpp
|
||||||
@@ -230,31 +238,10 @@ set(FlatBuffers_Tests_SRCS
|
|||||||
tests/native_type_test_impl.cpp
|
tests/native_type_test_impl.cpp
|
||||||
tests/alignment_test.h
|
tests/alignment_test.h
|
||||||
tests/alignment_test.cpp
|
tests/alignment_test.cpp
|
||||||
|
tests/64bit/offset64_test.h
|
||||||
|
tests/64bit/offset64_test.cpp
|
||||||
include/flatbuffers/code_generators.h
|
include/flatbuffers/code_generators.h
|
||||||
src/code_generators.cpp
|
src/code_generators.cpp
|
||||||
# file generate by running compiler on tests/monster_test.fbs
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/tests/monster_test_generated.h
|
|
||||||
# file generate by running compiler on namespace_test/namespace_test1.fbs
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/tests/namespace_test/namespace_test1_generated.h
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/tests/namespace_test/namespace_test2_generated.h
|
|
||||||
# file generate by running compiler on union_vector/union_vector.fbs
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/tests/union_vector/union_vector_generated.h
|
|
||||||
# file generate by running compiler on tests/arrays_test.fbs
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/tests/arrays_test_generated.h
|
|
||||||
# file generate by running compiler on tests/native_type_test.fbs
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/tests/native_type_test_generated.h
|
|
||||||
# file generate by running compiler on tests/monster_extra.fbs
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/tests/monster_extra_generated.h
|
|
||||||
# file generate by running compiler on tests/monster_test.fbs
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/tests/monster_test_bfbs_generated.h
|
|
||||||
# file generate by running compiler on tests/optional_scalars.fbs
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/tests/optional_scalars_generated.h
|
|
||||||
# file generate by running compiler on tests/native_inline_table_test.fbs
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/tests/native_inline_table_test_generated.h
|
|
||||||
# file generate by running compiler on tests/alignment_test.fbs
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/tests/alignment_test_generated.h
|
|
||||||
# file generate by running compiler on tests/key_field/key_field_sample.fbs
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/tests/key_field/key_field_sample_generated.h
|
|
||||||
)
|
)
|
||||||
|
|
||||||
set(FlatBuffers_Tests_CPP17_SRCS
|
set(FlatBuffers_Tests_CPP17_SRCS
|
||||||
@@ -262,32 +249,20 @@ set(FlatBuffers_Tests_CPP17_SRCS
|
|||||||
tests/test_assert.h
|
tests/test_assert.h
|
||||||
tests/test_assert.cpp
|
tests/test_assert.cpp
|
||||||
tests/cpp17/test_cpp17.cpp
|
tests/cpp17/test_cpp17.cpp
|
||||||
# file generate by running compiler on tests/monster_test.fbs
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/tests/cpp17/generated_cpp17/monster_test_generated.h
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/tests/monster_test_generated.h
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/tests/cpp17/generated_cpp17/optional_scalars_generated.h
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/tests/optional_scalars_generated.h
|
|
||||||
)
|
)
|
||||||
|
|
||||||
set(FlatBuffers_Sample_Binary_SRCS
|
set(FlatBuffers_Sample_Binary_SRCS
|
||||||
include/flatbuffers/flatbuffers.h
|
|
||||||
samples/sample_binary.cpp
|
samples/sample_binary.cpp
|
||||||
# file generated by running compiler on samples/monster.fbs
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/samples/monster_generated.h
|
|
||||||
)
|
)
|
||||||
|
|
||||||
set(FlatBuffers_Sample_Text_SRCS
|
set(FlatBuffers_Sample_Text_SRCS
|
||||||
${FlatBuffers_Library_SRCS}
|
${FlatBuffers_Library_SRCS}
|
||||||
samples/sample_text.cpp
|
samples/sample_text.cpp
|
||||||
# file generated by running compiler on samples/monster.fbs
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/samples/monster_generated.h
|
|
||||||
)
|
)
|
||||||
|
|
||||||
set(FlatBuffers_Sample_BFBS_SRCS
|
set(FlatBuffers_Sample_BFBS_SRCS
|
||||||
${FlatBuffers_Library_SRCS}
|
${FlatBuffers_Library_SRCS}
|
||||||
samples/sample_bfbs.cpp
|
samples/sample_bfbs.cpp
|
||||||
# file generated by running compiler on samples/monster.fbs
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/samples/monster_generated.h
|
|
||||||
)
|
)
|
||||||
|
|
||||||
set(FlatBuffers_GRPCTest_SRCS
|
set(FlatBuffers_GRPCTest_SRCS
|
||||||
@@ -303,8 +278,6 @@ set(FlatBuffers_GRPCTest_SRCS
|
|||||||
tests/test_builder.cpp
|
tests/test_builder.cpp
|
||||||
grpc/tests/grpctest.cpp
|
grpc/tests/grpctest.cpp
|
||||||
grpc/tests/message_builder_test.cpp
|
grpc/tests/message_builder_test.cpp
|
||||||
# file generate by running compiler on tests/monster_test.fbs
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/tests/monster_test_generated.h
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# TODO(dbaileychess): Figure out how this would now work. I posted a question on
|
# TODO(dbaileychess): Figure out how this would now work. I posted a question on
|
||||||
@@ -519,145 +492,93 @@ if(FLATBUFFERS_BUILD_SHAREDLIB)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Global list of generated files.
|
function(compile_schema SRC_FBS OPT OUT_GEN_FILE)
|
||||||
# Use the global property to be independent of PARENT_SCOPE.
|
|
||||||
set_property(GLOBAL PROPERTY FBS_GENERATED_OUTPUTS)
|
|
||||||
|
|
||||||
function(get_generated_output generated_files)
|
|
||||||
get_property(tmp GLOBAL PROPERTY FBS_GENERATED_OUTPUTS)
|
|
||||||
set(${generated_files} ${tmp} PARENT_SCOPE)
|
|
||||||
endfunction(get_generated_output)
|
|
||||||
|
|
||||||
function(register_generated_output file_name)
|
|
||||||
get_property(tmp GLOBAL PROPERTY FBS_GENERATED_OUTPUTS)
|
|
||||||
list(APPEND tmp ${file_name})
|
|
||||||
set_property(GLOBAL PROPERTY FBS_GENERATED_OUTPUTS ${tmp})
|
|
||||||
endfunction(register_generated_output)
|
|
||||||
|
|
||||||
function(compile_flatbuffers_schema_to_cpp_opt SRC_FBS OPT)
|
|
||||||
if(FLATBUFFERS_BUILD_LEGACY)
|
|
||||||
set(OPT ${OPT};--cpp-std c++0x)
|
|
||||||
else()
|
|
||||||
# --cpp-std is defined by flatc default settings.
|
|
||||||
endif()
|
|
||||||
message(STATUS "`${SRC_FBS}`: add generation of C++ code with '${OPT}'")
|
|
||||||
get_filename_component(SRC_FBS_DIR ${SRC_FBS} PATH)
|
get_filename_component(SRC_FBS_DIR ${SRC_FBS} PATH)
|
||||||
string(REGEX REPLACE "\\.fbs$" "_generated.h" GEN_HEADER ${SRC_FBS})
|
string(REGEX REPLACE "\\.fbs$" "_generated.h" GEN_HEADER ${SRC_FBS})
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${GEN_HEADER}
|
OUTPUT ${GEN_HEADER}
|
||||||
COMMAND "${FLATBUFFERS_FLATC_EXECUTABLE}"
|
COMMAND "${FLATBUFFERS_FLATC_EXECUTABLE}"
|
||||||
--cpp --gen-mutable --gen-object-api --reflect-names
|
${OPT}
|
||||||
--cpp-ptr-type flatbuffers::unique_ptr # Used to test with C++98 STLs
|
-o "${SRC_FBS_DIR}"
|
||||||
${OPT}
|
"${CMAKE_CURRENT_SOURCE_DIR}/${SRC_FBS}"
|
||||||
-I "${CMAKE_CURRENT_SOURCE_DIR}/tests/include_test"
|
DEPENDS flatc ${SRC_FBS}
|
||||||
-o "${SRC_FBS_DIR}"
|
COMMENT "flatc generation: `${SRC_FBS}` -> `${GEN_HEADER}`"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/${SRC_FBS}"
|
)
|
||||||
DEPENDS flatc
|
set(${OUT_GEN_FILE} ${GEN_HEADER} PARENT_SCOPE)
|
||||||
COMMENT "Run generation: '${GEN_HEADER}'")
|
|
||||||
register_generated_output(${GEN_HEADER})
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(compile_flatbuffers_schema_to_cpp SRC_FBS)
|
function(compile_schema_for_test SRC_FBS OPT)
|
||||||
compile_flatbuffers_schema_to_cpp_opt(${SRC_FBS} "--no-includes;--gen-compare")
|
compile_schema("${SRC_FBS}" "${OPT}" GEN_FILE)
|
||||||
|
target_sources(flattests PRIVATE ${GEN_FILE})
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(compile_flatbuffers_schema_to_binary SRC_FBS)
|
function(compile_schema_for_samples SRC_FBS OPT)
|
||||||
message(STATUS "`${SRC_FBS}`: add generation of binary (.bfbs) schema")
|
compile_schema("${SRC_FBS}" "${OPT}" GEN_FILE)
|
||||||
get_filename_component(SRC_FBS_DIR ${SRC_FBS} PATH)
|
target_sources(flatsample PRIVATE ${GEN_FILE})
|
||||||
string(REGEX REPLACE "\\.fbs$" ".bfbs" GEN_BINARY_SCHEMA ${SRC_FBS})
|
|
||||||
# For details about flags see generate_code.py
|
|
||||||
add_custom_command(
|
|
||||||
OUTPUT ${GEN_BINARY_SCHEMA}
|
|
||||||
COMMAND "${FLATBUFFERS_FLATC_EXECUTABLE}"
|
|
||||||
-b --schema --bfbs-comments --bfbs-builtins
|
|
||||||
--bfbs-filenames "${CMAKE_CURRENT_SOURCE_DIR}/${SRC_FBS_DIR}"
|
|
||||||
-I "${CMAKE_CURRENT_SOURCE_DIR}/tests/include_test"
|
|
||||||
-o "${SRC_FBS_DIR}"
|
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/${SRC_FBS}"
|
|
||||||
DEPENDS flatc
|
|
||||||
COMMENT "Run generation: '${GEN_BINARY_SCHEMA}'")
|
|
||||||
register_generated_output(${GEN_BINARY_SCHEMA})
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(compile_flatbuffers_schema_to_embedded_binary SRC_FBS OPT)
|
|
||||||
if(FLATBUFFERS_BUILD_LEGACY)
|
|
||||||
set(OPT ${OPT};--cpp-std c++0x)
|
|
||||||
else()
|
|
||||||
# --cpp-std is defined by flatc default settings.
|
|
||||||
endif()
|
|
||||||
message(STATUS "`${SRC_FBS}`: add generation of C++ embedded binary schema code with '${OPT}'")
|
|
||||||
get_filename_component(SRC_FBS_DIR ${SRC_FBS} PATH)
|
|
||||||
string(REGEX REPLACE "\\.fbs$" "_bfbs_generated.h" GEN_BFBS_HEADER ${SRC_FBS})
|
|
||||||
# For details about flags see generate_code.py
|
|
||||||
add_custom_command(
|
|
||||||
OUTPUT ${GEN_BFBS_HEADER}
|
|
||||||
COMMAND "${FLATBUFFERS_FLATC_EXECUTABLE}"
|
|
||||||
--cpp --gen-mutable --gen-object-api --reflect-names
|
|
||||||
--cpp-ptr-type flatbuffers::unique_ptr # Used to test with C++98 STLs
|
|
||||||
${OPT}
|
|
||||||
--bfbs-comments --bfbs-builtins --bfbs-gen-embed
|
|
||||||
--bfbs-filenames ${SRC_FBS_DIR}
|
|
||||||
-I "${CMAKE_CURRENT_SOURCE_DIR}/tests/include_test"
|
|
||||||
-o "${SRC_FBS_DIR}"
|
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/${SRC_FBS}"
|
|
||||||
DEPENDS flatc
|
|
||||||
COMMENT "Run generation: '${GEN_BFBS_HEADER}'")
|
|
||||||
register_generated_output(${GEN_BFBS_HEADER})
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
if(FLATBUFFERS_BUILD_TESTS)
|
if(FLATBUFFERS_BUILD_TESTS)
|
||||||
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/tests" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
|
|
||||||
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/samples" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
|
|
||||||
|
|
||||||
# TODO Add (monster_test.fbs monsterdata_test.json)->monsterdata_test.mon
|
|
||||||
compile_flatbuffers_schema_to_cpp(tests/monster_test.fbs)
|
|
||||||
compile_flatbuffers_schema_to_binary(tests/monster_test.fbs)
|
|
||||||
compile_flatbuffers_schema_to_cpp_opt(tests/namespace_test/namespace_test1.fbs "--no-includes;--gen-compare;--gen-name-strings")
|
|
||||||
compile_flatbuffers_schema_to_cpp_opt(tests/namespace_test/namespace_test2.fbs "--no-includes;--gen-compare;--gen-name-strings")
|
|
||||||
compile_flatbuffers_schema_to_cpp_opt(tests/union_vector/union_vector.fbs "--no-includes;--gen-compare;")
|
|
||||||
compile_flatbuffers_schema_to_cpp(tests/optional_scalars.fbs)
|
|
||||||
compile_flatbuffers_schema_to_cpp_opt(tests/native_type_test.fbs "")
|
|
||||||
compile_flatbuffers_schema_to_cpp_opt(tests/arrays_test.fbs "--scoped-enums;--gen-compare")
|
|
||||||
compile_flatbuffers_schema_to_binary(tests/arrays_test.fbs)
|
|
||||||
compile_flatbuffers_schema_to_embedded_binary(tests/monster_test.fbs "--no-includes;--gen-compare")
|
|
||||||
compile_flatbuffers_schema_to_cpp(tests/native_inline_table_test.fbs "--gen-compare")
|
|
||||||
compile_flatbuffers_schema_to_cpp(tests/alignment_test.fbs "--gen-compare")
|
|
||||||
compile_flatbuffers_schema_to_cpp(tests/key_field/key_field_sample.fbs)
|
|
||||||
if(NOT (MSVC AND (MSVC_VERSION LESS 1900)))
|
|
||||||
compile_flatbuffers_schema_to_cpp(tests/monster_extra.fbs) # Test floating-point NAN/INF.
|
|
||||||
endif()
|
|
||||||
include_directories(${CMAKE_CURRENT_BINARY_DIR}/tests)
|
|
||||||
add_executable(flattests ${FlatBuffers_Tests_SRCS})
|
add_executable(flattests ${FlatBuffers_Tests_SRCS})
|
||||||
target_link_libraries(flattests PRIVATE $<BUILD_INTERFACE:ProjectConfig>)
|
target_link_libraries(flattests PRIVATE $<BUILD_INTERFACE:ProjectConfig>)
|
||||||
|
target_include_directories(flattests PUBLIC
|
||||||
|
# Ideally everything is fully qualified from the root directories
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
# TODO(derekbailey): update includes to fully qualify src/ and tests/
|
||||||
|
src
|
||||||
|
tests
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/tests
|
||||||
|
)
|
||||||
|
|
||||||
add_dependencies(flattests generated_code)
|
# Have tests load data from the source directory, not the build directory.
|
||||||
|
add_definitions(-DFLATBUFFERS_TEST_PATH_PREFIX=${CMAKE_CURRENT_SOURCE_DIR}/)
|
||||||
|
|
||||||
|
# The flattest target needs some generated files
|
||||||
|
SET(FLATC_OPT --cpp --gen-mutable --gen-object-api --reflect-names)
|
||||||
|
SET(FLATC_OPT_COMP ${FLATC_OPT};--gen-compare)
|
||||||
|
SET(FLATC_OPT_SCOPED_ENUMS ${FLATC_OPT_COMP};--scoped-enums)
|
||||||
|
|
||||||
|
compile_schema_for_test(tests/alignment_test.fbs "${FLATC_OPT_COMP}")
|
||||||
|
compile_schema_for_test(tests/arrays_test.fbs "${FLATC_OPT_SCOPED_ENUMS}")
|
||||||
|
compile_schema_for_test(tests/native_inline_table_test.fbs "${FLATC_OPT_COMP}")
|
||||||
|
compile_schema_for_test(tests/native_type_test.fbs "${FLATC_OPT}")
|
||||||
|
compile_schema_for_test(tests/key_field/key_field_sample.fbs "${FLATC_OPT_COMP}")
|
||||||
|
compile_schema_for_test(tests/64bit/test_64bit.fbs "${FLATC_OPT_COMP};--bfbs-gen-embed")
|
||||||
|
compile_schema_for_test(tests/64bit/evolution/v1.fbs "${FLATC_OPT_COMP}")
|
||||||
|
compile_schema_for_test(tests/64bit/evolution/v2.fbs "${FLATC_OPT_COMP}")
|
||||||
|
compile_schema_for_test(tests/union_underlying_type_test.fbs "${FLATC_OPT_SCOPED_ENUMS}")
|
||||||
|
|
||||||
if(FLATBUFFERS_CODE_SANITIZE)
|
if(FLATBUFFERS_CODE_SANITIZE)
|
||||||
add_fsanitize_to_target(flattests ${FLATBUFFERS_CODE_SANITIZE})
|
add_fsanitize_to_target(flattests ${FLATBUFFERS_CODE_SANITIZE})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
compile_flatbuffers_schema_to_cpp(samples/monster.fbs)
|
|
||||||
compile_flatbuffers_schema_to_binary(samples/monster.fbs)
|
|
||||||
include_directories(${CMAKE_CURRENT_BINARY_DIR}/samples)
|
include_directories(${CMAKE_CURRENT_BINARY_DIR}/samples)
|
||||||
|
|
||||||
add_executable(flatsamplebinary ${FlatBuffers_Sample_Binary_SRCS})
|
add_executable(flatsamplebinary ${FlatBuffers_Sample_Binary_SRCS})
|
||||||
target_link_libraries(flatsamplebinary PRIVATE $<BUILD_INTERFACE:ProjectConfig>)
|
|
||||||
add_dependencies(flatsamplebinary generated_code)
|
|
||||||
|
|
||||||
add_executable(flatsampletext ${FlatBuffers_Sample_Text_SRCS})
|
add_executable(flatsampletext ${FlatBuffers_Sample_Text_SRCS})
|
||||||
target_link_libraries(flatsampletext PRIVATE $<BUILD_INTERFACE:ProjectConfig>)
|
|
||||||
add_dependencies(flatsampletext generated_code)
|
|
||||||
|
|
||||||
add_executable(flatsamplebfbs ${FlatBuffers_Sample_BFBS_SRCS})
|
add_executable(flatsamplebfbs ${FlatBuffers_Sample_BFBS_SRCS})
|
||||||
target_link_libraries(flatsamplebfbs PRIVATE $<BUILD_INTERFACE:ProjectConfig>)
|
|
||||||
add_dependencies(flatsamplebfbs generated_code)
|
# Add a library so there is a single target that the generated samples can
|
||||||
|
# link too.
|
||||||
|
if(MSVC OR ${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.20.0")
|
||||||
|
add_library(flatsample INTERFACE)
|
||||||
|
else()
|
||||||
|
add_library(flatsample STATIC)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Since flatsample has no sources, we have to explicitly set the linker lang.
|
||||||
|
set_target_properties(flatsample PROPERTIES LINKER_LANGUAGE CXX)
|
||||||
|
|
||||||
|
compile_schema_for_samples(samples/monster.fbs "${FLATC_OPT_COMP}")
|
||||||
|
|
||||||
|
target_link_libraries(flatsamplebinary PRIVATE $<BUILD_INTERFACE:ProjectConfig> flatsample)
|
||||||
|
target_link_libraries(flatsampletext PRIVATE $<BUILD_INTERFACE:ProjectConfig> flatsample)
|
||||||
|
target_link_libraries(flatsamplebfbs PRIVATE $<BUILD_INTERFACE:ProjectConfig> flatsample)
|
||||||
|
|
||||||
if(FLATBUFFERS_BUILD_CPP17)
|
if(FLATBUFFERS_BUILD_CPP17)
|
||||||
# Don't generate header for flattests_cpp17 target.
|
|
||||||
# This target uses "generated_cpp17/monster_test_generated.h"
|
|
||||||
add_executable(flattests_cpp17 ${FlatBuffers_Tests_CPP17_SRCS})
|
add_executable(flattests_cpp17 ${FlatBuffers_Tests_CPP17_SRCS})
|
||||||
add_dependencies(flattests_cpp17 generated_code)
|
|
||||||
target_link_libraries(flattests_cpp17 PRIVATE $<BUILD_INTERFACE:ProjectConfig>)
|
target_link_libraries(flattests_cpp17 PRIVATE $<BUILD_INTERFACE:ProjectConfig>)
|
||||||
|
target_include_directories(flattests_cpp17 PUBLIC src tests)
|
||||||
target_compile_features(flattests_cpp17 PRIVATE cxx_std_17) # requires cmake 3.8
|
target_compile_features(flattests_cpp17 PRIVATE cxx_std_17) # requires cmake 3.8
|
||||||
|
|
||||||
if(FLATBUFFERS_CODE_SANITIZE)
|
if(FLATBUFFERS_CODE_SANITIZE)
|
||||||
@@ -681,8 +602,7 @@ if(FLATBUFFERS_BUILD_GRPCTEST)
|
|||||||
find_package(protobuf CONFIG REQUIRED)
|
find_package(protobuf CONFIG REQUIRED)
|
||||||
find_package(gRPC CONFIG REQUIRED)
|
find_package(gRPC CONFIG REQUIRED)
|
||||||
add_executable(grpctest ${FlatBuffers_GRPCTest_SRCS})
|
add_executable(grpctest ${FlatBuffers_GRPCTest_SRCS})
|
||||||
add_dependencies(grpctest generated_code)
|
target_link_libraries(grpctest
|
||||||
target_link_libraries(grpctext
|
|
||||||
PRIVATE
|
PRIVATE
|
||||||
$<BUILD_INTERFACE:ProjectConfig>
|
$<BUILD_INTERFACE:ProjectConfig>
|
||||||
gRPC::grpc++_unsecure
|
gRPC::grpc++_unsecure
|
||||||
@@ -774,16 +694,6 @@ if(FLATBUFFERS_BUILD_TESTS)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# This target is sync-barrier.
|
|
||||||
# Other generate-dependent targets can depend on 'generated_code' only.
|
|
||||||
get_generated_output(fbs_generated)
|
|
||||||
if(fbs_generated)
|
|
||||||
# message(STATUS "Add generated_code target with files:${fbs_generated}")
|
|
||||||
add_custom_target(generated_code
|
|
||||||
DEPENDS ${fbs_generated}
|
|
||||||
COMMENT "All generated files were updated.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include(CMake/BuildFlatBuffers.cmake)
|
include(CMake/BuildFlatBuffers.cmake)
|
||||||
|
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
Pod::Spec.new do |s|
|
Pod::Spec.new do |s|
|
||||||
s.name = 'FlatBuffers'
|
s.name = 'FlatBuffers'
|
||||||
s.version = '23.3.3'
|
s.version = '25.1.24'
|
||||||
s.summary = 'FlatBuffers: Memory Efficient Serialization Library'
|
s.summary = 'FlatBuffers: Memory Efficient Serialization Library'
|
||||||
|
|
||||||
s.description = "FlatBuffers is a cross platform serialization library architected for
|
s.description = "FlatBuffers is a cross platform serialization library architected for
|
||||||
@@ -10,12 +10,15 @@ Pod::Spec.new do |s|
|
|||||||
|
|
||||||
s.homepage = 'https://github.com/google/flatbuffers'
|
s.homepage = 'https://github.com/google/flatbuffers'
|
||||||
s.license = { :type => 'Apache2.0', :file => 'LICENSE' }
|
s.license = { :type => 'Apache2.0', :file => 'LICENSE' }
|
||||||
s.author = { 'mustii' => 'mustii@mmk.one' }
|
s.author = { 'mustii' => 'me@mustiikhalil.se' }
|
||||||
s.source = { :git => 'https://github.com/google/flatbuffers.git', :tag => s.version.to_s, :submodules => true }
|
s.source = { :git => 'https://github.com/google/flatbuffers.git', :tag => "v" + s.version.to_s, :submodules => true }
|
||||||
|
|
||||||
s.ios.deployment_target = '11.0'
|
s.ios.deployment_target = '11.0'
|
||||||
s.osx.deployment_target = '10.14'
|
s.osx.deployment_target = '10.14'
|
||||||
|
|
||||||
s.swift_version = '5.0'
|
s.swift_version = '5.0'
|
||||||
s.source_files = 'swift/Sources/Flatbuffers/*.swift'
|
s.source_files = 'swift/Sources/Flatbuffers/*.swift'
|
||||||
|
s.pod_target_xcconfig = {
|
||||||
|
'BUILD_LIBRARY_FOR_DISTRIBUTION' => 'YES'
|
||||||
|
}
|
||||||
end
|
end
|
||||||
|
|||||||
73
MODULE.bazel
Normal file
73
MODULE.bazel
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
module(
|
||||||
|
name = "flatbuffers",
|
||||||
|
version = "25.1.24",
|
||||||
|
compatibility_level = 1,
|
||||||
|
repo_name = "com_github_google_flatbuffers",
|
||||||
|
)
|
||||||
|
|
||||||
|
bazel_dep(
|
||||||
|
name = "aspect_bazel_lib",
|
||||||
|
version = "2.11.0",
|
||||||
|
)
|
||||||
|
bazel_dep(
|
||||||
|
name = "aspect_rules_esbuild",
|
||||||
|
version = "0.21.0",
|
||||||
|
)
|
||||||
|
bazel_dep(
|
||||||
|
name = "aspect_rules_js",
|
||||||
|
version = "2.1.3",
|
||||||
|
)
|
||||||
|
bazel_dep(
|
||||||
|
name = "aspect_rules_ts",
|
||||||
|
version = "3.4.0",
|
||||||
|
)
|
||||||
|
bazel_dep(
|
||||||
|
name = "grpc",
|
||||||
|
version = "1.69.0",
|
||||||
|
repo_name = "com_github_grpc_grpc",
|
||||||
|
)
|
||||||
|
bazel_dep(
|
||||||
|
name = "platforms",
|
||||||
|
version = "0.0.10",
|
||||||
|
)
|
||||||
|
bazel_dep(
|
||||||
|
name = "rules_cc",
|
||||||
|
version = "0.0.16",
|
||||||
|
)
|
||||||
|
bazel_dep(
|
||||||
|
name = "rules_go",
|
||||||
|
version = "0.50.1",
|
||||||
|
repo_name = "io_bazel_rules_go",
|
||||||
|
)
|
||||||
|
bazel_dep(
|
||||||
|
name = "rules_nodejs",
|
||||||
|
version = "6.3.3",
|
||||||
|
)
|
||||||
|
bazel_dep(
|
||||||
|
name = "rules_swift",
|
||||||
|
version = "1.18.0",
|
||||||
|
repo_name = "build_bazel_rules_swift",
|
||||||
|
)
|
||||||
|
bazel_dep(
|
||||||
|
name = "bazel_skylib",
|
||||||
|
version = "1.7.1",
|
||||||
|
)
|
||||||
|
|
||||||
|
npm = use_extension("@aspect_rules_js//npm:extensions.bzl", "npm")
|
||||||
|
npm.npm_translate_lock(
|
||||||
|
name = "flatbuffers_npm",
|
||||||
|
npmrc = "//:.npmrc",
|
||||||
|
pnpm_lock = "//ts:pnpm-lock.yaml",
|
||||||
|
# Override the Bazel package where pnpm-lock.yaml is located and link
|
||||||
|
# to the specified package instead.
|
||||||
|
root_package = "ts",
|
||||||
|
verify_node_modules_ignored = "//:.bazelignore",
|
||||||
|
)
|
||||||
|
use_repo(npm, "flatbuffers_npm")
|
||||||
|
|
||||||
|
node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node")
|
||||||
|
use_repo(node, "nodejs_linux_amd64")
|
||||||
|
|
||||||
|
rules_ts_ext = use_extension("@aspect_rules_ts//ts:extensions.bzl", "ext")
|
||||||
|
rules_ts_ext.deps()
|
||||||
|
use_repo(rules_ts_ext, "npm_typescript")
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
// swift-tools-version:5.2
|
// swift-tools-version:5.8
|
||||||
/*
|
/*
|
||||||
* Copyright 2020 Google Inc. All rights reserved.
|
* Copyright 2020 Google Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -32,6 +32,5 @@ let package = Package(
|
|||||||
.target(
|
.target(
|
||||||
name: "FlatBuffers",
|
name: "FlatBuffers",
|
||||||
dependencies: [],
|
dependencies: [],
|
||||||
path: "swift/Sources",
|
path: "swift/Sources"),
|
||||||
exclude: ["Documentation.docc/Resources/code/swift"]),
|
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -1,37 +0,0 @@
|
|||||||
// swift-tools-version:5.5
|
|
||||||
/*
|
|
||||||
* Copyright 2020 Google Inc. All rights reserved.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import PackageDescription
|
|
||||||
|
|
||||||
let package = Package(
|
|
||||||
name: "FlatBuffers",
|
|
||||||
platforms: [
|
|
||||||
.iOS(.v11),
|
|
||||||
.macOS(.v10_14),
|
|
||||||
],
|
|
||||||
products: [
|
|
||||||
.library(
|
|
||||||
name: "FlatBuffers",
|
|
||||||
targets: ["FlatBuffers"]),
|
|
||||||
],
|
|
||||||
targets: [
|
|
||||||
.target(
|
|
||||||
name: "FlatBuffers",
|
|
||||||
dependencies: [],
|
|
||||||
path: "swift/Sources"),
|
|
||||||
])
|
|
||||||
|
|
||||||
@@ -4,8 +4,6 @@
|
|||||||

|

|
||||||
[](https://buildkite.com/bazel/flatbuffers)
|
[](https://buildkite.com/bazel/flatbuffers)
|
||||||
[](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:flatbuffers)
|
[](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:flatbuffers)
|
||||||
[](https://api.securityscorecards.dev/projects/github.com/google/flatbuffers)
|
|
||||||
[](https://gitter.im/google/flatbuffers?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
|
||||||
[](https:///discord.gg/6qgKs3R)
|
[](https:///discord.gg/6qgKs3R)
|
||||||
[](https://twitter.com/wvo)
|
[](https://twitter.com/wvo)
|
||||||
[](https://twitter.com/dbaileychess)
|
[](https://twitter.com/dbaileychess)
|
||||||
@@ -14,14 +12,55 @@
|
|||||||
**FlatBuffers** is a cross platform serialization library architected for
|
**FlatBuffers** is a cross platform serialization library architected for
|
||||||
maximum memory efficiency. It allows you to directly access serialized data without parsing/unpacking it first, while still having great forwards/backwards compatibility.
|
maximum memory efficiency. It allows you to directly access serialized data without parsing/unpacking it first, while still having great forwards/backwards compatibility.
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
1. Build the compiler for flatbuffers (`flatc`)
|
||||||
|
|
||||||
|
Use `cmake` to create the build files for your platform and then perform the compilation (Linux example).
|
||||||
|
|
||||||
|
```
|
||||||
|
cmake -G "Unix Makefiles"
|
||||||
|
make -j
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Define your flatbuffer schema (`.fbs`)
|
||||||
|
|
||||||
|
Write the [schema](https://flatbuffers.dev/flatbuffers_guide_writing_schema.html) to define the data you want to serialize. See [monster.fbs](https://github.com/google/flatbuffers/blob/master/samples/monster.fbs) for an example.
|
||||||
|
|
||||||
|
3. Generate code for your language(s)
|
||||||
|
|
||||||
|
Use the `flatc` compiler to take your schema and generate language-specific code:
|
||||||
|
|
||||||
|
```
|
||||||
|
./flatc --cpp --rust monster.fbs
|
||||||
|
```
|
||||||
|
|
||||||
|
Which generates `monster_generated.h` and `monster_generated.rs` files.
|
||||||
|
|
||||||
|
4. Serialize data
|
||||||
|
|
||||||
|
Use the generated code, as well as the `FlatBufferBuilder` to construct your serialized buffer. ([`C++` example](https://github.com/google/flatbuffers/blob/master/samples/sample_binary.cpp#L24-L56))
|
||||||
|
|
||||||
|
5. Transmit/store/save Buffer
|
||||||
|
|
||||||
|
Use your serialized buffer however you want. Send it to someone, save it for later, etc...
|
||||||
|
|
||||||
|
6. Read the data
|
||||||
|
|
||||||
|
Use the generated accessors to read the data from the serialized buffer.
|
||||||
|
|
||||||
|
It doesn't need to be the same language/schema version, FlatBuffers ensures the data is readable across languages and schema versions. See the [`Rust` example](https://github.com/google/flatbuffers/blob/master/samples/sample_binary.rs#L92-L106) reading the data written by `C++`.
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
**Go to our [landing page][] to browse our documentation.**
|
**Go to our [landing page][] to browse our documentation.**
|
||||||
|
|
||||||
## Supported operating systems
|
## Supported operating systems
|
||||||
* Windows
|
- Windows
|
||||||
* macOS
|
- macOS
|
||||||
* Linux
|
- Linux
|
||||||
* Android
|
- Android
|
||||||
* And any others with a recent C++ compiler (C++ 11 and newer)
|
- And any others with a recent C++ compiler (C++ 11 and newer)
|
||||||
|
|
||||||
## Supported programming languages
|
## Supported programming languages
|
||||||
|
|
||||||
@@ -31,14 +70,14 @@ Code generation and runtime libraries for many popular languages.
|
|||||||
1. C++ - [snapcraft.io](https://snapcraft.io/flatbuffers)
|
1. C++ - [snapcraft.io](https://snapcraft.io/flatbuffers)
|
||||||
1. C# - [nuget.org](https://www.nuget.org/packages/Google.FlatBuffers)
|
1. C# - [nuget.org](https://www.nuget.org/packages/Google.FlatBuffers)
|
||||||
1. Dart - [pub.dev](https://pub.dev/packages/flat_buffers)
|
1. Dart - [pub.dev](https://pub.dev/packages/flat_buffers)
|
||||||
1. Go - [go.dev](https://pkg.go.dev/github.com/google/flatbuffers/go)
|
1. Go - [go.dev](https://pkg.go.dev/github.com/google/flatbuffers)
|
||||||
1. Java - [Maven](https://search.maven.org/artifact/com.google.flatbuffers/flatbuffers-java)
|
1. Java - [Maven](https://search.maven.org/artifact/com.google.flatbuffers/flatbuffers-java)
|
||||||
1. JavaScript - [NPM](https://www.npmjs.com/package/flatbuffers)
|
1. JavaScript - [NPM](https://www.npmjs.com/package/flatbuffers)
|
||||||
1. Kotlin
|
1. Kotlin
|
||||||
1. Lobster
|
1. Lobster
|
||||||
1. Lua
|
1. Lua
|
||||||
1. PHP
|
1. PHP
|
||||||
1. Python - [PyPi](https://pypi.org/project/flatbuffers/)
|
1. Python - [PyPI](https://pypi.org/project/flatbuffers/)
|
||||||
1. Rust - [crates.io](https://crates.io/crates/flatbuffers)
|
1. Rust - [crates.io](https://crates.io/crates/flatbuffers)
|
||||||
1. Swift - [swiftpackageindex](https://swiftpackageindex.com/google/flatbuffers)
|
1. Swift - [swiftpackageindex](https://swiftpackageindex.com/google/flatbuffers)
|
||||||
1. TypeScript - [NPM](https://www.npmjs.com/package/flatbuffers)
|
1. TypeScript - [NPM](https://www.npmjs.com/package/flatbuffers)
|
||||||
@@ -46,7 +85,7 @@ Code generation and runtime libraries for many popular languages.
|
|||||||
|
|
||||||
## Versioning
|
## Versioning
|
||||||
|
|
||||||
FlatBuffers does not follow traditional Semver versioning (see [rationale](https://github.com/google/flatbuffers/wiki/Versioning)) but rather uses a format of the date of the release.
|
FlatBuffers does not follow traditional SemVer versioning (see [rationale](https://github.com/google/flatbuffers/wiki/Versioning)) but rather uses a format of the date of the release.
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
|
|
||||||
@@ -57,10 +96,7 @@ FlatBuffers does not follow traditional Semver versioning (see [rationale](https
|
|||||||
|
|
||||||
## Community
|
## Community
|
||||||
|
|
||||||
* [FlatBuffers Google Group][] to discuss FlatBuffers with other developers and users.
|
|
||||||
* [Discord Server](https:///discord.gg/6qgKs3R)
|
* [Discord Server](https:///discord.gg/6qgKs3R)
|
||||||
* [Gitter](https://gitter.im/google/flatbuffers)
|
|
||||||
|
|
||||||
|
|
||||||
## Security
|
## Security
|
||||||
|
|
||||||
105
WORKSPACE
105
WORKSPACE
@@ -1,105 +0,0 @@
|
|||||||
workspace(name = "com_github_google_flatbuffers")
|
|
||||||
|
|
||||||
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
|
|
||||||
|
|
||||||
http_archive(
|
|
||||||
name = "platforms",
|
|
||||||
sha256 = "379113459b0feaf6bfbb584a91874c065078aa673222846ac765f86661c27407",
|
|
||||||
urls = [
|
|
||||||
"https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.5/platforms-0.0.5.tar.gz",
|
|
||||||
"https://github.com/bazelbuild/platforms/releases/download/0.0.5/platforms-0.0.5.tar.gz",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
http_archive(
|
|
||||||
name = "build_bazel_rules_swift",
|
|
||||||
sha256 = "a2fd565e527f83fb3f9eb07eb9737240e668c9242d3bc318712efa54a7deda97",
|
|
||||||
url = "https://github.com/bazelbuild/rules_swift/releases/download/0.27.0/rules_swift.0.27.0.tar.gz",
|
|
||||||
)
|
|
||||||
|
|
||||||
load(
|
|
||||||
"@build_bazel_rules_swift//swift:repositories.bzl",
|
|
||||||
"swift_rules_dependencies",
|
|
||||||
)
|
|
||||||
|
|
||||||
swift_rules_dependencies()
|
|
||||||
|
|
||||||
load(
|
|
||||||
"@build_bazel_rules_swift//swift:extras.bzl",
|
|
||||||
"swift_rules_extra_dependencies",
|
|
||||||
)
|
|
||||||
|
|
||||||
swift_rules_extra_dependencies()
|
|
||||||
|
|
||||||
http_archive(
|
|
||||||
name = "io_bazel_rules_go",
|
|
||||||
sha256 = "ae013bf35bd23234d1dea46b079f1e05ba74ac0321423830119d3e787ec73483",
|
|
||||||
urls = [
|
|
||||||
"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.36.0/rules_go-v0.36.0.zip",
|
|
||||||
"https://github.com/bazelbuild/rules_go/releases/download/v0.36.0/rules_go-v0.36.0.zip",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
load("@io_bazel_rules_go//go:deps.bzl", "go_rules_dependencies")
|
|
||||||
|
|
||||||
go_rules_dependencies()
|
|
||||||
|
|
||||||
##### Protobuf
|
|
||||||
_PROTOBUF_VERSION = "3.15.2"
|
|
||||||
|
|
||||||
http_archive(
|
|
||||||
name = "com_google_protobuf",
|
|
||||||
strip_prefix = "protobuf-" + _PROTOBUF_VERSION,
|
|
||||||
urls = [
|
|
||||||
"https://github.com/protocolbuffers/protobuf/archive/v" + _PROTOBUF_VERSION + ".tar.gz",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
##### GRPC
|
|
||||||
_GRPC_VERSION = "1.49.0" # https://github.com/grpc/grpc/releases/tag/v1.48.0
|
|
||||||
|
|
||||||
http_archive(
|
|
||||||
name = "com_github_grpc_grpc",
|
|
||||||
patch_args = ["-p1"],
|
|
||||||
patches = ["//grpc:build_grpc_with_cxx14.patch"],
|
|
||||||
sha256 = "15715e1847cc9e42014f02c727dbcb48e39dbdb90f79ad3d66fe4361709ff935",
|
|
||||||
strip_prefix = "grpc-" + _GRPC_VERSION,
|
|
||||||
urls = ["https://github.com/grpc/grpc/archive/refs/tags/v" + _GRPC_VERSION + ".tar.gz"],
|
|
||||||
)
|
|
||||||
|
|
||||||
load("@com_github_grpc_grpc//bazel:grpc_deps.bzl", "grpc_deps")
|
|
||||||
|
|
||||||
grpc_deps()
|
|
||||||
|
|
||||||
load("@com_github_grpc_grpc//bazel:grpc_extra_deps.bzl", "grpc_extra_deps")
|
|
||||||
|
|
||||||
grpc_extra_deps()
|
|
||||||
|
|
||||||
# rules_go from https://github.com/bazelbuild/rules_go/releases/tag/v0.34.0
|
|
||||||
http_archive(
|
|
||||||
name = "build_bazel_rules_nodejs",
|
|
||||||
sha256 = "965ee2492a2b087cf9e0f2ca472aeaf1be2eb650e0cfbddf514b9a7d3ea4b02a",
|
|
||||||
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/5.2.0/rules_nodejs-5.2.0.tar.gz"],
|
|
||||||
)
|
|
||||||
|
|
||||||
load("@build_bazel_rules_nodejs//:repositories.bzl", "build_bazel_rules_nodejs_dependencies")
|
|
||||||
|
|
||||||
build_bazel_rules_nodejs_dependencies()
|
|
||||||
|
|
||||||
load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install")
|
|
||||||
|
|
||||||
node_repositories()
|
|
||||||
|
|
||||||
yarn_install(
|
|
||||||
name = "npm",
|
|
||||||
exports_directories_only = False,
|
|
||||||
# Unfreeze to add/remove packages.
|
|
||||||
frozen_lockfile = False,
|
|
||||||
package_json = "//:package.json",
|
|
||||||
symlink_node_modules = False,
|
|
||||||
yarn_lock = "//:yarn.lock",
|
|
||||||
)
|
|
||||||
|
|
||||||
load("@build_bazel_rules_nodejs//toolchains/esbuild:esbuild_repositories.bzl", "esbuild_repositories")
|
|
||||||
|
|
||||||
esbuild_repositories(npm_repository = "npm")
|
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
</natures>
|
</natures>
|
||||||
<filteredResources>
|
<filteredResources>
|
||||||
<filter>
|
<filter>
|
||||||
<id>1677235311958</id>
|
<id>1672434305228</id>
|
||||||
<name></name>
|
<name></name>
|
||||||
<type>30</type>
|
<type>30</type>
|
||||||
<matcher>
|
<matcher>
|
||||||
|
|||||||
@@ -48,7 +48,6 @@ find_library( # Sets the name of the path variable.
|
|||||||
target_link_libraries( # Specifies the target library.
|
target_link_libraries( # Specifies the target library.
|
||||||
native-lib
|
native-lib
|
||||||
flatbuffers
|
flatbuffers
|
||||||
flatbuffers_tests
|
|
||||||
# Links the target library to the log library
|
# Links the target library to the log library
|
||||||
# included in the NDK.
|
# included in the NDK.
|
||||||
${log-lib} )
|
${log-lib} )
|
||||||
|
|||||||
@@ -48,26 +48,9 @@ set(FlatBuffers_Library_SRCS
|
|||||||
${FLATBUFFERS_SRC}/src/code_generators.cpp
|
${FLATBUFFERS_SRC}/src/code_generators.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
set(FlatBuffers_Test_SRCS
|
|
||||||
${FLATBUFFERS_SRC}/tests/test.cpp
|
|
||||||
${FLATBUFFERS_SRC}/tests/test_assert.h
|
|
||||||
${FLATBUFFERS_SRC}/tests/test_builder.h
|
|
||||||
${FLATBUFFERS_SRC}/tests/test_assert.cpp
|
|
||||||
${FLATBUFFERS_SRC}/tests/test_builder.cpp
|
|
||||||
${FLATBUFFERS_SRC}/tests/native_type_test_impl.h
|
|
||||||
${FLATBUFFERS_SRC}/tests/native_type_test_impl.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
add_library( # Sets the name of the library.
|
add_library( # Sets the name of the library.
|
||||||
flatbuffers
|
flatbuffers
|
||||||
|
|
||||||
${FlatBuffers_Library_SRCS}
|
${FlatBuffers_Library_SRCS}
|
||||||
${FlatBuffers_Test_SRCS}
|
|
||||||
${Generated_SRCS}
|
${Generated_SRCS}
|
||||||
)
|
)
|
||||||
|
|
||||||
add_library( # Sets the name of the library.
|
|
||||||
flatbuffers_tests
|
|
||||||
|
|
||||||
${FlatBuffers_Test_SRCS}
|
|
||||||
)
|
|
||||||
|
|||||||
@@ -8,9 +8,9 @@
|
|||||||
|
|
||||||
// Ensure the included flatbuffers.h is the same version as when this file was
|
// Ensure the included flatbuffers.h is the same version as when this file was
|
||||||
// generated, otherwise it may not be compatible.
|
// generated, otherwise it may not be compatible.
|
||||||
static_assert(FLATBUFFERS_VERSION_MAJOR == 23 &&
|
static_assert(FLATBUFFERS_VERSION_MAJOR == 24 &&
|
||||||
FLATBUFFERS_VERSION_MINOR == 1 &&
|
FLATBUFFERS_VERSION_MINOR == 12 &&
|
||||||
FLATBUFFERS_VERSION_REVISION == 21,
|
FLATBUFFERS_VERSION_REVISION == 23,
|
||||||
"Non-compatible flatbuffers version included");
|
"Non-compatible flatbuffers version included");
|
||||||
|
|
||||||
namespace com {
|
namespace com {
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ class Animal : Table() {
|
|||||||
return if(o != 0) bb.getShort(o + bb_pos).toUShort() else 0u
|
return if(o != 0) bb.getShort(o + bb_pos).toUShort() else 0u
|
||||||
}
|
}
|
||||||
companion object {
|
companion object {
|
||||||
fun validateVersion() = Constants.FLATBUFFERS_23_3_3()
|
fun validateVersion() = Constants.FLATBUFFERS_25_1_24()
|
||||||
fun getRootAsAnimal(_bb: ByteBuffer): Animal = getRootAsAnimal(_bb, Animal())
|
fun getRootAsAnimal(_bb: ByteBuffer): Animal = getRootAsAnimal(_bb, Animal())
|
||||||
fun getRootAsAnimal(_bb: ByteBuffer, obj: Animal): Animal {
|
fun getRootAsAnimal(_bb: ByteBuffer, obj: Animal): Animal {
|
||||||
_bb.order(ByteOrder.LITTLE_ENDIAN)
|
_bb.order(ByteOrder.LITTLE_ENDIAN)
|
||||||
|
|||||||
@@ -8,9 +8,9 @@
|
|||||||
|
|
||||||
// Ensure the included flatbuffers.h is the same version as when this file was
|
// Ensure the included flatbuffers.h is the same version as when this file was
|
||||||
// generated, otherwise it may not be compatible.
|
// generated, otherwise it may not be compatible.
|
||||||
static_assert(FLATBUFFERS_VERSION_MAJOR == 2 &&
|
static_assert(FLATBUFFERS_VERSION_MAJOR == 24 &&
|
||||||
FLATBUFFERS_VERSION_MINOR == 0 &&
|
FLATBUFFERS_VERSION_MINOR == 12 &&
|
||||||
FLATBUFFERS_VERSION_REVISION == 6,
|
FLATBUFFERS_VERSION_REVISION == 23,
|
||||||
"Non-compatible flatbuffers version included");
|
"Non-compatible flatbuffers version included");
|
||||||
|
|
||||||
namespace benchmarks_flatbuffers {
|
namespace benchmarks_flatbuffers {
|
||||||
|
|||||||
@@ -0,0 +1,201 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2024 Google Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import Benchmark
|
||||||
|
import CoreFoundation
|
||||||
|
import FlatBuffers
|
||||||
|
|
||||||
|
@usableFromInline
|
||||||
|
struct AA: NativeStruct {
|
||||||
|
public init(a: Double, b: Double) {
|
||||||
|
self.a = a
|
||||||
|
self.b = b
|
||||||
|
}
|
||||||
|
var a: Double
|
||||||
|
var b: Double
|
||||||
|
}
|
||||||
|
|
||||||
|
let benchmarks = {
|
||||||
|
let ints: [Int] = Array(repeating: 42, count: 100)
|
||||||
|
let bytes: [UInt8] = Array(repeating: 42, count: 100)
|
||||||
|
let str10 = (0...9).map { _ -> String in "x" }.joined()
|
||||||
|
let str100 = (0...99).map { _ -> String in "x" }.joined()
|
||||||
|
let array: [AA] = [
|
||||||
|
AA(a: 2.4, b: 2.4),
|
||||||
|
AA(a: 2.4, b: 2.4),
|
||||||
|
AA(a: 2.4, b: 2.4),
|
||||||
|
AA(a: 2.4, b: 2.4),
|
||||||
|
AA(a: 2.4, b: 2.4),
|
||||||
|
]
|
||||||
|
|
||||||
|
let metrics: [BenchmarkMetric] = [
|
||||||
|
.cpuTotal,
|
||||||
|
.wallClock,
|
||||||
|
.mallocCountTotal,
|
||||||
|
.releaseCount,
|
||||||
|
.peakMemoryResident,
|
||||||
|
]
|
||||||
|
let maxIterations = 1_000_000
|
||||||
|
let maxDuration: Duration = .seconds(3)
|
||||||
|
let singleConfiguration: Benchmark.Configuration = .init(
|
||||||
|
metrics: metrics,
|
||||||
|
warmupIterations: 1,
|
||||||
|
scalingFactor: .one,
|
||||||
|
maxDuration: maxDuration,
|
||||||
|
maxIterations: maxIterations)
|
||||||
|
let kiloConfiguration: Benchmark.Configuration = .init(
|
||||||
|
metrics: metrics,
|
||||||
|
warmupIterations: 1,
|
||||||
|
scalingFactor: .kilo,
|
||||||
|
maxDuration: maxDuration,
|
||||||
|
maxIterations: maxIterations)
|
||||||
|
let megaConfiguration: Benchmark.Configuration = .init(
|
||||||
|
metrics: metrics,
|
||||||
|
warmupIterations: 1,
|
||||||
|
scalingFactor: .mega,
|
||||||
|
maxDuration: maxDuration,
|
||||||
|
maxIterations: maxIterations)
|
||||||
|
|
||||||
|
Benchmark.defaultConfiguration = megaConfiguration
|
||||||
|
|
||||||
|
Benchmark("Allocating 1GB", configuration: singleConfiguration) { benchmark in
|
||||||
|
for _ in benchmark.scaledIterations {
|
||||||
|
blackHole(FlatBufferBuilder(initialSize: 1_024_000_000))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Benchmark("Clearing 1GB", configuration: singleConfiguration) { benchmark in
|
||||||
|
var fb = FlatBufferBuilder(initialSize: 1_024_000_000)
|
||||||
|
benchmark.startMeasurement()
|
||||||
|
for _ in benchmark.scaledIterations {
|
||||||
|
blackHole(fb.clear())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Benchmark("Strings 10") { benchmark in
|
||||||
|
var fb = FlatBufferBuilder(initialSize: 1<<20)
|
||||||
|
benchmark.startMeasurement()
|
||||||
|
for _ in benchmark.scaledIterations {
|
||||||
|
blackHole(fb.create(string: str10))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Benchmark("Strings 100") { benchmark in
|
||||||
|
var fb = FlatBufferBuilder(initialSize: 1<<20)
|
||||||
|
benchmark.startMeasurement()
|
||||||
|
for _ in benchmark.scaledIterations {
|
||||||
|
blackHole(fb.create(string: str100))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Benchmark("Vector 1 Bytes") { benchmark in
|
||||||
|
var fb = FlatBufferBuilder(initialSize: 1<<20)
|
||||||
|
benchmark.startMeasurement()
|
||||||
|
for _ in benchmark.scaledIterations {
|
||||||
|
blackHole(fb.createVector(bytes: bytes))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Benchmark("Vector 1 Ints") { benchmark in
|
||||||
|
var fb = FlatBufferBuilder(initialSize: 1<<20)
|
||||||
|
benchmark.startMeasurement()
|
||||||
|
for _ in benchmark.scaledIterations {
|
||||||
|
blackHole(fb.createVector(ints))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Benchmark("Vector 100 Ints") { benchmark in
|
||||||
|
var fb = FlatBufferBuilder(initialSize: 1<<20)
|
||||||
|
benchmark.startMeasurement()
|
||||||
|
for i in benchmark.scaledIterations {
|
||||||
|
blackHole(fb.createVector(ints))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Benchmark("Vector 100 Bytes") { benchmark in
|
||||||
|
var fb = FlatBufferBuilder(initialSize: 1<<20)
|
||||||
|
benchmark.startMeasurement()
|
||||||
|
for i in benchmark.scaledIterations {
|
||||||
|
blackHole(fb.createVector(bytes))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Benchmark("Vector 100 ContiguousBytes") { benchmark in
|
||||||
|
var fb = FlatBufferBuilder(initialSize: 1<<20)
|
||||||
|
benchmark.startMeasurement()
|
||||||
|
for i in benchmark.scaledIterations {
|
||||||
|
blackHole(fb.createVector(bytes: bytes))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Benchmark(
|
||||||
|
"FlatBufferBuilder Add",
|
||||||
|
configuration: kiloConfiguration)
|
||||||
|
{ benchmark in
|
||||||
|
var fb = FlatBufferBuilder(initialSize: 1024 * 1024 * 32)
|
||||||
|
benchmark.startMeasurement()
|
||||||
|
for _ in benchmark.scaledIterations {
|
||||||
|
let off = fb.create(string: "T")
|
||||||
|
let s = fb.startTable(with: 4)
|
||||||
|
fb.add(element: 3.2, def: 0, at: 2)
|
||||||
|
fb.add(element: 4.2, def: 0, at: 4)
|
||||||
|
fb.add(element: 5.2, def: 0, at: 6)
|
||||||
|
fb.add(offset: off, at: 8)
|
||||||
|
blackHole(fb.endTable(at: s))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Benchmark("Structs") { benchmark in
|
||||||
|
let rawSize = ((16 * 5) * benchmark.scaledIterations.count) / 1024
|
||||||
|
var fb = FlatBufferBuilder(initialSize: Int32(rawSize * 1600))
|
||||||
|
var offsets: [Offset] = []
|
||||||
|
|
||||||
|
benchmark.startMeasurement()
|
||||||
|
for _ in benchmark.scaledIterations {
|
||||||
|
let vector = fb.createVector(
|
||||||
|
ofStructs: array)
|
||||||
|
let start = fb.startTable(with: 1)
|
||||||
|
fb.add(offset: vector, at: 4)
|
||||||
|
offsets.append(Offset(offset: fb.endTable(at: start)))
|
||||||
|
}
|
||||||
|
|
||||||
|
let vector = fb.createVector(ofOffsets: offsets)
|
||||||
|
let start = fb.startTable(with: 1)
|
||||||
|
fb.add(offset: vector, at: 4)
|
||||||
|
let root = Offset(offset: fb.endTable(at: start))
|
||||||
|
fb.finish(offset: root)
|
||||||
|
}
|
||||||
|
|
||||||
|
Benchmark("Vector of Offsets") { benchmark in
|
||||||
|
let rawSize = ((16 * 5) * benchmark.scaledIterations.count) / 1024
|
||||||
|
var fb = FlatBufferBuilder(initialSize: Int32(rawSize * 1600))
|
||||||
|
benchmark.startMeasurement()
|
||||||
|
for _ in benchmark.scaledIterations {
|
||||||
|
let offsets = [
|
||||||
|
fb.create(string: "T"),
|
||||||
|
fb.create(string: "2"),
|
||||||
|
fb.create(string: "3"),
|
||||||
|
]
|
||||||
|
let off = fb.createVector(ofOffsets: [
|
||||||
|
fb.createVector(ofOffsets: offsets),
|
||||||
|
fb.createVector(ofOffsets: offsets),
|
||||||
|
])
|
||||||
|
let s = fb.startTable(with: 2)
|
||||||
|
fb.add(offset: off, at: 2)
|
||||||
|
blackHole(fb.endTable(at: s))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
// swift-tools-version:5.1
|
// swift-tools-version:5.8
|
||||||
/*
|
/*
|
||||||
* Copyright 2020 Google Inc. All rights reserved.
|
* Copyright 2020 Google Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -20,15 +20,23 @@ import PackageDescription
|
|||||||
let package = Package(
|
let package = Package(
|
||||||
name: "benchmarks",
|
name: "benchmarks",
|
||||||
platforms: [
|
platforms: [
|
||||||
.macOS(.v10_14),
|
.macOS(.v13),
|
||||||
],
|
],
|
||||||
dependencies: [
|
dependencies: [
|
||||||
.package(path: "../../.."),
|
.package(path: "../.."),
|
||||||
.package(url: "https://github.com/google/swift-benchmark", from: "0.1.0"),
|
.package(
|
||||||
|
url: "https://github.com/ordo-one/package-benchmark",
|
||||||
|
from: "1.27.0"),
|
||||||
],
|
],
|
||||||
targets: [
|
targets: [
|
||||||
.target(
|
.executableTarget(
|
||||||
name: "benchmarks",
|
name: "FlatbuffersBenchmarks",
|
||||||
dependencies: ["FlatBuffers",
|
dependencies: [
|
||||||
.product(name: "Benchmark", package: "swift-benchmark")]),
|
.product(name: "FlatBuffers", package: "flatbuffers"),
|
||||||
|
.product(name: "Benchmark", package: "package-benchmark"),
|
||||||
|
],
|
||||||
|
path: "Benchmarks/FlatbuffersBenchmarks",
|
||||||
|
plugins: [
|
||||||
|
.plugin(name: "BenchmarkPlugin", package: "package-benchmark"),
|
||||||
|
]),
|
||||||
])
|
])
|
||||||
9
benchmarks/swift/README.md
Normal file
9
benchmarks/swift/README.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# Benchmarks
|
||||||
|
|
||||||
|
To open the benchmarks in xcode use:
|
||||||
|
|
||||||
|
`open --env BENCHMARK_DISABLE_JEMALLOC=true Package.swift`
|
||||||
|
|
||||||
|
or running them directly within terminal using:
|
||||||
|
|
||||||
|
`swift package benchmark`
|
||||||
@@ -7,13 +7,13 @@ Rules for building C++ flatbuffers with Bazel.
|
|||||||
|
|
||||||
load("@rules_cc//cc:defs.bzl", "cc_library")
|
load("@rules_cc//cc:defs.bzl", "cc_library")
|
||||||
|
|
||||||
TRUE_FLATC_PATH = "@com_github_google_flatbuffers//:flatc"
|
TRUE_FLATC_PATH = Label("//:flatc")
|
||||||
|
|
||||||
DEFAULT_INCLUDE_PATHS = [
|
DEFAULT_INCLUDE_PATHS = [
|
||||||
"./",
|
"./",
|
||||||
"$(GENDIR)",
|
"$(GENDIR)",
|
||||||
"$(BINDIR)",
|
"$(BINDIR)",
|
||||||
"$(execpath @com_github_google_flatbuffers//:flatc).runfiles/com_github_google_flatbuffers",
|
"$(execpath %s).runfiles/%s" % (TRUE_FLATC_PATH, TRUE_FLATC_PATH.repo_name),
|
||||||
]
|
]
|
||||||
|
|
||||||
def default_include_paths(flatc_path):
|
def default_include_paths(flatc_path):
|
||||||
@@ -21,7 +21,7 @@ def default_include_paths(flatc_path):
|
|||||||
"./",
|
"./",
|
||||||
"$(GENDIR)",
|
"$(GENDIR)",
|
||||||
"$(BINDIR)",
|
"$(BINDIR)",
|
||||||
"$(execpath %s).runfiles/com_github_google_flatbuffers" % (flatc_path),
|
"$(execpath %s).runfiles/%s" % (flatc_path, flatc_path.repo_name),
|
||||||
]
|
]
|
||||||
|
|
||||||
DEFAULT_FLATC_ARGS = [
|
DEFAULT_FLATC_ARGS = [
|
||||||
@@ -47,8 +47,11 @@ def flatbuffer_library_public(
|
|||||||
compatible_with = None,
|
compatible_with = None,
|
||||||
restricted_to = None,
|
restricted_to = None,
|
||||||
target_compatible_with = None,
|
target_compatible_with = None,
|
||||||
flatc_path = "@com_github_google_flatbuffers//:flatc",
|
flatc_path = None,
|
||||||
output_to_bindir = False):
|
output_to_bindir = False,
|
||||||
|
tools = None,
|
||||||
|
extra_env = None,
|
||||||
|
**kwargs):
|
||||||
"""Generates code files for reading/writing the given flatbuffers in the requested language using the public compiler.
|
"""Generates code files for reading/writing the given flatbuffers in the requested language using the public compiler.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@@ -73,16 +76,29 @@ def flatbuffer_library_public(
|
|||||||
to use.
|
to use.
|
||||||
flatc_path: Bazel target corresponding to the flatc compiler to use.
|
flatc_path: Bazel target corresponding to the flatc compiler to use.
|
||||||
output_to_bindir: Passed to genrule for output to bin directory.
|
output_to_bindir: Passed to genrule for output to bin directory.
|
||||||
|
tools: Optional, passed to genrule for list of tools to make available
|
||||||
|
during the action.
|
||||||
|
extra_env: Optional, must be a string of "VAR1=VAL1 VAR2=VAL2". These get
|
||||||
|
set as environment variables that "flatc_path" sees.
|
||||||
|
**kwargs: Passed to the underlying genrule.
|
||||||
|
|
||||||
|
|
||||||
This rule creates a filegroup(name) with all generated source files, and
|
This rule creates a filegroup(name) with all generated source files, and
|
||||||
optionally a Fileset([reflection_name]) with all generated reflection
|
optionally a Fileset([reflection_name]) with all generated reflection
|
||||||
binaries.
|
binaries.
|
||||||
"""
|
"""
|
||||||
|
if flatc_path == None:
|
||||||
|
flatc_path = TRUE_FLATC_PATH
|
||||||
|
else:
|
||||||
|
flatc_path = native.package_relative_label(flatc_path)
|
||||||
|
|
||||||
|
reflection_include_paths = include_paths
|
||||||
if include_paths == None:
|
if include_paths == None:
|
||||||
include_paths = default_include_paths(flatc_path)
|
include_paths = default_include_paths(flatc_path)
|
||||||
include_paths_cmd = ["-I %s" % (s) for s in include_paths]
|
include_paths_cmd = ["-I %s" % (s) for s in include_paths]
|
||||||
|
|
||||||
|
extra_env = extra_env or ""
|
||||||
|
|
||||||
# '$(@D)' when given a single source target will give the appropriate
|
# '$(@D)' when given a single source target will give the appropriate
|
||||||
# directory. Appending 'out_prefix' is only necessary when given a build
|
# directory. Appending 'out_prefix' is only necessary when given a build
|
||||||
# target with multiple sources.
|
# target with multiple sources.
|
||||||
@@ -92,7 +108,7 @@ def flatbuffer_library_public(
|
|||||||
genrule_cmd = " ".join([
|
genrule_cmd = " ".join([
|
||||||
"SRCS=($(SRCS));",
|
"SRCS=($(SRCS));",
|
||||||
"for f in $${SRCS[@]:0:%s}; do" % len(srcs),
|
"for f in $${SRCS[@]:0:%s}; do" % len(srcs),
|
||||||
"OUTPUT_FILE=\"$(OUTS)\" $(location %s)" % (flatc_path),
|
"OUTPUT_FILE=\"$(OUTS)\" %s $(location %s)" % (extra_env, flatc_path),
|
||||||
" ".join(include_paths_cmd),
|
" ".join(include_paths_cmd),
|
||||||
" ".join(flatc_args),
|
" ".join(flatc_args),
|
||||||
language_flag,
|
language_flag,
|
||||||
@@ -105,30 +121,37 @@ def flatbuffer_library_public(
|
|||||||
srcs = srcs + includes,
|
srcs = srcs + includes,
|
||||||
outs = outs,
|
outs = outs,
|
||||||
output_to_bindir = output_to_bindir,
|
output_to_bindir = output_to_bindir,
|
||||||
tools = [flatc_path],
|
tools = (tools or []) + [flatc_path],
|
||||||
cmd = genrule_cmd,
|
cmd = genrule_cmd,
|
||||||
compatible_with = compatible_with,
|
compatible_with = compatible_with,
|
||||||
target_compatible_with = target_compatible_with,
|
target_compatible_with = target_compatible_with,
|
||||||
restricted_to = restricted_to,
|
restricted_to = restricted_to,
|
||||||
message = "Generating flatbuffer files for %s:" % (name),
|
message = "Generating flatbuffer files for %s:" % (name),
|
||||||
|
**kwargs
|
||||||
)
|
)
|
||||||
if reflection_name:
|
if reflection_name:
|
||||||
|
if reflection_include_paths == None:
|
||||||
|
reflection_include_paths = default_include_paths(TRUE_FLATC_PATH)
|
||||||
|
reflection_include_paths_cmd = ["-I %s" % (s) for s in reflection_include_paths]
|
||||||
reflection_genrule_cmd = " ".join([
|
reflection_genrule_cmd = " ".join([
|
||||||
"SRCS=($(SRCS));",
|
"SRCS=($(SRCS));",
|
||||||
"for f in $${SRCS[@]:0:%s}; do" % len(srcs),
|
"for f in $${SRCS[@]:0:%s}; do" % len(srcs),
|
||||||
|
# Move the .fbs file into the current package if it is not there already
|
||||||
|
'if [[ $$(dirname $$f) != "{0}" ]]; then s="$$f"; f="{0}/$$(basename "$$f")"; mkdir -p "{0}"; mv "$$s" "$$f"; fi;'.format(native.package_relative_label(":invalid").package),
|
||||||
"$(location %s)" % (TRUE_FLATC_PATH),
|
"$(location %s)" % (TRUE_FLATC_PATH),
|
||||||
"-b --schema",
|
"-b --schema",
|
||||||
" ".join(flatc_args),
|
" ".join(flatc_args),
|
||||||
" ".join(include_paths_cmd),
|
" ".join(reflection_include_paths_cmd),
|
||||||
language_flag,
|
language_flag,
|
||||||
output_directory,
|
output_directory,
|
||||||
"$$f;",
|
"$$f;",
|
||||||
"done",
|
"done",
|
||||||
])
|
])
|
||||||
reflection_outs = [
|
reflection_outs = [
|
||||||
(out_prefix + "%s.bfbs") % (s.replace(".fbs", "").split("/")[-1])
|
(out_prefix + "%s.bfbs") % (native.package_relative_label(s).name.removesuffix(".fbs"))
|
||||||
for s in srcs
|
for s in srcs
|
||||||
]
|
]
|
||||||
|
|
||||||
native.genrule(
|
native.genrule(
|
||||||
name = "%s_srcs" % reflection_name,
|
name = "%s_srcs" % reflection_name,
|
||||||
srcs = srcs + includes,
|
srcs = srcs + includes,
|
||||||
@@ -154,6 +177,7 @@ def flatbuffer_cc_library(
|
|||||||
name,
|
name,
|
||||||
srcs,
|
srcs,
|
||||||
srcs_filegroup_name = "",
|
srcs_filegroup_name = "",
|
||||||
|
outs = [],
|
||||||
out_prefix = "",
|
out_prefix = "",
|
||||||
deps = [],
|
deps = [],
|
||||||
includes = [],
|
includes = [],
|
||||||
@@ -174,6 +198,7 @@ def flatbuffer_cc_library(
|
|||||||
srcs_filegroup_name: Name of the output filegroup that holds srcs. Pass this
|
srcs_filegroup_name: Name of the output filegroup that holds srcs. Pass this
|
||||||
filegroup into the `includes` parameter of any other
|
filegroup into the `includes` parameter of any other
|
||||||
flatbuffer_cc_library that depends on this one's schemas.
|
flatbuffer_cc_library that depends on this one's schemas.
|
||||||
|
outs: Additional outputs expected to be generated by flatc.
|
||||||
out_prefix: Prepend this path to the front of all generated files. Usually
|
out_prefix: Prepend this path to the front of all generated files. Usually
|
||||||
is a directory name.
|
is a directory name.
|
||||||
deps: Optional, list of other flatbuffer_cc_library's to depend on. Cannot be specified
|
deps: Optional, list of other flatbuffer_cc_library's to depend on. Cannot be specified
|
||||||
@@ -221,7 +246,7 @@ def flatbuffer_cc_library(
|
|||||||
flatbuffer_library_public(
|
flatbuffer_library_public(
|
||||||
name = srcs_lib,
|
name = srcs_lib,
|
||||||
srcs = srcs,
|
srcs = srcs,
|
||||||
outs = output_headers,
|
outs = outs + output_headers,
|
||||||
language_flag = "-c",
|
language_flag = "-c",
|
||||||
out_prefix = out_prefix,
|
out_prefix = out_prefix,
|
||||||
includes = includes,
|
includes = includes,
|
||||||
@@ -245,8 +270,8 @@ def flatbuffer_cc_library(
|
|||||||
"-parse_headers",
|
"-parse_headers",
|
||||||
],
|
],
|
||||||
deps = [
|
deps = [
|
||||||
"@com_github_google_flatbuffers//:runtime_cc",
|
Label("//:runtime_cc"),
|
||||||
"@com_github_google_flatbuffers//:flatbuffers",
|
Label("//:flatbuffers"),
|
||||||
] + deps,
|
] + deps,
|
||||||
includes = cc_include_paths,
|
includes = cc_include_paths,
|
||||||
compatible_with = compatible_with,
|
compatible_with = compatible_with,
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ class FlatbuffersConan(ConanFile):
|
|||||||
options = {"shared": [True, False], "fPIC": [True, False]}
|
options = {"shared": [True, False], "fPIC": [True, False]}
|
||||||
default_options = {"shared": False, "fPIC": True}
|
default_options = {"shared": False, "fPIC": True}
|
||||||
generators = "cmake"
|
generators = "cmake"
|
||||||
exports = "LICENSE.txt"
|
exports = "LICENSE"
|
||||||
exports_sources = ["CMake/*", "include/*", "src/*", "grpc/*", "CMakeLists.txt", "conan/CMakeLists.txt"]
|
exports_sources = ["CMake/*", "include/*", "src/*", "grpc/*", "CMakeLists.txt", "conan/CMakeLists.txt"]
|
||||||
|
|
||||||
def source(self):
|
def source(self):
|
||||||
@@ -56,7 +56,7 @@ class FlatbuffersConan(ConanFile):
|
|||||||
"""
|
"""
|
||||||
cmake = self.configure_cmake()
|
cmake = self.configure_cmake()
|
||||||
cmake.install()
|
cmake.install()
|
||||||
self.copy(pattern="LICENSE.txt", dst="licenses")
|
self.copy(pattern="LICENSE", dst="licenses")
|
||||||
self.copy(pattern="FindFlatBuffers.cmake", dst=os.path.join("lib", "cmake", "flatbuffers"), src="CMake")
|
self.copy(pattern="FindFlatBuffers.cmake", dst=os.path.join("lib", "cmake", "flatbuffers"), src="CMake")
|
||||||
self.copy(pattern="flathash*", dst="bin", src="bin")
|
self.copy(pattern="flathash*", dst="bin", src="bin")
|
||||||
self.copy(pattern="flatc*", dst="bin", src="bin")
|
self.copy(pattern="flatc*", dst="bin", src="bin")
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
## 23.5.26
|
||||||
|
|
||||||
|
- omit type annotationes for local variables (#7067, #7069, #7070)
|
||||||
|
- remove BSD 3-clause license (#7073)
|
||||||
|
- correctly parse lists of enums (#7157)
|
||||||
|
- align naming conventions for generated code (#7187)
|
||||||
|
- add `putBool` to fix errors when serializing structs with booleans (#7359)
|
||||||
|
- fix handling of +/-inf defaults in codegen (#7588)
|
||||||
|
- fix import issues in generated code (#7621)
|
||||||
|
- Fix incorrect storage of floats as ints in some cases (#7703)
|
||||||
|
- add final modifiers to the library implementation (#7943)
|
||||||
|
|
||||||
## 2.0.5
|
## 2.0.5
|
||||||
|
|
||||||
- switch to null safety (#6696)
|
- switch to null safety (#6696)
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
This package is used to read and write [FlatBuffers](https://google.github.io/flatbuffers/).
|
This package is used to read and write [FlatBuffers](https://google.github.io/flatbuffers/).
|
||||||
|
|
||||||
Most consumers will want to use the [`flatc` - FlatBuffer compiler](https://github.com/google/flatbuffers) binary for your platform.
|
Most consumers will want to use the [`flatc` - FlatBuffer compiler](https://github.com/google/flatbuffers) binary for your platform.
|
||||||
You can find it in the `generator/{Platform}` directory of the [released package archive](https://pub.dev/packages/flat_buffers/versions/2.0.5.tar.gz).
|
You can download the flatc version matching your dart package version from [GitHub releases](https://github.com/google/flatbuffers/releases).
|
||||||
|
|
||||||
The FlatBuffer compiler `flatc` reads a FlatBuffers IDL schema and generates Dart code.
|
The FlatBuffer compiler `flatc` reads a FlatBuffers IDL schema and generates Dart code.
|
||||||
The generated classes can be used to read or write binary data/files that are interoperable with
|
The generated classes can be used to read or write binary data/files that are interoperable with
|
||||||
@@ -13,11 +13,3 @@ examples folder.
|
|||||||
For more details and documentation, head over to the official site and read the
|
For more details and documentation, head over to the official site and read the
|
||||||
[Tutorial](https://google.github.io/flatbuffers/flatbuffers_guide_tutorial.html) and how to
|
[Tutorial](https://google.github.io/flatbuffers/flatbuffers_guide_tutorial.html) and how to
|
||||||
[use FlatBuffers in Dart](https://google.github.io/flatbuffers/flatbuffers_guide_use_dart.html).
|
[use FlatBuffers in Dart](https://google.github.io/flatbuffers/flatbuffers_guide_use_dart.html).
|
||||||
|
|
||||||
## Dart 2.0 notes
|
|
||||||
Version 2.0.5 ships with it's own custom build of `flatc` because this is an extraordinary release to catch-up
|
|
||||||
with FlatBuffers for other platforms. This generator can only generate dart code (to avoid generating code for other platforms which isn't released yet).
|
|
||||||
On the other hand, the generated code still produces standard binary FlatBuffers compatible with other languages.
|
|
||||||
In other words: only `flatc --dart ...` works with this generator, but your app will be able to produce and read standard binary (`Uint8List`) FlatBuffers that are fully compotible with other languages supporting FlatBuffers (e.g. Java, C++, ...).
|
|
||||||
|
|
||||||
In the future a common `flatc` binary for all platforms would be shipped through GitHub release page instead.
|
|
||||||
|
|||||||
@@ -304,7 +304,7 @@ class Builder {
|
|||||||
assert(_inVTable);
|
assert(_inVTable);
|
||||||
// Prepare for writing the VTable.
|
// Prepare for writing the VTable.
|
||||||
_prepare(_sizeofInt32, 1);
|
_prepare(_sizeofInt32, 1);
|
||||||
var tableTail = _tail;
|
final tableTail = _tail;
|
||||||
// Prepare the size of the current table.
|
// Prepare the size of the current table.
|
||||||
final currentVTable = _currentVTable!;
|
final currentVTable = _currentVTable!;
|
||||||
currentVTable.tableSize = tableTail - _currentTableEndTail;
|
currentVTable.tableSize = tableTail - _currentTableEndTail;
|
||||||
@@ -386,7 +386,7 @@ class Builder {
|
|||||||
/// Updates the [offset] pointer. This method is intended for use when writing structs to the buffer.
|
/// Updates the [offset] pointer. This method is intended for use when writing structs to the buffer.
|
||||||
void putFloat64(double value) {
|
void putFloat64(double value) {
|
||||||
_prepare(_sizeofFloat64, 1);
|
_prepare(_sizeofFloat64, 1);
|
||||||
_setFloat32AtTail(_tail, value);
|
_setFloat64AtTail(_tail, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Writes a Float32 to the tail of the buffer after preparing space for it.
|
/// Writes a Float32 to the tail of the buffer after preparing space for it.
|
||||||
@@ -514,7 +514,7 @@ class Builder {
|
|||||||
var tail = _tail;
|
var tail = _tail;
|
||||||
_setUint32AtTail(tail, values.length);
|
_setUint32AtTail(tail, values.length);
|
||||||
tail -= _sizeofUint32;
|
tail -= _sizeofUint32;
|
||||||
for (var value in values) {
|
for (final value in values) {
|
||||||
_setUint32AtTail(tail, tail - value);
|
_setUint32AtTail(tail, tail - value);
|
||||||
tail -= _sizeofUint32;
|
tail -= _sizeofUint32;
|
||||||
}
|
}
|
||||||
@@ -529,7 +529,7 @@ class Builder {
|
|||||||
var tail = _tail;
|
var tail = _tail;
|
||||||
_setUint32AtTail(tail, values.length);
|
_setUint32AtTail(tail, values.length);
|
||||||
tail -= _sizeofUint32;
|
tail -= _sizeofUint32;
|
||||||
for (var value in values) {
|
for (final value in values) {
|
||||||
_setFloat64AtTail(tail, value);
|
_setFloat64AtTail(tail, value);
|
||||||
tail -= _sizeofFloat64;
|
tail -= _sizeofFloat64;
|
||||||
}
|
}
|
||||||
@@ -544,7 +544,7 @@ class Builder {
|
|||||||
var tail = _tail;
|
var tail = _tail;
|
||||||
_setUint32AtTail(tail, values.length);
|
_setUint32AtTail(tail, values.length);
|
||||||
tail -= _sizeofUint32;
|
tail -= _sizeofUint32;
|
||||||
for (var value in values) {
|
for (final value in values) {
|
||||||
_setFloat32AtTail(tail, value);
|
_setFloat32AtTail(tail, value);
|
||||||
tail -= _sizeofFloat32;
|
tail -= _sizeofFloat32;
|
||||||
}
|
}
|
||||||
@@ -559,7 +559,7 @@ class Builder {
|
|||||||
var tail = _tail;
|
var tail = _tail;
|
||||||
_setUint32AtTail(tail, values.length);
|
_setUint32AtTail(tail, values.length);
|
||||||
tail -= _sizeofUint32;
|
tail -= _sizeofUint32;
|
||||||
for (var value in values) {
|
for (final value in values) {
|
||||||
_setInt64AtTail(tail, value);
|
_setInt64AtTail(tail, value);
|
||||||
tail -= _sizeofInt64;
|
tail -= _sizeofInt64;
|
||||||
}
|
}
|
||||||
@@ -574,7 +574,7 @@ class Builder {
|
|||||||
var tail = _tail;
|
var tail = _tail;
|
||||||
_setUint32AtTail(tail, values.length);
|
_setUint32AtTail(tail, values.length);
|
||||||
tail -= _sizeofUint32;
|
tail -= _sizeofUint32;
|
||||||
for (var value in values) {
|
for (final value in values) {
|
||||||
_setUint64AtTail(tail, value);
|
_setUint64AtTail(tail, value);
|
||||||
tail -= _sizeofUint64;
|
tail -= _sizeofUint64;
|
||||||
}
|
}
|
||||||
@@ -589,7 +589,7 @@ class Builder {
|
|||||||
var tail = _tail;
|
var tail = _tail;
|
||||||
_setUint32AtTail(tail, values.length);
|
_setUint32AtTail(tail, values.length);
|
||||||
tail -= _sizeofUint32;
|
tail -= _sizeofUint32;
|
||||||
for (var value in values) {
|
for (final value in values) {
|
||||||
_setInt32AtTail(tail, value);
|
_setInt32AtTail(tail, value);
|
||||||
tail -= _sizeofInt32;
|
tail -= _sizeofInt32;
|
||||||
}
|
}
|
||||||
@@ -604,7 +604,7 @@ class Builder {
|
|||||||
var tail = _tail;
|
var tail = _tail;
|
||||||
_setUint32AtTail(tail, values.length);
|
_setUint32AtTail(tail, values.length);
|
||||||
tail -= _sizeofUint32;
|
tail -= _sizeofUint32;
|
||||||
for (var value in values) {
|
for (final value in values) {
|
||||||
_setUint32AtTail(tail, value);
|
_setUint32AtTail(tail, value);
|
||||||
tail -= _sizeofUint32;
|
tail -= _sizeofUint32;
|
||||||
}
|
}
|
||||||
@@ -619,7 +619,7 @@ class Builder {
|
|||||||
var tail = _tail;
|
var tail = _tail;
|
||||||
_setUint32AtTail(tail, values.length);
|
_setUint32AtTail(tail, values.length);
|
||||||
tail -= _sizeofUint32;
|
tail -= _sizeofUint32;
|
||||||
for (var value in values) {
|
for (final value in values) {
|
||||||
_setInt16AtTail(tail, value);
|
_setInt16AtTail(tail, value);
|
||||||
tail -= _sizeofInt16;
|
tail -= _sizeofInt16;
|
||||||
}
|
}
|
||||||
@@ -634,7 +634,7 @@ class Builder {
|
|||||||
var tail = _tail;
|
var tail = _tail;
|
||||||
_setUint32AtTail(tail, values.length);
|
_setUint32AtTail(tail, values.length);
|
||||||
tail -= _sizeofUint32;
|
tail -= _sizeofUint32;
|
||||||
for (var value in values) {
|
for (final value in values) {
|
||||||
_setUint16AtTail(tail, value);
|
_setUint16AtTail(tail, value);
|
||||||
tail -= _sizeofUint16;
|
tail -= _sizeofUint16;
|
||||||
}
|
}
|
||||||
@@ -654,7 +654,7 @@ class Builder {
|
|||||||
var tail = _tail;
|
var tail = _tail;
|
||||||
_setUint32AtTail(tail, values.length);
|
_setUint32AtTail(tail, values.length);
|
||||||
tail -= _sizeofUint32;
|
tail -= _sizeofUint32;
|
||||||
for (var value in values) {
|
for (final value in values) {
|
||||||
_setInt8AtTail(tail, value);
|
_setInt8AtTail(tail, value);
|
||||||
tail -= _sizeofUint8;
|
tail -= _sizeofUint8;
|
||||||
}
|
}
|
||||||
@@ -669,7 +669,7 @@ class Builder {
|
|||||||
var tail = _tail;
|
var tail = _tail;
|
||||||
_setUint32AtTail(tail, values.length);
|
_setUint32AtTail(tail, values.length);
|
||||||
tail -= _sizeofUint32;
|
tail -= _sizeofUint32;
|
||||||
for (var value in values) {
|
for (final value in values) {
|
||||||
_setUint8AtTail(tail, value);
|
_setUint8AtTail(tail, value);
|
||||||
tail -= _sizeofUint8;
|
tail -= _sizeofUint8;
|
||||||
}
|
}
|
||||||
@@ -777,17 +777,17 @@ class Builder {
|
|||||||
_maxAlign = size;
|
_maxAlign = size;
|
||||||
}
|
}
|
||||||
// Prepare amount of required space.
|
// Prepare amount of required space.
|
||||||
var dataSize = size * count + additionalBytes;
|
final dataSize = size * count + additionalBytes;
|
||||||
var alignDelta = (-(_tail + dataSize)) & (size - 1);
|
final alignDelta = (-(_tail + dataSize)) & (size - 1);
|
||||||
var bufSize = alignDelta + dataSize;
|
final bufSize = alignDelta + dataSize;
|
||||||
// Ensure that we have the required amount of space.
|
// Ensure that we have the required amount of space.
|
||||||
{
|
{
|
||||||
var oldCapacity = _buf.lengthInBytes;
|
final oldCapacity = _buf.lengthInBytes;
|
||||||
if (_tail + bufSize > oldCapacity) {
|
if (_tail + bufSize > oldCapacity) {
|
||||||
var desiredNewCapacity = (oldCapacity + bufSize) * 2;
|
final desiredNewCapacity = (oldCapacity + bufSize) * 2;
|
||||||
var deltaCapacity = desiredNewCapacity - oldCapacity;
|
var deltaCapacity = desiredNewCapacity - oldCapacity;
|
||||||
deltaCapacity += (-deltaCapacity) & (_maxAlign - 1);
|
deltaCapacity += (-deltaCapacity) & (_maxAlign - 1);
|
||||||
var newCapacity = oldCapacity + deltaCapacity;
|
final newCapacity = oldCapacity + deltaCapacity;
|
||||||
_buf = _allocator.resize(_buf, newCapacity, _tail, 0);
|
_buf = _allocator.resize(_buf, newCapacity, _tail, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1023,22 +1023,22 @@ abstract class Reader<T> {
|
|||||||
/// Read the value of the given [field] in the given [object].
|
/// Read the value of the given [field] in the given [object].
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
T vTableGet(BufferContext object, int offset, int field, T defaultValue) {
|
T vTableGet(BufferContext object, int offset, int field, T defaultValue) {
|
||||||
var fieldOffset = _vTableFieldOffset(object, offset, field);
|
final fieldOffset = _vTableFieldOffset(object, offset, field);
|
||||||
return fieldOffset == 0 ? defaultValue : read(object, offset + fieldOffset);
|
return fieldOffset == 0 ? defaultValue : read(object, offset + fieldOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Read the value of the given [field] in the given [object].
|
/// Read the value of the given [field] in the given [object].
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
T? vTableGetNullable(BufferContext object, int offset, int field) {
|
T? vTableGetNullable(BufferContext object, int offset, int field) {
|
||||||
var fieldOffset = _vTableFieldOffset(object, offset, field);
|
final fieldOffset = _vTableFieldOffset(object, offset, field);
|
||||||
return fieldOffset == 0 ? null : read(object, offset + fieldOffset);
|
return fieldOffset == 0 ? null : read(object, offset + fieldOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
int _vTableFieldOffset(BufferContext object, int offset, int field) {
|
int _vTableFieldOffset(BufferContext object, int offset, int field) {
|
||||||
var vTableSOffset = object._getInt32(offset);
|
final vTableSOffset = object._getInt32(offset);
|
||||||
var vTableOffset = offset - vTableSOffset;
|
final vTableOffset = offset - vTableSOffset;
|
||||||
var vTableSize = object._getUint16(vTableOffset);
|
final vTableSize = object._getUint16(vTableOffset);
|
||||||
if (field >= vTableSize) return 0;
|
if (field >= vTableSize) return 0;
|
||||||
return object._getUint16(vTableOffset + field);
|
return object._getUint16(vTableOffset + field);
|
||||||
}
|
}
|
||||||
@@ -1057,9 +1057,9 @@ class StringReader extends Reader<String> {
|
|||||||
@override
|
@override
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
String read(BufferContext bc, int offset) {
|
String read(BufferContext bc, int offset) {
|
||||||
var strOffset = bc.derefObject(offset);
|
final strOffset = bc.derefObject(offset);
|
||||||
var length = bc._getUint32(strOffset);
|
final length = bc._getUint32(strOffset);
|
||||||
var bytes = bc._asUint8List(strOffset + _sizeofUint32, length);
|
final bytes = bc._asUint8List(strOffset + _sizeofUint32, length);
|
||||||
if (asciiOptimization && _isLatin(bytes)) {
|
if (asciiOptimization && _isLatin(bytes)) {
|
||||||
return String.fromCharCodes(bytes);
|
return String.fromCharCodes(bytes);
|
||||||
}
|
}
|
||||||
@@ -1068,7 +1068,7 @@ class StringReader extends Reader<String> {
|
|||||||
|
|
||||||
@pragma('vm:prefer-inline')
|
@pragma('vm:prefer-inline')
|
||||||
static bool _isLatin(Uint8List bytes) {
|
static bool _isLatin(Uint8List bytes) {
|
||||||
var length = bytes.length;
|
final length = bytes.length;
|
||||||
for (var i = 0; i < length; i++) {
|
for (var i = 0; i < length; i++) {
|
||||||
if (bytes[i] > 127) {
|
if (bytes[i] > 127) {
|
||||||
return false;
|
return false;
|
||||||
@@ -1104,7 +1104,7 @@ abstract class TableReader<T> extends Reader<T> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
T read(BufferContext bc, int offset) {
|
T read(BufferContext bc, int offset) {
|
||||||
var objectOffset = bc.derefObject(offset);
|
final objectOffset = bc.derefObject(offset);
|
||||||
return createObject(bc, objectOffset);
|
return createObject(bc, objectOffset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,14 @@
|
|||||||
name: flat_buffers
|
name: flat_buffers
|
||||||
version: 23.3.3
|
version: 25.1.24
|
||||||
description: FlatBuffers reading and writing library for Dart. Based on original work by Konstantin Scheglov and Paul Berry of the Dart SDK team.
|
description: FlatBuffers reading and writing library for Dart. Based on original work by Konstantin Scheglov and Paul Berry of the Dart SDK team.
|
||||||
homepage: https://github.com/google/flatbuffers
|
homepage: https://github.com/google/flatbuffers
|
||||||
documentation: https://google.github.io/flatbuffers/index.html
|
documentation: https://google.github.io/flatbuffers/index.html
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: '>=2.12.0 <3.0.0'
|
sdk: '>=2.17.0 <4.0.0'
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
test: ^1.17.7
|
test: ^1.17.7
|
||||||
test_reflective_loader: ^0.2.0
|
test_reflective_loader: ^0.2.0
|
||||||
path: ^1.8.0
|
path: ^1.8.0
|
||||||
lints: ^1.0.1
|
lints: ^1.0.1
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// automatically generated by the FlatBuffers compiler, do not modify
|
// automatically generated by the FlatBuffers compiler, do not modify
|
||||||
// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable
|
// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable, constant_identifier_names
|
||||||
|
|
||||||
import 'dart:typed_data' show Uint8List;
|
import 'dart:typed_data' show Uint8List;
|
||||||
import 'package:flat_buffers/flat_buffers.dart' as fb;
|
import 'package:flat_buffers/flat_buffers.dart' as fb;
|
||||||
|
|||||||
@@ -1,20 +1,25 @@
|
|||||||
// automatically generated by the FlatBuffers compiler, do not modify
|
// automatically generated by the FlatBuffers compiler, do not modify
|
||||||
// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable
|
// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable, constant_identifier_names
|
||||||
|
|
||||||
import 'dart:typed_data' show Uint8List;
|
import 'dart:typed_data' show Uint8List;
|
||||||
import 'package:flat_buffers/flat_buffers.dart' as fb;
|
import 'package:flat_buffers/flat_buffers.dart' as fb;
|
||||||
|
|
||||||
|
|
||||||
class OptionsEnum {
|
enum OptionsEnum {
|
||||||
|
A(1),
|
||||||
|
B(2),
|
||||||
|
C(3);
|
||||||
|
|
||||||
final int value;
|
final int value;
|
||||||
const OptionsEnum._(this.value);
|
const OptionsEnum(this.value);
|
||||||
|
|
||||||
factory OptionsEnum.fromValue(int value) {
|
factory OptionsEnum.fromValue(int value) {
|
||||||
final result = values[value];
|
switch (value) {
|
||||||
if (result == null) {
|
case 1: return OptionsEnum.A;
|
||||||
throw StateError('Invalid value $value for bit flag enum OptionsEnum');
|
case 2: return OptionsEnum.B;
|
||||||
|
case 3: return OptionsEnum.C;
|
||||||
|
default: throw StateError('Invalid value $value for bit flag enum');
|
||||||
}
|
}
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static OptionsEnum? _createOrNull(int? value) =>
|
static OptionsEnum? _createOrNull(int? value) =>
|
||||||
@@ -22,22 +27,7 @@ class OptionsEnum {
|
|||||||
|
|
||||||
static const int minValue = 1;
|
static const int minValue = 1;
|
||||||
static const int maxValue = 3;
|
static const int maxValue = 3;
|
||||||
static bool containsValue(int value) => values.containsKey(value);
|
|
||||||
|
|
||||||
static const OptionsEnum A = OptionsEnum._(1);
|
|
||||||
static const OptionsEnum B = OptionsEnum._(2);
|
|
||||||
static const OptionsEnum C = OptionsEnum._(3);
|
|
||||||
static const Map<int, OptionsEnum> values = {
|
|
||||||
1: A,
|
|
||||||
2: B,
|
|
||||||
3: C};
|
|
||||||
|
|
||||||
static const fb.Reader<OptionsEnum> reader = _OptionsEnumReader();
|
static const fb.Reader<OptionsEnum> reader = _OptionsEnumReader();
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() {
|
|
||||||
return 'OptionsEnum{value: $value}';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class _OptionsEnumReader extends fb.Reader<OptionsEnum> {
|
class _OptionsEnumReader extends fb.Reader<OptionsEnum> {
|
||||||
@@ -9,9 +9,8 @@ import 'package:test_reflective_loader/test_reflective_loader.dart';
|
|||||||
|
|
||||||
import './monster_test_my_game.example_generated.dart' as example;
|
import './monster_test_my_game.example_generated.dart' as example;
|
||||||
import './monster_test_my_game.example2_generated.dart' as example2;
|
import './monster_test_my_game.example2_generated.dart' as example2;
|
||||||
import './list_of_enums_generated.dart' as example3;
|
import 'enums_generated.dart' as example3;
|
||||||
import './bool_structs_generated.dart' as example4;
|
import './bool_structs_generated.dart' as example4;
|
||||||
import './keyword_test_keyword_test_generated.dart' as keyword_test;
|
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
defineReflectiveSuite(() {
|
defineReflectiveSuite(() {
|
||||||
@@ -62,92 +61,91 @@ class CheckOtherLangaugesData {
|
|||||||
|
|
||||||
// this will fail if accessing any field fails.
|
// this will fail if accessing any field fails.
|
||||||
expect(
|
expect(
|
||||||
mon.toString(),
|
mon.toString(),
|
||||||
'Monster{'
|
'Monster{'
|
||||||
'pos: Vec3{x: 1.0, y: 2.0, z: 3.0, test1: 3.0, test2: Color{value: 2}, test3: Test{a: 5, b: 6}}, '
|
'pos: Vec3{x: 1.0, y: 2.0, z: 3.0, test1: 3.0, test2: Color.Green, test3: Test{a: 5, b: 6}}, '
|
||||||
'mana: 150, hp: 80, name: MyMonster, inventory: [0, 1, 2, 3, 4], '
|
'mana: 150, hp: 80, name: MyMonster, inventory: [0, 1, 2, 3, 4], '
|
||||||
'color: Color{value: 8}, testType: AnyTypeId{value: 1}, '
|
'color: Color.Blue, testType: AnyTypeId.Monster, '
|
||||||
'test: Monster{pos: null, mana: 150, hp: 100, name: Fred, '
|
'test: Monster{pos: null, mana: 150, hp: 100, name: Fred, '
|
||||||
'inventory: null, color: Color{value: 8}, testType: null, '
|
'inventory: null, color: Color.Blue, testType: null, '
|
||||||
'test: null, test4: null, testarrayofstring: null, '
|
'test: null, test4: null, testarrayofstring: null, '
|
||||||
'testarrayoftables: null, enemy: null, testnestedflatbuffer: null, '
|
'testarrayoftables: null, enemy: null, testnestedflatbuffer: null, '
|
||||||
'testempty: null, testbool: false, testhashs32Fnv1: 0, '
|
'testempty: null, testbool: false, testhashs32Fnv1: 0, '
|
||||||
'testhashu32Fnv1: 0, testhashs64Fnv1: 0, testhashu64Fnv1: 0, '
|
'testhashu32Fnv1: 0, testhashs64Fnv1: 0, testhashu64Fnv1: 0, '
|
||||||
'testhashs32Fnv1a: 0, testhashu32Fnv1a: 0, testhashs64Fnv1a: 0, '
|
'testhashs32Fnv1a: 0, testhashu32Fnv1a: 0, testhashs64Fnv1a: 0, '
|
||||||
'testhashu64Fnv1a: 0, testarrayofbools: null, testf: 3.14159, '
|
'testhashu64Fnv1a: 0, testarrayofbools: null, testf: 3.14159, '
|
||||||
'testf2: 3.0, testf3: 0.0, testarrayofstring2: null, '
|
'testf2: 3.0, testf3: 0.0, testarrayofstring2: null, '
|
||||||
'testarrayofsortedstruct: null, flex: null, test5: null, '
|
'testarrayofsortedstruct: null, flex: null, test5: null, '
|
||||||
'vectorOfLongs: null, vectorOfDoubles: null, parentNamespaceTest: null, '
|
'vectorOfLongs: null, vectorOfDoubles: null, parentNamespaceTest: null, '
|
||||||
'vectorOfReferrables: null, singleWeakReference: 0, '
|
'vectorOfReferrables: null, singleWeakReference: 0, '
|
||||||
'vectorOfWeakReferences: null, vectorOfStrongReferrables: null, '
|
'vectorOfWeakReferences: null, vectorOfStrongReferrables: null, '
|
||||||
'coOwningReference: 0, vectorOfCoOwningReferences: null, '
|
'coOwningReference: 0, vectorOfCoOwningReferences: null, '
|
||||||
'nonOwningReference: 0, vectorOfNonOwningReferences: null, '
|
'nonOwningReference: 0, vectorOfNonOwningReferences: null, '
|
||||||
'anyUniqueType: null, anyUnique: null, anyAmbiguousType: null, '
|
'anyUniqueType: null, anyUnique: null, anyAmbiguousType: null, '
|
||||||
'anyAmbiguous: null, vectorOfEnums: null, signedEnum: Race{value: -1}, '
|
'anyAmbiguous: null, vectorOfEnums: null, signedEnum: Race.None, '
|
||||||
'testrequirednestedflatbuffer: null, scalarKeySortedTables: null, '
|
'testrequirednestedflatbuffer: null, scalarKeySortedTables: null, '
|
||||||
'nativeInline: null, '
|
'nativeInline: null, '
|
||||||
'longEnumNonEnumDefault: LongEnum{value: 0}, '
|
'longEnumNonEnumDefault: LongEnum._default, '
|
||||||
'longEnumNormalDefault: LongEnum{value: 2}, nanDefault: NaN, '
|
'longEnumNormalDefault: LongEnum.LongOne, nanDefault: NaN, '
|
||||||
'infDefault: Infinity, positiveInfDefault: Infinity, infinityDefault: '
|
'infDefault: Infinity, positiveInfDefault: Infinity, infinityDefault: '
|
||||||
'Infinity, positiveInfinityDefault: Infinity, negativeInfDefault: '
|
'Infinity, positiveInfinityDefault: Infinity, negativeInfDefault: '
|
||||||
'-Infinity, negativeInfinityDefault: -Infinity, doubleInfDefault: Infinity}, '
|
'-Infinity, negativeInfinityDefault: -Infinity, doubleInfDefault: Infinity}, '
|
||||||
'test4: [Test{a: 10, b: 20}, Test{a: 30, b: 40}], '
|
'test4: [Test{a: 10, b: 20}, Test{a: 30, b: 40}], '
|
||||||
'testarrayofstring: [test1, test2], testarrayoftables: null, '
|
'testarrayofstring: [test1, test2], testarrayoftables: null, '
|
||||||
'enemy: Monster{pos: null, mana: 150, hp: 100, name: Fred, '
|
'enemy: Monster{pos: null, mana: 150, hp: 100, name: Fred, '
|
||||||
'inventory: null, color: Color{value: 8}, testType: null, '
|
'inventory: null, color: Color.Blue, testType: null, '
|
||||||
'test: null, test4: null, testarrayofstring: null, '
|
'test: null, test4: null, testarrayofstring: null, '
|
||||||
'testarrayoftables: null, enemy: null, testnestedflatbuffer: null, '
|
'testarrayoftables: null, enemy: null, testnestedflatbuffer: null, '
|
||||||
'testempty: null, testbool: false, testhashs32Fnv1: 0, '
|
'testempty: null, testbool: false, testhashs32Fnv1: 0, '
|
||||||
'testhashu32Fnv1: 0, testhashs64Fnv1: 0, testhashu64Fnv1: 0, '
|
'testhashu32Fnv1: 0, testhashs64Fnv1: 0, testhashu64Fnv1: 0, '
|
||||||
'testhashs32Fnv1a: 0, testhashu32Fnv1a: 0, testhashs64Fnv1a: 0, '
|
'testhashs32Fnv1a: 0, testhashu32Fnv1a: 0, testhashs64Fnv1a: 0, '
|
||||||
'testhashu64Fnv1a: 0, testarrayofbools: null, testf: 3.14159, '
|
'testhashu64Fnv1a: 0, testarrayofbools: null, testf: 3.14159, '
|
||||||
'testf2: 3.0, testf3: 0.0, testarrayofstring2: null, '
|
'testf2: 3.0, testf3: 0.0, testarrayofstring2: null, '
|
||||||
'testarrayofsortedstruct: null, flex: null, test5: null, '
|
'testarrayofsortedstruct: null, flex: null, test5: null, '
|
||||||
'vectorOfLongs: null, vectorOfDoubles: null, parentNamespaceTest: null, '
|
'vectorOfLongs: null, vectorOfDoubles: null, parentNamespaceTest: null, '
|
||||||
'vectorOfReferrables: null, singleWeakReference: 0, '
|
'vectorOfReferrables: null, singleWeakReference: 0, '
|
||||||
'vectorOfWeakReferences: null, vectorOfStrongReferrables: null, '
|
'vectorOfWeakReferences: null, vectorOfStrongReferrables: null, '
|
||||||
'coOwningReference: 0, vectorOfCoOwningReferences: null, '
|
'coOwningReference: 0, vectorOfCoOwningReferences: null, '
|
||||||
'nonOwningReference: 0, vectorOfNonOwningReferences: null, '
|
'nonOwningReference: 0, vectorOfNonOwningReferences: null, '
|
||||||
'anyUniqueType: null, anyUnique: null, anyAmbiguousType: null, '
|
'anyUniqueType: null, anyUnique: null, anyAmbiguousType: null, '
|
||||||
'anyAmbiguous: null, vectorOfEnums: null, signedEnum: Race{value: -1}, '
|
'anyAmbiguous: null, vectorOfEnums: null, signedEnum: Race.None, '
|
||||||
'testrequirednestedflatbuffer: null, scalarKeySortedTables: null, '
|
'testrequirednestedflatbuffer: null, scalarKeySortedTables: null, '
|
||||||
'nativeInline: null, '
|
'nativeInline: null, '
|
||||||
'longEnumNonEnumDefault: LongEnum{value: 0}, '
|
'longEnumNonEnumDefault: LongEnum._default, '
|
||||||
'longEnumNormalDefault: LongEnum{value: 2}, nanDefault: NaN, '
|
'longEnumNormalDefault: LongEnum.LongOne, nanDefault: NaN, '
|
||||||
'infDefault: Infinity, positiveInfDefault: Infinity, infinityDefault: '
|
'infDefault: Infinity, positiveInfDefault: Infinity, infinityDefault: '
|
||||||
'Infinity, positiveInfinityDefault: Infinity, negativeInfDefault: '
|
'Infinity, positiveInfinityDefault: Infinity, negativeInfDefault: '
|
||||||
'-Infinity, negativeInfinityDefault: -Infinity, doubleInfDefault: Infinity}, '
|
'-Infinity, negativeInfinityDefault: -Infinity, doubleInfDefault: Infinity}, '
|
||||||
'testnestedflatbuffer: null, testempty: null, testbool: true, '
|
'testnestedflatbuffer: null, testempty: null, testbool: true, '
|
||||||
'testhashs32Fnv1: -579221183, testhashu32Fnv1: 3715746113, '
|
'testhashs32Fnv1: -579221183, testhashu32Fnv1: 3715746113, '
|
||||||
'testhashs64Fnv1: 7930699090847568257, '
|
'testhashs64Fnv1: 7930699090847568257, '
|
||||||
'testhashu64Fnv1: 7930699090847568257, '
|
'testhashu64Fnv1: 7930699090847568257, '
|
||||||
'testhashs32Fnv1a: -1904106383, testhashu32Fnv1a: 2390860913, '
|
'testhashs32Fnv1a: -1904106383, testhashu32Fnv1a: 2390860913, '
|
||||||
'testhashs64Fnv1a: 4898026182817603057, '
|
'testhashs64Fnv1a: 4898026182817603057, '
|
||||||
'testhashu64Fnv1a: 4898026182817603057, '
|
'testhashu64Fnv1a: 4898026182817603057, '
|
||||||
'testarrayofbools: [true, false, true], testf: 3.14159, testf2: 3.0, '
|
'testarrayofbools: [true, false, true], testf: 3.14159, testf2: 3.0, '
|
||||||
'testf3: 0.0, testarrayofstring2: null, testarrayofsortedstruct: ['
|
'testf3: 0.0, testarrayofstring2: null, testarrayofsortedstruct: ['
|
||||||
'Ability{id: 0, distance: 45}, Ability{id: 1, distance: 21}, '
|
'Ability{id: 0, distance: 45}, Ability{id: 1, distance: 21}, '
|
||||||
'Ability{id: 5, distance: 12}], '
|
'Ability{id: 5, distance: 12}], '
|
||||||
'flex: null, test5: [Test{a: 10, b: 20}, Test{a: 30, b: 40}], '
|
'flex: null, test5: [Test{a: 10, b: 20}, Test{a: 30, b: 40}], '
|
||||||
'vectorOfLongs: [1, 100, 10000, 1000000, 100000000], '
|
'vectorOfLongs: [1, 100, 10000, 1000000, 100000000], '
|
||||||
'vectorOfDoubles: [-1.7976931348623157e+308, 0.0, 1.7976931348623157e+308], '
|
'vectorOfDoubles: [-1.7976931348623157e+308, 0.0, 1.7976931348623157e+308], '
|
||||||
'parentNamespaceTest: null, vectorOfReferrables: null, '
|
'parentNamespaceTest: null, vectorOfReferrables: null, '
|
||||||
'singleWeakReference: 0, vectorOfWeakReferences: null, '
|
'singleWeakReference: 0, vectorOfWeakReferences: null, '
|
||||||
'vectorOfStrongReferrables: null, coOwningReference: 0, '
|
'vectorOfStrongReferrables: null, coOwningReference: 0, '
|
||||||
'vectorOfCoOwningReferences: null, nonOwningReference: 0, '
|
'vectorOfCoOwningReferences: null, nonOwningReference: 0, '
|
||||||
'vectorOfNonOwningReferences: null, '
|
'vectorOfNonOwningReferences: null, '
|
||||||
'anyUniqueType: null, anyUnique: null, '
|
'anyUniqueType: null, anyUnique: null, '
|
||||||
'anyAmbiguousType: null, '
|
'anyAmbiguousType: null, '
|
||||||
'anyAmbiguous: null, vectorOfEnums: null, signedEnum: Race{value: -1}, '
|
'anyAmbiguous: null, vectorOfEnums: null, signedEnum: Race.None, '
|
||||||
'testrequirednestedflatbuffer: null, scalarKeySortedTables: [Stat{id: '
|
'testrequirednestedflatbuffer: null, scalarKeySortedTables: [Stat{id: '
|
||||||
'miss, val: 0, count: 0}, Stat{id: hit, val: 10, count: 1}], '
|
'miss, val: 0, count: 0}, Stat{id: hit, val: 10, count: 1}], '
|
||||||
'nativeInline: Test{a: 1, b: 2}, '
|
'nativeInline: Test{a: 1, b: 2}, '
|
||||||
'longEnumNonEnumDefault: LongEnum{value: 0}, '
|
'longEnumNonEnumDefault: LongEnum._default, '
|
||||||
'longEnumNormalDefault: LongEnum{value: 2}, nanDefault: NaN, '
|
'longEnumNormalDefault: LongEnum.LongOne, nanDefault: NaN, '
|
||||||
'infDefault: Infinity, positiveInfDefault: Infinity, infinityDefault: '
|
'infDefault: Infinity, positiveInfDefault: Infinity, infinityDefault: '
|
||||||
'Infinity, positiveInfinityDefault: Infinity, negativeInfDefault: '
|
'Infinity, positiveInfinityDefault: Infinity, negativeInfDefault: '
|
||||||
'-Infinity, negativeInfinityDefault: -Infinity, doubleInfDefault: Infinity}'
|
'-Infinity, negativeInfinityDefault: -Infinity, doubleInfDefault: Infinity}');
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -217,6 +215,10 @@ class BuilderTest {
|
|||||||
..addTestarrayofstringOffset(testArrayOfString);
|
..addTestarrayofstringOffset(testArrayOfString);
|
||||||
final mon = monBuilder.finish();
|
final mon = monBuilder.finish();
|
||||||
fbBuilder.finish(mon);
|
fbBuilder.finish(mon);
|
||||||
|
|
||||||
|
final mon3 = example.Monster(fbBuilder.buffer);
|
||||||
|
expect(mon3.name, 'MyMonster');
|
||||||
|
expect(mon3.pos!.test1, 3.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_error_addInt32_withoutStartTable([Builder? builder]) {
|
void test_error_addInt32_withoutStartTable([Builder? builder]) {
|
||||||
@@ -769,7 +771,6 @@ class BuilderTest {
|
|||||||
class ObjectAPITest {
|
class ObjectAPITest {
|
||||||
void test_tableStat() {
|
void test_tableStat() {
|
||||||
final object1 = example.StatT(count: 3, id: "foo", val: 4);
|
final object1 = example.StatT(count: 3, id: "foo", val: 4);
|
||||||
expect(object1 is Packable, isTrue);
|
|
||||||
final fbb = Builder();
|
final fbb = Builder();
|
||||||
fbb.finish(object1.pack(fbb));
|
fbb.finish(object1.pack(fbb));
|
||||||
final object2 = example.Stat(fbb.buffer).unpack();
|
final object2 = example.Stat(fbb.buffer).unpack();
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// automatically generated by the FlatBuffers compiler, do not modify
|
// automatically generated by the FlatBuffers compiler, do not modify
|
||||||
// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable
|
// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable, constant_identifier_names
|
||||||
|
|
||||||
import 'dart:typed_data' show Uint8List;
|
import 'dart:typed_data' show Uint8List;
|
||||||
import 'package:flat_buffers/flat_buffers.dart' as fb;
|
import 'package:flat_buffers/flat_buffers.dart' as fb;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// automatically generated by the FlatBuffers compiler, do not modify
|
// automatically generated by the FlatBuffers compiler, do not modify
|
||||||
// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable
|
// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable, constant_identifier_names
|
||||||
|
|
||||||
library my_game.other_name_space;
|
library my_game.other_name_space;
|
||||||
|
|
||||||
@@ -9,16 +9,17 @@ import 'package:flat_buffers/flat_buffers.dart' as fb;
|
|||||||
|
|
||||||
import './include_test1_generated.dart';
|
import './include_test1_generated.dart';
|
||||||
|
|
||||||
class FromInclude {
|
enum FromInclude {
|
||||||
|
IncludeVal(0);
|
||||||
|
|
||||||
final int value;
|
final int value;
|
||||||
const FromInclude._(this.value);
|
const FromInclude(this.value);
|
||||||
|
|
||||||
factory FromInclude.fromValue(int value) {
|
factory FromInclude.fromValue(int value) {
|
||||||
final result = values[value];
|
switch (value) {
|
||||||
if (result == null) {
|
case 0: return FromInclude.IncludeVal;
|
||||||
throw StateError('Invalid value $value for bit flag enum FromInclude');
|
default: throw StateError('Invalid value $value for bit flag enum');
|
||||||
}
|
}
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static FromInclude? _createOrNull(int? value) =>
|
static FromInclude? _createOrNull(int? value) =>
|
||||||
@@ -26,18 +27,7 @@ class FromInclude {
|
|||||||
|
|
||||||
static const int minValue = 0;
|
static const int minValue = 0;
|
||||||
static const int maxValue = 0;
|
static const int maxValue = 0;
|
||||||
static bool containsValue(int value) => values.containsKey(value);
|
|
||||||
|
|
||||||
static const FromInclude IncludeVal = FromInclude._(0);
|
|
||||||
static const Map<int, FromInclude> values = {
|
|
||||||
0: IncludeVal};
|
|
||||||
|
|
||||||
static const fb.Reader<FromInclude> reader = _FromIncludeReader();
|
static const fb.Reader<FromInclude> reader = _FromIncludeReader();
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() {
|
|
||||||
return 'FromInclude{value: $value}';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class _FromIncludeReader extends fb.Reader<FromInclude> {
|
class _FromIncludeReader extends fb.Reader<FromInclude> {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// automatically generated by the FlatBuffers compiler, do not modify
|
// automatically generated by the FlatBuffers compiler, do not modify
|
||||||
// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable
|
// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable, constant_identifier_names
|
||||||
|
|
||||||
library keyword_test;
|
library keyword_test;
|
||||||
|
|
||||||
@@ -7,16 +7,21 @@ import 'dart:typed_data' show Uint8List;
|
|||||||
import 'package:flat_buffers/flat_buffers.dart' as fb;
|
import 'package:flat_buffers/flat_buffers.dart' as fb;
|
||||||
|
|
||||||
|
|
||||||
class Abc {
|
enum Abc {
|
||||||
|
$void(0),
|
||||||
|
where(1),
|
||||||
|
stackalloc(2);
|
||||||
|
|
||||||
final int value;
|
final int value;
|
||||||
const Abc._(this.value);
|
const Abc(this.value);
|
||||||
|
|
||||||
factory Abc.fromValue(int value) {
|
factory Abc.fromValue(int value) {
|
||||||
final result = values[value];
|
switch (value) {
|
||||||
if (result == null) {
|
case 0: return Abc.$void;
|
||||||
throw StateError('Invalid value $value for bit flag enum Abc');
|
case 1: return Abc.where;
|
||||||
|
case 2: return Abc.stackalloc;
|
||||||
|
default: throw StateError('Invalid value $value for bit flag enum');
|
||||||
}
|
}
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static Abc? _createOrNull(int? value) =>
|
static Abc? _createOrNull(int? value) =>
|
||||||
@@ -24,22 +29,7 @@ class Abc {
|
|||||||
|
|
||||||
static const int minValue = 0;
|
static const int minValue = 0;
|
||||||
static const int maxValue = 2;
|
static const int maxValue = 2;
|
||||||
static bool containsValue(int value) => values.containsKey(value);
|
|
||||||
|
|
||||||
static const Abc $void = Abc._(0);
|
|
||||||
static const Abc where = Abc._(1);
|
|
||||||
static const Abc stackalloc = Abc._(2);
|
|
||||||
static const Map<int, Abc> values = {
|
|
||||||
0: $void,
|
|
||||||
1: where,
|
|
||||||
2: stackalloc};
|
|
||||||
|
|
||||||
static const fb.Reader<Abc> reader = _AbcReader();
|
static const fb.Reader<Abc> reader = _AbcReader();
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() {
|
|
||||||
return 'Abc{value: $value}';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class _AbcReader extends fb.Reader<Abc> {
|
class _AbcReader extends fb.Reader<Abc> {
|
||||||
@@ -53,16 +43,17 @@ class _AbcReader extends fb.Reader<Abc> {
|
|||||||
Abc.fromValue(const fb.Int32Reader().read(bc, offset));
|
Abc.fromValue(const fb.Int32Reader().read(bc, offset));
|
||||||
}
|
}
|
||||||
|
|
||||||
class Public {
|
enum Public {
|
||||||
|
NONE(0);
|
||||||
|
|
||||||
final int value;
|
final int value;
|
||||||
const Public._(this.value);
|
const Public(this.value);
|
||||||
|
|
||||||
factory Public.fromValue(int value) {
|
factory Public.fromValue(int value) {
|
||||||
final result = values[value];
|
switch (value) {
|
||||||
if (result == null) {
|
case 0: return Public.NONE;
|
||||||
throw StateError('Invalid value $value for bit flag enum Public');
|
default: throw StateError('Invalid value $value for bit flag enum');
|
||||||
}
|
}
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static Public? _createOrNull(int? value) =>
|
static Public? _createOrNull(int? value) =>
|
||||||
@@ -70,18 +61,7 @@ class Public {
|
|||||||
|
|
||||||
static const int minValue = 0;
|
static const int minValue = 0;
|
||||||
static const int maxValue = 0;
|
static const int maxValue = 0;
|
||||||
static bool containsValue(int value) => values.containsKey(value);
|
|
||||||
|
|
||||||
static const Public NONE = Public._(0);
|
|
||||||
static const Map<int, Public> values = {
|
|
||||||
0: NONE};
|
|
||||||
|
|
||||||
static const fb.Reader<Public> reader = _PublicReader();
|
static const fb.Reader<Public> reader = _PublicReader();
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() {
|
|
||||||
return 'Public{value: $value}';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class _PublicReader extends fb.Reader<Public> {
|
class _PublicReader extends fb.Reader<Public> {
|
||||||
@@ -95,16 +75,21 @@ class _PublicReader extends fb.Reader<Public> {
|
|||||||
Public.fromValue(const fb.Int32Reader().read(bc, offset));
|
Public.fromValue(const fb.Int32Reader().read(bc, offset));
|
||||||
}
|
}
|
||||||
|
|
||||||
class KeywordsInUnionTypeId {
|
enum KeywordsInUnionTypeId {
|
||||||
|
NONE(0),
|
||||||
|
$static(1),
|
||||||
|
internal(2);
|
||||||
|
|
||||||
final int value;
|
final int value;
|
||||||
const KeywordsInUnionTypeId._(this.value);
|
const KeywordsInUnionTypeId(this.value);
|
||||||
|
|
||||||
factory KeywordsInUnionTypeId.fromValue(int value) {
|
factory KeywordsInUnionTypeId.fromValue(int value) {
|
||||||
final result = values[value];
|
switch (value) {
|
||||||
if (result == null) {
|
case 0: return KeywordsInUnionTypeId.NONE;
|
||||||
throw StateError('Invalid value $value for bit flag enum KeywordsInUnionTypeId');
|
case 1: return KeywordsInUnionTypeId.$static;
|
||||||
|
case 2: return KeywordsInUnionTypeId.internal;
|
||||||
|
default: throw StateError('Invalid value $value for bit flag enum');
|
||||||
}
|
}
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static KeywordsInUnionTypeId? _createOrNull(int? value) =>
|
static KeywordsInUnionTypeId? _createOrNull(int? value) =>
|
||||||
@@ -112,22 +97,7 @@ class KeywordsInUnionTypeId {
|
|||||||
|
|
||||||
static const int minValue = 0;
|
static const int minValue = 0;
|
||||||
static const int maxValue = 2;
|
static const int maxValue = 2;
|
||||||
static bool containsValue(int value) => values.containsKey(value);
|
|
||||||
|
|
||||||
static const KeywordsInUnionTypeId NONE = KeywordsInUnionTypeId._(0);
|
|
||||||
static const KeywordsInUnionTypeId $static = KeywordsInUnionTypeId._(1);
|
|
||||||
static const KeywordsInUnionTypeId internal = KeywordsInUnionTypeId._(2);
|
|
||||||
static const Map<int, KeywordsInUnionTypeId> values = {
|
|
||||||
0: NONE,
|
|
||||||
1: $static,
|
|
||||||
2: internal};
|
|
||||||
|
|
||||||
static const fb.Reader<KeywordsInUnionTypeId> reader = _KeywordsInUnionTypeIdReader();
|
static const fb.Reader<KeywordsInUnionTypeId> reader = _KeywordsInUnionTypeIdReader();
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() {
|
|
||||||
return 'KeywordsInUnionTypeId{value: $value}';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class _KeywordsInUnionTypeIdReader extends fb.Reader<KeywordsInUnionTypeId> {
|
class _KeywordsInUnionTypeIdReader extends fb.Reader<KeywordsInUnionTypeId> {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// automatically generated by the FlatBuffers compiler, do not modify
|
// automatically generated by the FlatBuffers compiler, do not modify
|
||||||
// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable
|
// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable, constant_identifier_names
|
||||||
|
|
||||||
library my_game.example2;
|
library my_game.example2;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// automatically generated by the FlatBuffers compiler, do not modify
|
// automatically generated by the FlatBuffers compiler, do not modify
|
||||||
// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable
|
// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable, constant_identifier_names
|
||||||
|
|
||||||
library my_game.example;
|
library my_game.example;
|
||||||
|
|
||||||
@@ -12,46 +12,29 @@ import './monster_test_my_game.example2_generated.dart' as my_game_example2;
|
|||||||
import './include_test1_generated.dart';
|
import './include_test1_generated.dart';
|
||||||
|
|
||||||
/// Composite components of Monster color.
|
/// Composite components of Monster color.
|
||||||
class Color {
|
enum Color {
|
||||||
|
Red(1),
|
||||||
|
Green(2),
|
||||||
|
Blue(8),
|
||||||
|
_default(0);
|
||||||
|
|
||||||
final int value;
|
final int value;
|
||||||
const Color._(this.value);
|
const Color(this.value);
|
||||||
|
|
||||||
factory Color.fromValue(int value) {
|
factory Color.fromValue(int value) {
|
||||||
final result = values[value];
|
switch (value) {
|
||||||
if (result == null) {
|
case 1: return Color.Red;
|
||||||
if (value == 0) {
|
case 2: return Color.Green;
|
||||||
return Color._(0);
|
case 8: return Color.Blue;
|
||||||
} else {
|
case 0: return Color._default;
|
||||||
throw StateError('Invalid value $value for bit flag enum Color');
|
default: throw StateError('Invalid value $value for bit flag enum');
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static Color? _createOrNull(int? value) =>
|
static Color? _createOrNull(int? value) =>
|
||||||
value == null ? null : Color.fromValue(value);
|
value == null ? null : Color.fromValue(value);
|
||||||
|
|
||||||
static bool containsValue(int value) => values.containsKey(value);
|
|
||||||
|
|
||||||
static const Color Red = Color._(1);
|
|
||||||
|
|
||||||
/// \brief color Green
|
|
||||||
/// Green is bit_flag with value (1u << 1)
|
|
||||||
static const Color Green = Color._(2);
|
|
||||||
|
|
||||||
/// \brief color Blue (1u << 3)
|
|
||||||
static const Color Blue = Color._(8);
|
|
||||||
static const Map<int, Color> values = {
|
|
||||||
1: Red,
|
|
||||||
2: Green,
|
|
||||||
8: Blue};
|
|
||||||
|
|
||||||
static const fb.Reader<Color> reader = _ColorReader();
|
static const fb.Reader<Color> reader = _ColorReader();
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() {
|
|
||||||
return 'Color{value: $value}';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class _ColorReader extends fb.Reader<Color> {
|
class _ColorReader extends fb.Reader<Color> {
|
||||||
@@ -65,16 +48,23 @@ class _ColorReader extends fb.Reader<Color> {
|
|||||||
Color.fromValue(const fb.Uint8Reader().read(bc, offset));
|
Color.fromValue(const fb.Uint8Reader().read(bc, offset));
|
||||||
}
|
}
|
||||||
|
|
||||||
class Race {
|
enum Race {
|
||||||
|
None(-1),
|
||||||
|
Human(0),
|
||||||
|
Dwarf(1),
|
||||||
|
Elf(2);
|
||||||
|
|
||||||
final int value;
|
final int value;
|
||||||
const Race._(this.value);
|
const Race(this.value);
|
||||||
|
|
||||||
factory Race.fromValue(int value) {
|
factory Race.fromValue(int value) {
|
||||||
final result = values[value];
|
switch (value) {
|
||||||
if (result == null) {
|
case -1: return Race.None;
|
||||||
throw StateError('Invalid value $value for bit flag enum Race');
|
case 0: return Race.Human;
|
||||||
|
case 1: return Race.Dwarf;
|
||||||
|
case 2: return Race.Elf;
|
||||||
|
default: throw StateError('Invalid value $value for bit flag enum');
|
||||||
}
|
}
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static Race? _createOrNull(int? value) =>
|
static Race? _createOrNull(int? value) =>
|
||||||
@@ -82,24 +72,7 @@ class Race {
|
|||||||
|
|
||||||
static const int minValue = -1;
|
static const int minValue = -1;
|
||||||
static const int maxValue = 2;
|
static const int maxValue = 2;
|
||||||
static bool containsValue(int value) => values.containsKey(value);
|
|
||||||
|
|
||||||
static const Race None = Race._(-1);
|
|
||||||
static const Race Human = Race._(0);
|
|
||||||
static const Race Dwarf = Race._(1);
|
|
||||||
static const Race Elf = Race._(2);
|
|
||||||
static const Map<int, Race> values = {
|
|
||||||
-1: None,
|
|
||||||
0: Human,
|
|
||||||
1: Dwarf,
|
|
||||||
2: Elf};
|
|
||||||
|
|
||||||
static const fb.Reader<Race> reader = _RaceReader();
|
static const fb.Reader<Race> reader = _RaceReader();
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() {
|
|
||||||
return 'Race{value: $value}';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class _RaceReader extends fb.Reader<Race> {
|
class _RaceReader extends fb.Reader<Race> {
|
||||||
@@ -113,41 +86,29 @@ class _RaceReader extends fb.Reader<Race> {
|
|||||||
Race.fromValue(const fb.Int8Reader().read(bc, offset));
|
Race.fromValue(const fb.Int8Reader().read(bc, offset));
|
||||||
}
|
}
|
||||||
|
|
||||||
class LongEnum {
|
enum LongEnum {
|
||||||
|
LongOne(2),
|
||||||
|
LongTwo(4),
|
||||||
|
LongBig(1099511627776),
|
||||||
|
_default(0);
|
||||||
|
|
||||||
final int value;
|
final int value;
|
||||||
const LongEnum._(this.value);
|
const LongEnum(this.value);
|
||||||
|
|
||||||
factory LongEnum.fromValue(int value) {
|
factory LongEnum.fromValue(int value) {
|
||||||
final result = values[value];
|
switch (value) {
|
||||||
if (result == null) {
|
case 2: return LongEnum.LongOne;
|
||||||
if (value == 0) {
|
case 4: return LongEnum.LongTwo;
|
||||||
return LongEnum._(0);
|
case 1099511627776: return LongEnum.LongBig;
|
||||||
} else {
|
case 0: return LongEnum._default;
|
||||||
throw StateError('Invalid value $value for bit flag enum LongEnum');
|
default: throw StateError('Invalid value $value for bit flag enum');
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static LongEnum? _createOrNull(int? value) =>
|
static LongEnum? _createOrNull(int? value) =>
|
||||||
value == null ? null : LongEnum.fromValue(value);
|
value == null ? null : LongEnum.fromValue(value);
|
||||||
|
|
||||||
static bool containsValue(int value) => values.containsKey(value);
|
|
||||||
|
|
||||||
static const LongEnum LongOne = LongEnum._(2);
|
|
||||||
static const LongEnum LongTwo = LongEnum._(4);
|
|
||||||
static const LongEnum LongBig = LongEnum._(1099511627776);
|
|
||||||
static const Map<int, LongEnum> values = {
|
|
||||||
2: LongOne,
|
|
||||||
4: LongTwo,
|
|
||||||
1099511627776: LongBig};
|
|
||||||
|
|
||||||
static const fb.Reader<LongEnum> reader = _LongEnumReader();
|
static const fb.Reader<LongEnum> reader = _LongEnumReader();
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() {
|
|
||||||
return 'LongEnum{value: $value}';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class _LongEnumReader extends fb.Reader<LongEnum> {
|
class _LongEnumReader extends fb.Reader<LongEnum> {
|
||||||
@@ -161,16 +122,23 @@ class _LongEnumReader extends fb.Reader<LongEnum> {
|
|||||||
LongEnum.fromValue(const fb.Uint64Reader().read(bc, offset));
|
LongEnum.fromValue(const fb.Uint64Reader().read(bc, offset));
|
||||||
}
|
}
|
||||||
|
|
||||||
class AnyTypeId {
|
enum AnyTypeId {
|
||||||
|
NONE(0),
|
||||||
|
Monster(1),
|
||||||
|
TestSimpleTableWithEnum(2),
|
||||||
|
MyGame_Example2_Monster(3);
|
||||||
|
|
||||||
final int value;
|
final int value;
|
||||||
const AnyTypeId._(this.value);
|
const AnyTypeId(this.value);
|
||||||
|
|
||||||
factory AnyTypeId.fromValue(int value) {
|
factory AnyTypeId.fromValue(int value) {
|
||||||
final result = values[value];
|
switch (value) {
|
||||||
if (result == null) {
|
case 0: return AnyTypeId.NONE;
|
||||||
throw StateError('Invalid value $value for bit flag enum AnyTypeId');
|
case 1: return AnyTypeId.Monster;
|
||||||
|
case 2: return AnyTypeId.TestSimpleTableWithEnum;
|
||||||
|
case 3: return AnyTypeId.MyGame_Example2_Monster;
|
||||||
|
default: throw StateError('Invalid value $value for bit flag enum');
|
||||||
}
|
}
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static AnyTypeId? _createOrNull(int? value) =>
|
static AnyTypeId? _createOrNull(int? value) =>
|
||||||
@@ -178,24 +146,7 @@ class AnyTypeId {
|
|||||||
|
|
||||||
static const int minValue = 0;
|
static const int minValue = 0;
|
||||||
static const int maxValue = 3;
|
static const int maxValue = 3;
|
||||||
static bool containsValue(int value) => values.containsKey(value);
|
|
||||||
|
|
||||||
static const AnyTypeId NONE = AnyTypeId._(0);
|
|
||||||
static const AnyTypeId Monster = AnyTypeId._(1);
|
|
||||||
static const AnyTypeId TestSimpleTableWithEnum = AnyTypeId._(2);
|
|
||||||
static const AnyTypeId MyGame_Example2_Monster = AnyTypeId._(3);
|
|
||||||
static const Map<int, AnyTypeId> values = {
|
|
||||||
0: NONE,
|
|
||||||
1: Monster,
|
|
||||||
2: TestSimpleTableWithEnum,
|
|
||||||
3: MyGame_Example2_Monster};
|
|
||||||
|
|
||||||
static const fb.Reader<AnyTypeId> reader = _AnyTypeIdReader();
|
static const fb.Reader<AnyTypeId> reader = _AnyTypeIdReader();
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() {
|
|
||||||
return 'AnyTypeId{value: $value}';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class _AnyTypeIdReader extends fb.Reader<AnyTypeId> {
|
class _AnyTypeIdReader extends fb.Reader<AnyTypeId> {
|
||||||
@@ -209,16 +160,23 @@ class _AnyTypeIdReader extends fb.Reader<AnyTypeId> {
|
|||||||
AnyTypeId.fromValue(const fb.Uint8Reader().read(bc, offset));
|
AnyTypeId.fromValue(const fb.Uint8Reader().read(bc, offset));
|
||||||
}
|
}
|
||||||
|
|
||||||
class AnyUniqueAliasesTypeId {
|
enum AnyUniqueAliasesTypeId {
|
||||||
|
NONE(0),
|
||||||
|
M(1),
|
||||||
|
TS(2),
|
||||||
|
M2(3);
|
||||||
|
|
||||||
final int value;
|
final int value;
|
||||||
const AnyUniqueAliasesTypeId._(this.value);
|
const AnyUniqueAliasesTypeId(this.value);
|
||||||
|
|
||||||
factory AnyUniqueAliasesTypeId.fromValue(int value) {
|
factory AnyUniqueAliasesTypeId.fromValue(int value) {
|
||||||
final result = values[value];
|
switch (value) {
|
||||||
if (result == null) {
|
case 0: return AnyUniqueAliasesTypeId.NONE;
|
||||||
throw StateError('Invalid value $value for bit flag enum AnyUniqueAliasesTypeId');
|
case 1: return AnyUniqueAliasesTypeId.M;
|
||||||
|
case 2: return AnyUniqueAliasesTypeId.TS;
|
||||||
|
case 3: return AnyUniqueAliasesTypeId.M2;
|
||||||
|
default: throw StateError('Invalid value $value for bit flag enum');
|
||||||
}
|
}
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static AnyUniqueAliasesTypeId? _createOrNull(int? value) =>
|
static AnyUniqueAliasesTypeId? _createOrNull(int? value) =>
|
||||||
@@ -226,24 +184,7 @@ class AnyUniqueAliasesTypeId {
|
|||||||
|
|
||||||
static const int minValue = 0;
|
static const int minValue = 0;
|
||||||
static const int maxValue = 3;
|
static const int maxValue = 3;
|
||||||
static bool containsValue(int value) => values.containsKey(value);
|
|
||||||
|
|
||||||
static const AnyUniqueAliasesTypeId NONE = AnyUniqueAliasesTypeId._(0);
|
|
||||||
static const AnyUniqueAliasesTypeId M = AnyUniqueAliasesTypeId._(1);
|
|
||||||
static const AnyUniqueAliasesTypeId TS = AnyUniqueAliasesTypeId._(2);
|
|
||||||
static const AnyUniqueAliasesTypeId M2 = AnyUniqueAliasesTypeId._(3);
|
|
||||||
static const Map<int, AnyUniqueAliasesTypeId> values = {
|
|
||||||
0: NONE,
|
|
||||||
1: M,
|
|
||||||
2: TS,
|
|
||||||
3: M2};
|
|
||||||
|
|
||||||
static const fb.Reader<AnyUniqueAliasesTypeId> reader = _AnyUniqueAliasesTypeIdReader();
|
static const fb.Reader<AnyUniqueAliasesTypeId> reader = _AnyUniqueAliasesTypeIdReader();
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() {
|
|
||||||
return 'AnyUniqueAliasesTypeId{value: $value}';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class _AnyUniqueAliasesTypeIdReader extends fb.Reader<AnyUniqueAliasesTypeId> {
|
class _AnyUniqueAliasesTypeIdReader extends fb.Reader<AnyUniqueAliasesTypeId> {
|
||||||
@@ -257,16 +198,23 @@ class _AnyUniqueAliasesTypeIdReader extends fb.Reader<AnyUniqueAliasesTypeId> {
|
|||||||
AnyUniqueAliasesTypeId.fromValue(const fb.Uint8Reader().read(bc, offset));
|
AnyUniqueAliasesTypeId.fromValue(const fb.Uint8Reader().read(bc, offset));
|
||||||
}
|
}
|
||||||
|
|
||||||
class AnyAmbiguousAliasesTypeId {
|
enum AnyAmbiguousAliasesTypeId {
|
||||||
|
NONE(0),
|
||||||
|
M1(1),
|
||||||
|
M2(2),
|
||||||
|
M3(3);
|
||||||
|
|
||||||
final int value;
|
final int value;
|
||||||
const AnyAmbiguousAliasesTypeId._(this.value);
|
const AnyAmbiguousAliasesTypeId(this.value);
|
||||||
|
|
||||||
factory AnyAmbiguousAliasesTypeId.fromValue(int value) {
|
factory AnyAmbiguousAliasesTypeId.fromValue(int value) {
|
||||||
final result = values[value];
|
switch (value) {
|
||||||
if (result == null) {
|
case 0: return AnyAmbiguousAliasesTypeId.NONE;
|
||||||
throw StateError('Invalid value $value for bit flag enum AnyAmbiguousAliasesTypeId');
|
case 1: return AnyAmbiguousAliasesTypeId.M1;
|
||||||
|
case 2: return AnyAmbiguousAliasesTypeId.M2;
|
||||||
|
case 3: return AnyAmbiguousAliasesTypeId.M3;
|
||||||
|
default: throw StateError('Invalid value $value for bit flag enum');
|
||||||
}
|
}
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static AnyAmbiguousAliasesTypeId? _createOrNull(int? value) =>
|
static AnyAmbiguousAliasesTypeId? _createOrNull(int? value) =>
|
||||||
@@ -274,24 +222,7 @@ class AnyAmbiguousAliasesTypeId {
|
|||||||
|
|
||||||
static const int minValue = 0;
|
static const int minValue = 0;
|
||||||
static const int maxValue = 3;
|
static const int maxValue = 3;
|
||||||
static bool containsValue(int value) => values.containsKey(value);
|
|
||||||
|
|
||||||
static const AnyAmbiguousAliasesTypeId NONE = AnyAmbiguousAliasesTypeId._(0);
|
|
||||||
static const AnyAmbiguousAliasesTypeId M1 = AnyAmbiguousAliasesTypeId._(1);
|
|
||||||
static const AnyAmbiguousAliasesTypeId M2 = AnyAmbiguousAliasesTypeId._(2);
|
|
||||||
static const AnyAmbiguousAliasesTypeId M3 = AnyAmbiguousAliasesTypeId._(3);
|
|
||||||
static const Map<int, AnyAmbiguousAliasesTypeId> values = {
|
|
||||||
0: NONE,
|
|
||||||
1: M1,
|
|
||||||
2: M2,
|
|
||||||
3: M3};
|
|
||||||
|
|
||||||
static const fb.Reader<AnyAmbiguousAliasesTypeId> reader = _AnyAmbiguousAliasesTypeIdReader();
|
static const fb.Reader<AnyAmbiguousAliasesTypeId> reader = _AnyAmbiguousAliasesTypeIdReader();
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() {
|
|
||||||
return 'AnyAmbiguousAliasesTypeId{value: $value}';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class _AnyAmbiguousAliasesTypeIdReader extends fb.Reader<AnyAmbiguousAliasesTypeId> {
|
class _AnyAmbiguousAliasesTypeIdReader extends fb.Reader<AnyAmbiguousAliasesTypeId> {
|
||||||
@@ -1461,7 +1392,7 @@ class MonsterT implements fb.Packable {
|
|||||||
this.testrequirednestedflatbuffer,
|
this.testrequirednestedflatbuffer,
|
||||||
this.scalarKeySortedTables,
|
this.scalarKeySortedTables,
|
||||||
this.nativeInline,
|
this.nativeInline,
|
||||||
this.longEnumNonEnumDefault = const LongEnum._(0),
|
this.longEnumNonEnumDefault = LongEnum._default,
|
||||||
this.longEnumNormalDefault = LongEnum.LongOne,
|
this.longEnumNormalDefault = LongEnum.LongOne,
|
||||||
this.nanDefault = double.nan,
|
this.nanDefault = double.nan,
|
||||||
this.infDefault = double.infinity,
|
this.infDefault = double.infinity,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// automatically generated by the FlatBuffers compiler, do not modify
|
// automatically generated by the FlatBuffers compiler, do not modify
|
||||||
// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable
|
// ignore_for_file: unused_import, unused_field, unused_element, unused_local_variable, constant_identifier_names
|
||||||
|
|
||||||
library my_game;
|
library my_game;
|
||||||
|
|
||||||
|
|||||||
3
docs-old/README.md
Normal file
3
docs-old/README.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
This is the source of the old docs that are being replaced. They are served
|
||||||
|
from the `gh-pages-old` branch, while the new documentations (source in docs/)
|
||||||
|
is served from the `gh-pages` branch.
|
||||||
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -72,6 +72,7 @@ We generate [SLSA3 signatures](slsa.dev) using the OpenSSF's [slsa-framework/sls
|
|||||||
```shell
|
```shell
|
||||||
$ slsa-verifier -artifact-path <downloaded.zip> -provenance attestation.intoto.jsonl -source github.com/google/flatbuffers -tag <version>
|
$ slsa-verifier -artifact-path <downloaded.zip> -provenance attestation.intoto.jsonl -source github.com/google/flatbuffers -tag <version>
|
||||||
PASSED: Verified SLSA provenance
|
PASSED: Verified SLSA provenance
|
||||||
|
```
|
||||||
|
|
||||||
## Building for Android
|
## Building for Android
|
||||||
|
|
||||||
@@ -23,31 +23,35 @@ For any schema input files, one or more generators can be specified:
|
|||||||
|
|
||||||
- `--java`, `-j` : Generate Java code.
|
- `--java`, `-j` : Generate Java code.
|
||||||
|
|
||||||
- `--kotlin`, `-k` : Generate Kotlin code.
|
- `--kotlin` , `--kotlin-kmp` : Generate Kotlin code.
|
||||||
|
|
||||||
- `--csharp`, `-n` : Generate C# code.
|
- `--csharp`, `-n` : Generate C# code.
|
||||||
|
|
||||||
- `--go`, `-g` : Generate Go code.
|
- `--go`, `-g` : Generate Go code.
|
||||||
|
|
||||||
- `--python`, `-p`: Generate Python code.
|
- `--python`, `-p` : Generate Python code.
|
||||||
|
|
||||||
- `--js`, `-s`: Generate JavaScript code.
|
- `--js`, `-s` : Generate JavaScript code.
|
||||||
|
|
||||||
- `--ts`: Generate TypeScript code.
|
- `--ts`, `-T` : Generate TypeScript code.
|
||||||
|
|
||||||
- `--php`: Generate PHP code.
|
- `--php` : Generate PHP code.
|
||||||
|
|
||||||
- `--grpc`: Generate RPC stub code for GRPC.
|
- `--grpc` : Generate RPC stub code for GRPC.
|
||||||
|
|
||||||
- `--dart`: Generate Dart code.
|
- `--dart`, `-d` : Generate Dart code.
|
||||||
|
|
||||||
- `--lua`: Generate Lua code.
|
- `--lua`, `-l` : Generate Lua code.
|
||||||
|
|
||||||
- `--lobster`: Generate Lobster code.
|
- `--lobster` : Generate Lobster code.
|
||||||
|
|
||||||
- `--rust`, `-r` : Generate Rust code.
|
- `--rust`, `-r` : Generate Rust code.
|
||||||
|
|
||||||
- `--swift`: Generate Swift code.
|
- `--swift` : Generate Swift code.
|
||||||
|
|
||||||
|
- `--nim` : Generate Nim code.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
For any data input files:
|
For any data input files:
|
||||||
|
|
||||||
@@ -58,6 +62,8 @@ For any data input files:
|
|||||||
- `--json`, `-t` : If data is contained in this file, generate a
|
- `--json`, `-t` : If data is contained in this file, generate a
|
||||||
`filename.json` representing the data in the flatbuffer.
|
`filename.json` representing the data in the flatbuffer.
|
||||||
|
|
||||||
|
- `--jsonschema` : Generate Json schema
|
||||||
|
|
||||||
Additional options:
|
Additional options:
|
||||||
|
|
||||||
- `-o PATH` : Output all generated files to PATH (either absolute, or
|
- `-o PATH` : Output all generated files to PATH (either absolute, or
|
||||||
@@ -115,7 +121,7 @@ Additional options:
|
|||||||
|
|
||||||
- `--gen-compare` : Generate operator== for object-based API types.
|
- `--gen-compare` : Generate operator== for object-based API types.
|
||||||
|
|
||||||
- `--gen-nullable` : Add Clang _Nullable for C++ pointer. or @Nullable for Java.
|
- `--gen-nullable` : Add Clang \_Nullable for C++ pointer. or @Nullable for Java.
|
||||||
|
|
||||||
- `--gen-generated` : Add @Generated annotation for Java.
|
- `--gen-generated` : Add @Generated annotation for Java.
|
||||||
|
|
||||||
@@ -189,7 +195,7 @@ Additional options:
|
|||||||
`--conform PATH`.
|
`--conform PATH`.
|
||||||
|
|
||||||
- `--filename-suffix SUFFIX` : The suffix appended to the generated
|
- `--filename-suffix SUFFIX` : The suffix appended to the generated
|
||||||
file names. Default is '_generated'.
|
file names. Default is '\_generated'.
|
||||||
|
|
||||||
- `--filename-ext EXTENSION` : The extension appended to the generated
|
- `--filename-ext EXTENSION` : The extension appended to the generated
|
||||||
file names. Default is language-specific (e.g. "h" for C++). This
|
file names. Default is language-specific (e.g. "h" for C++). This
|
||||||
@@ -227,5 +233,49 @@ Additional options:
|
|||||||
vector of bytes in JSON, which is unsafe unless checked by a verifier
|
vector of bytes in JSON, which is unsafe unless checked by a verifier
|
||||||
afterwards.
|
afterwards.
|
||||||
|
|
||||||
|
- `--python-no-type-prefix-suffix` : Skip emission of Python functions that are prefixed
|
||||||
|
with typenames
|
||||||
|
|
||||||
|
- `--python-typing` : Generate Python type annotations
|
||||||
|
|
||||||
|
Additional gRPC options:
|
||||||
|
|
||||||
|
- `--grpc-filename-suffix`: `[C++]` An optional suffix for the generated
|
||||||
|
files' names. For example, compiling gRPC for C++ with
|
||||||
|
`--grpc-filename-suffix=.fbs` will generate `{name}.fbs.h` and
|
||||||
|
`{name}.fbs.cc` files.
|
||||||
|
|
||||||
|
- `--grpc-additional-header`: `[C++]` Additional headers to include in the
|
||||||
|
generated files.
|
||||||
|
|
||||||
|
- `--grpc-search-path`: `[C++]` An optional prefix for the gRPC runtime path.
|
||||||
|
For example, compiling gRPC for C++ with `--grpc-search-path=some/path` will
|
||||||
|
generate the following includes:
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
#include "some/path/grpcpp/impl/codegen/async_stream.h"
|
||||||
|
#include "some/path/grpcpp/impl/codegen/async_unary_call.h"
|
||||||
|
#include "some/path/grpcpp/impl/codegen/method_handler.h"
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
- `--grpc-use-system-headers`: `[C++]` Whether to generate `#include <header>`
|
||||||
|
instead of `#include "header.h"` for all headers when compiling gRPC for
|
||||||
|
C++. For example, compiling gRPC for C++ with `--grpc-use-system-headers`
|
||||||
|
will generate the following includes:
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
#include <some/path/grpcpp/impl/codegen/async_stream.h>
|
||||||
|
#include <some/path/grpcpp/impl/codegen/async_unary_call.h>
|
||||||
|
#include <some/path/grpcpp/impl/codegen/method_handler.h>
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
NOTE: This option can be negated with `--no-grpc-use-system-headers`.
|
||||||
|
|
||||||
|
- `--grpc-python-typed-handlers`: `[Python]` Whether to generate the typed
|
||||||
|
handlers that use the generated Python classes instead of raw bytes for
|
||||||
|
requests/responses.
|
||||||
|
|
||||||
NOTE: short-form options for generators are deprecated, use the long form
|
NOTE: short-form options for generators are deprecated, use the long form
|
||||||
whenever possible.
|
whenever possible.
|
||||||
@@ -24,17 +24,14 @@ FlatBuffers).
|
|||||||
## Building the FlatBuffers C# library
|
## Building the FlatBuffers C# library
|
||||||
|
|
||||||
The `FlatBuffers.csproj` project contains multitargeting for .NET Standard 2.1,
|
The `FlatBuffers.csproj` project contains multitargeting for .NET Standard 2.1,
|
||||||
.NET Standard 2.0, and .NET Framework 4.6 (Unity 2017). Support for .NET
|
.NET 6 and .NET 8.
|
||||||
Framework 3.5 (Unity 5) is provided by the `FlatBuffers.net35.csproj` project.
|
|
||||||
In most cases (including Unity 2018 and newer), .NET Standard 2.0 is
|
|
||||||
recommended.
|
|
||||||
|
|
||||||
You can build for a specific framework target when using the cross-platform
|
You can build for a specific framework target when using the cross-platform
|
||||||
[.NET Core SDK](https://dotnet.microsoft.com/download) by adding the `-f`
|
[.NET Core SDK](https://dotnet.microsoft.com/download) by adding the `-f`
|
||||||
command line option:
|
command line option:
|
||||||
|
|
||||||
~~~{.sh}
|
~~~{.sh}
|
||||||
dotnet build -f netstandard2.0 "FlatBuffers.csproj"
|
dotnet build -f netstandard2.1 "FlatBuffers.csproj"
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
The `FlatBuffers.csproj` project also provides support for defining various
|
The `FlatBuffers.csproj` project also provides support for defining various
|
||||||
@@ -142,6 +139,47 @@ To use it:
|
|||||||
`ByKey` only works if the vector has been sorted, it will
|
`ByKey` only works if the vector has been sorted, it will
|
||||||
likely not find elements if it hasn't been sorted.
|
likely not find elements if it hasn't been sorted.
|
||||||
|
|
||||||
|
## Buffer verification
|
||||||
|
|
||||||
|
As mentioned in [C++ Usage](@ref flatbuffers_guide_use_cpp) buffer
|
||||||
|
accessor functions do not verify buffer offsets at run-time.
|
||||||
|
If it is necessary, you can optionally use a buffer verifier before you
|
||||||
|
access the data. This verifier will check all offsets, all sizes of
|
||||||
|
fields, and null termination of strings to ensure that when a buffer
|
||||||
|
is accessed, all reads will end up inside the buffer.
|
||||||
|
|
||||||
|
Each root type will have a verification function generated for it,
|
||||||
|
e.g. `Monster.VerifyMonster`. This can be called as shown:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cs}
|
||||||
|
var ok = Monster.VerifyMonster(buf);
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
if `ok` is true, the buffer is safe to read.
|
||||||
|
|
||||||
|
For a more detailed control of verification `MonsterVerify.Verify`
|
||||||
|
for `Monster` type can be used:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cs}
|
||||||
|
# Sequence of calls
|
||||||
|
FlatBuffers.Verifier verifier = new FlatBuffers.Verifier(buf);
|
||||||
|
var ok = verifier.VerifyBuffer("MONS", false, MonsterVerify.Verify);
|
||||||
|
|
||||||
|
# Or single line call
|
||||||
|
var ok = new FlatBuffers.Verifier(bb).setStringCheck(true).\
|
||||||
|
VerifyBuffer("MONS", false, MonsterVerify.Verify);
|
||||||
|
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
if `ok` is true, the buffer is safe to read.
|
||||||
|
|
||||||
|
A second parameter of `verifyBuffer` specifies whether buffer content is
|
||||||
|
size prefixed or not. In the example above, the buffer is assumed to not include
|
||||||
|
size prefix (`false`).
|
||||||
|
|
||||||
|
Verifier supports options that can be set using appropriate fluent methods:
|
||||||
|
* SetMaxDepth - limit the nesting depth. Default: 1000000
|
||||||
|
* SetMaxTables - total amount of tables the verifier may encounter. Default: 64
|
||||||
|
* SetAlignmentCheck - check content alignment. Default: True
|
||||||
|
* SetStringCheck - check if strings contain termination '0' character. Default: true
|
||||||
|
|
||||||
|
|
||||||
## Text parsing
|
## Text parsing
|
||||||
|
|
||||||
There currently is no support for parsing text (Schema's and JSON) directly
|
There currently is no support for parsing text (Schema's and JSON) directly
|
||||||
@@ -9,7 +9,7 @@ It was originally created at Google for game development and other
|
|||||||
performance-critical applications.
|
performance-critical applications.
|
||||||
|
|
||||||
It is available as Open Source on [GitHub](http://github.com/google/flatbuffers)
|
It is available as Open Source on [GitHub](http://github.com/google/flatbuffers)
|
||||||
under the Apache license, v2 (see LICENSE.txt).
|
under the Apache license, v2 (see LICENSE).
|
||||||
|
|
||||||
## Why use FlatBuffers?
|
## Why use FlatBuffers?
|
||||||
|
|
||||||
@@ -529,7 +529,7 @@ The first step is to import/include the library, generated files, etc.
|
|||||||
#[allow(dead_code, unused_imports)]
|
#[allow(dead_code, unused_imports)]
|
||||||
#[path = "./monster_generated.rs"]
|
#[path = "./monster_generated.rs"]
|
||||||
mod monster_generated;
|
mod monster_generated;
|
||||||
pub use monster_generated::my_game::sample::{get_root_as_monster,
|
pub use monster_generated::my_game::sample::{root_as_monster,
|
||||||
Color, Equipment,
|
Color, Equipment,
|
||||||
Monster, MonsterArgs,
|
Monster, MonsterArgs,
|
||||||
Vec3,
|
Vec3,
|
||||||
@@ -652,7 +652,7 @@ which will grow automatically if needed:
|
|||||||
~~~{.rs}
|
~~~{.rs}
|
||||||
// Build up a serialized buffer algorithmically.
|
// Build up a serialized buffer algorithmically.
|
||||||
// Initialize it with a capacity of 1024 bytes.
|
// Initialize it with a capacity of 1024 bytes.
|
||||||
let mut builder = flatbuffers::FlatBufferBuilder::new_with_capacity(1024);
|
let mut builder = flatbuffers::FlatBufferBuilder::with_capacity(1024);
|
||||||
~~~
|
~~~
|
||||||
</div>
|
</div>
|
||||||
<div class="language-swift">
|
<div class="language-swift">
|
||||||
@@ -2309,7 +2309,7 @@ import './monster_my_game.sample_generated.dart' as myGame;
|
|||||||
#[allow(dead_code, unused_imports)]
|
#[allow(dead_code, unused_imports)]
|
||||||
#[path = "./monster_generated.rs"]
|
#[path = "./monster_generated.rs"]
|
||||||
mod monster_generated;
|
mod monster_generated;
|
||||||
pub use monster_generated::my_game::sample::{get_root_as_monster,
|
pub use monster_generated::my_game::sample::{root_as_monster,
|
||||||
Color, Equipment,
|
Color, Equipment,
|
||||||
Monster, MonsterArgs,
|
Monster, MonsterArgs,
|
||||||
Vec3,
|
Vec3,
|
||||||
@@ -2465,7 +2465,7 @@ myGame.Monster monster = new myGame.Monster(data);
|
|||||||
let buf = /* the data you just read, in a &[u8] */
|
let buf = /* the data you just read, in a &[u8] */
|
||||||
|
|
||||||
// Get an accessor to the root object inside the buffer.
|
// Get an accessor to the root object inside the buffer.
|
||||||
let monster = get_root_as_monster(buf);
|
let monster = root_as_monster(buf).unwrap();
|
||||||
~~~
|
~~~
|
||||||
</div>
|
</div>
|
||||||
<div class="language-swift">
|
<div class="language-swift">
|
||||||
@@ -779,7 +779,8 @@ INPUT = "FlatBuffers.md" \
|
|||||||
"../../python/flatbuffers/builder.py" \
|
"../../python/flatbuffers/builder.py" \
|
||||||
"../../js/flatbuffers.js" \
|
"../../js/flatbuffers.js" \
|
||||||
"../../php/FlatbufferBuilder.php" \
|
"../../php/FlatbufferBuilder.php" \
|
||||||
"../../net/FlatBuffers/FlatBufferBuilder.cs" \
|
"../../net/FlatBuffers/FlatBufferBuilder.cs"
|
||||||
|
"../../net/FlatBuffers/FlatBufferVerify.cs" \
|
||||||
"../../include/flatbuffers/flatbuffers.h" \
|
"../../include/flatbuffers/flatbuffers.h" \
|
||||||
"../../go/builder.go" \
|
"../../go/builder.go" \
|
||||||
"../../rust/flatbuffers/src/builder.rs"
|
"../../rust/flatbuffers/src/builder.rs"
|
||||||
24
docs/README.md
Normal file
24
docs/README.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# Documentation
|
||||||
|
|
||||||
|
This is the source of the FlatBuffers documentation, that is served at
|
||||||
|
https://flatbuffers.dev.
|
||||||
|
|
||||||
|
|
||||||
|
## Local Building
|
||||||
|
|
||||||
|
The documentation can be built and served locally during development, see [https//flatbuffers.dev/contributing/#local-development] for full details.
|
||||||
|
|
||||||
|
__tl;dr__
|
||||||
|
|
||||||
|
Install:
|
||||||
|
|
||||||
|
```
|
||||||
|
pip install mkdocs-material
|
||||||
|
pip install mkdocs-redirects
|
||||||
|
```
|
||||||
|
|
||||||
|
Build and Serve:
|
||||||
|
|
||||||
|
```
|
||||||
|
mkdocs serve -f docs/mkdocs.yml
|
||||||
|
```
|
||||||
159
docs/mkdocs.yml
Normal file
159
docs/mkdocs.yml
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
site_name: FlatBuffers Docs
|
||||||
|
docs_dir: source
|
||||||
|
site_url: https://flatbuffers.dev
|
||||||
|
repo_name: google/FlatBuffers
|
||||||
|
repo_url: https://github.com/google/flatbuffers
|
||||||
|
edit_uri: edit/master/docs/source/
|
||||||
|
copyright: Copyright © 2025 Google
|
||||||
|
theme:
|
||||||
|
name: material
|
||||||
|
logo: assets/flatbuffers_logo.svg
|
||||||
|
icon:
|
||||||
|
repo: fontawesome/brands/github
|
||||||
|
custom_dir: overrides
|
||||||
|
palette:
|
||||||
|
# Palette toggle for light mode
|
||||||
|
- scheme: default
|
||||||
|
toggle:
|
||||||
|
icon: material/brightness-7
|
||||||
|
name: Switch to dark mode
|
||||||
|
|
||||||
|
# Palette toggle for dark mode
|
||||||
|
- scheme: slate
|
||||||
|
toggle:
|
||||||
|
icon: material/brightness-4
|
||||||
|
name: Switch to light mode
|
||||||
|
|
||||||
|
features:
|
||||||
|
# Allows code block annotations
|
||||||
|
- content.code.annotate
|
||||||
|
|
||||||
|
# Allows content tabs to link together
|
||||||
|
- content.tabs.link
|
||||||
|
|
||||||
|
# Expand nav folders by default
|
||||||
|
- navigation.expand
|
||||||
|
|
||||||
|
# Enable the footer
|
||||||
|
- navigation.footer
|
||||||
|
|
||||||
|
# Auto hide the header after scrolling
|
||||||
|
- header.autohide
|
||||||
|
|
||||||
|
- content.action.edit
|
||||||
|
|
||||||
|
extra:
|
||||||
|
social:
|
||||||
|
- icon: fontawesome/brands/github
|
||||||
|
link: https://github.com/google/flatbuffers
|
||||||
|
|
||||||
|
- icon: fontawesome/brands/discord
|
||||||
|
link: https:///discord.gg/6qgKs3R
|
||||||
|
|
||||||
|
- icon: fontawesome/brands/x-twitter
|
||||||
|
link: https://twitter.com/dbaileychess
|
||||||
|
|
||||||
|
plugins:
|
||||||
|
# Use redirects to update links from the original docs to the new ones.
|
||||||
|
#
|
||||||
|
# https://github.com/mkdocs/mkdocs-redirects
|
||||||
|
- redirects:
|
||||||
|
# Note the .html are suffixed with .md to avoid warnings. Got from
|
||||||
|
# https://github.com/mkdocs/mkdocs-redirects/issues/51#issuecomment-2408548029
|
||||||
|
redirect_maps:
|
||||||
|
'flatbuffers_guide_building.html.md': 'building.md'
|
||||||
|
'flatbuffers_guide_tutorial.html.md': 'tutorial.md'
|
||||||
|
'flatbuffers_guide_using_schema_compiler.html.md': 'flatc.md'
|
||||||
|
'flatbuffers_guide_writing_schema.html.md': 'schema.md'
|
||||||
|
'md__schemas.html.md': 'schema.md' # issue #8485
|
||||||
|
'flatbuffers_guide_use_c.html.md': 'languages/c.md'
|
||||||
|
'flatbuffers_guide_use_cpp.html.md': 'languages/cpp.md'
|
||||||
|
'flatbuffers_guide_use_c-sharp.html.md': 'languages/c_sharp.md'
|
||||||
|
'flatbuffers_guide_use_dart.html.md': 'languages/dart.md'
|
||||||
|
'flatbuffers_guide_use_go.html.md': 'languages/go.md'
|
||||||
|
'flatbuffers_guide_use_java.html.md': 'languages/java.md'
|
||||||
|
'flatbuffers_guide_use_javascript.html.md': 'languages/javascript.md'
|
||||||
|
'flatbuffers_guide_use_lobster.html.md': 'languages/lobster.md'
|
||||||
|
'flatbuffers_guide_use_lua.html.md': 'languages/lua.md'
|
||||||
|
'flatbuffers_guide_use_php.html.md': 'languages/php.md'
|
||||||
|
'flatbuffers_guide_use_python.html.md': 'languages/python.md'
|
||||||
|
'flatbuffers_guide_use_rust.html.md': 'languages/rust.md'
|
||||||
|
'flatbuffers_guide_use_swift.html.md': 'languages/swift.md'
|
||||||
|
'flatbuffers_guide_use_typescript.html.md': 'languages/typescript.md'
|
||||||
|
'flatbuffers_grpc_guide_use_cpp.html.md' : "languages/cpp.md#grpc"
|
||||||
|
'flatbuffers_support.html.md': 'support.md'
|
||||||
|
'flatbuffers_white_paper.html.md': 'white_paper.md'
|
||||||
|
'flatbuffers_grammar.html.md': 'grammar.md'
|
||||||
|
'flatbuffers_internals.html.md': 'internals.md'
|
||||||
|
'intermediate_representation.html.md': 'intermediate_representation.md'
|
||||||
|
'flatbuffers_benchmarks.html.md': 'benchmarks.md'
|
||||||
|
'flexbuffers.html.md': 'flexbuffers.md'
|
||||||
|
'contributing.html.md': 'contributing.md'
|
||||||
|
|
||||||
|
|
||||||
|
markdown_extensions:
|
||||||
|
- admonition
|
||||||
|
- attr_list
|
||||||
|
- md_in_html
|
||||||
|
- pymdownx.critic
|
||||||
|
- pymdownx.details
|
||||||
|
- pymdownx.emoji:
|
||||||
|
emoji_index: !!python/name:material.extensions.emoji.twemoji
|
||||||
|
emoji_generator: !!python/name:material.extensions.emoji.to_svg
|
||||||
|
- pymdownx.snippets:
|
||||||
|
# Allows direct embedded of remote files
|
||||||
|
url_download: true
|
||||||
|
- pymdownx.superfences
|
||||||
|
- pymdownx.tabbed:
|
||||||
|
alternate_style: true
|
||||||
|
slugify: !!python/object/apply:pymdownx.slugs.slugify
|
||||||
|
kwds:
|
||||||
|
case: lower
|
||||||
|
- pymdownx.highlight:
|
||||||
|
extend_pygments_lang:
|
||||||
|
# PHP wasn't highlighting correctly. This is a work around found
|
||||||
|
# https://github.com/squidfunk/mkdocs-material/issues/138#issuecomment-2294025627
|
||||||
|
- name: php
|
||||||
|
lang: php
|
||||||
|
options:
|
||||||
|
startinline: true
|
||||||
|
- tables
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
nav:
|
||||||
|
- Overview: "index.md"
|
||||||
|
- Quick Start: "quick_start.md"
|
||||||
|
- Tutorial: "tutorial.md"
|
||||||
|
- Compiler (flatc):
|
||||||
|
- Building: "building.md"
|
||||||
|
- Using: "flatc.md"
|
||||||
|
- Schema (.fbs):
|
||||||
|
- Overview: "schema.md"
|
||||||
|
- Evolution: "evolution.md"
|
||||||
|
- Grammar: "grammar.md"
|
||||||
|
- Language Guides:
|
||||||
|
- C: "languages/c.md"
|
||||||
|
- C++: "languages/cpp.md"
|
||||||
|
- C#: "languages/c_sharp.md"
|
||||||
|
- Dart: "languages/dart.md"
|
||||||
|
- Go: "languages/go.md"
|
||||||
|
- Java: "languages/java.md"
|
||||||
|
- JavasScript: "languages/javascript.md"
|
||||||
|
- Kotlin: "languages/kotlin.md"
|
||||||
|
- Lobster: "languages/lobster.md"
|
||||||
|
- Lua: "languages/lua.md"
|
||||||
|
- PHP: "languages/php.md"
|
||||||
|
- Python: "languages/python.md"
|
||||||
|
- Rust: "languages/rust.md"
|
||||||
|
- Swift: "languages/swift.md"
|
||||||
|
- TypeScript: "languages/typescript.md"
|
||||||
|
- Supported Configurations: "support.md"
|
||||||
|
- White Paper: "white_paper.md"
|
||||||
|
- Advanced:
|
||||||
|
- FlatBuffers Internals: "internals.md"
|
||||||
|
- Intermediate Representation: "intermediate_representation.md"
|
||||||
|
- Annotating Buffers (.afb): "annotation.md"
|
||||||
|
- Benchmarks: "benchmarks.md"
|
||||||
|
- FlexBuffers (Schema-less version): "flexbuffers.md"
|
||||||
|
- Contributing: "contributing.md"
|
||||||
11
docs/overrides/404.html
Normal file
11
docs/overrides/404.html
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{% extends "main.html" %}
|
||||||
|
|
||||||
|
<!-- Content -->
|
||||||
|
{% block content %}
|
||||||
|
<h1>404 - Not found</h1>
|
||||||
|
<br>
|
||||||
|
FlatBuffers is currently migrating their documentation system and existing
|
||||||
|
links may not work.
|
||||||
|
|
||||||
|
Please <a href="https://github.com/google/flatbuffers/issues/new?template=404-doc.md">file an issue</a> indicating the broken link.
|
||||||
|
{% endblock %}
|
||||||
6
docs/overrides/main.html
Normal file
6
docs/overrides/main.html
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
<!-- Announcement bar -->
|
||||||
|
{% block announce %}
|
||||||
|
Documentation migration in progress, view snapshot of the old documentation <a href="https://dbaileychess.github.io/flatbuffers">here.</a>
|
||||||
|
{% endblock %}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user