Olivier Goffart
9fc60e104f
Add another way to load .60 files from a build script
2020-06-05 13:45:38 +02:00
Olivier Goffart
0553ab8b1a
Use env::var_os instead of env::var
...
For the unliekly case in which the git repository is checked out in a directory
that cannot be represented with unicode
2020-06-05 13:45:37 +02:00
Olivier Goffart
e6681a7087
Move the rust generator to the compiler lib
2020-06-05 10:54:22 +02:00
Olivier Goffart
3651885d87
Move the compiler binary in tools/
...
And rename sixtyfps_compiler to sixtyfps_compilerlib
2020-06-05 09:23:38 +02:00
Olivier Goffart
7a8c549625
Be able to read or write properties from JS
2020-06-04 15:48:39 +02:00
Simon Hausmann
2e0a5ddb25
Create & install a cmake package file (part 3)
...
The cargo target directory tree is now populated with a cmake package
file and that's also installed into the prefix specified with the cargo
cmake xtask.
As a consequence, the cpptest example can be built by first building the
cmake package:
cargo xtask cmake
or
cargo xtask cmake --release --target some-triplet)
or
cargo xtask cmake --release --prefix /somewhere --install
and then run cmake in the cpptest example with a prefix path:
-DCMAKE_PREFIX_PATH=/where/you/installed/it or simply
-DCMAKE_PREFIX_PATH=../../target/debug for example.
Pending still is the sixtyfps compiler tool installation and discovery.
2020-06-04 15:33:18 +02:00
Simon Hausmann
a2c5e66bee
Rename gl renderer backend package
...
Use a full prefixed name (sixtyfps_rendering_backend_gl) to ensure that
the created static lib can be installed without file conflicts (libgl is
not a unique name).
2020-06-04 15:30:41 +02:00
Simon Hausmann
c5001703d4
Build the cmake module for our runtime as xtask, part 2
...
This is done by calling cargo with json output to build the libraries,
collect the .a files, extract the native libraries needed for final
linkage and pass all that to a CMake project that cobbles together the
.a files into a propery cmake target with include paths, etc.
2020-06-04 15:29:19 +02:00
Olivier Goffart
ec8baa81f2
formating
2020-06-04 14:05:17 +02:00
Olivier Goffart
7b8df5ca9d
Use interior mutability for the cache
...
So we do not need a mutable reference to the Component
2020-06-04 14:03:30 +02:00
Olivier Goffart
e4366efb67
Do not require the component to be static to show a window
2020-06-04 13:44:40 +02:00
Olivier Goffart
aa08ee1148
Fix signal connection from JS
...
Since we do not have persistent handle, I need to find a place to save the
callback, so i save them in a property of the component
2020-06-04 12:49:33 +02:00
Olivier Goffart
49d2aec7e2
Node: add possibility to add signal handler
...
Right now, this only works once and then panic the second time
2020-06-04 12:49:33 +02:00
Simon Hausmann
12457ed7f3
Fix crash when using optimized gcc builds
...
Don't return void in non-void functions.
2020-06-04 08:44:24 +02:00
Olivier Goffart
5ee09398e8
Node: Allow to init properties to value
2020-06-03 17:33:45 +02:00
Olivier Goffart
30d61452ba
Interpreter and node API: some refactoring towards being able to set properties from JS
2020-06-03 17:33:43 +02:00
Olivier Goffart
fd829fc89f
Some more refactoring of the interpreter
...
Move the content of lib.rs to a module so we can have some
kind of public api in the lib.rs
2020-06-03 17:33:26 +02:00
Olivier Goffart
0a48252702
Interpreter: implement the ComponentVTable properly
...
with the drop and construct function
2020-06-03 17:33:26 +02:00
Olivier Goffart
13c7e0dec8
Begin working on a Node API
...
Currently, the followinf command in the example/nodetest directory works:
npm install ../../api/sixtyfps-node && node main.js
2020-06-03 17:33:05 +02:00
Olivier Goffart
63430c2acb
Add a readme for the cpp api
2020-05-31 15:34:04 +02:00
Olivier Goffart
c024f97890
Viewer: use binding when needed
2020-05-30 17:42:17 +02:00
Olivier Goffart
5f01ec30ee
Fix the viewer using generated rtti from a macro
...
One thing that needed to change is that we needed the vtable to be unique
2020-05-30 15:08:51 +02:00
Olivier Goffart
619e21295d
reformat
2020-05-28 17:15:11 +02:00
Olivier Goffart
dc276290e9
Add support for self assignment (+=, -=, ...)
2020-05-28 17:02:06 +02:00
Olivier Goffart
9891779022
Fix the C++ property
2020-05-28 15:25:56 +02:00
Simon Hausmann
993caa1cd4
Fix conversion from float to string in Rust frontend
...
Use as_str() to fix the compilation and call the macro with a bang :)
2020-05-28 15:20:30 +02:00
Simon Hausmann
97dc677854
Emit signal handler bindings and expressions for emitting signals in the Rust frontend
2020-05-28 15:20:30 +02:00
Simon Hausmann
a3892ea102
Emit declared signals in the rust frontend
2020-05-28 15:20:30 +02:00
Olivier Goffart
74898a1386
Make property conneciton binding in the C++
...
(somehow plus/minus is not working yet)
2020-05-28 14:52:43 +02:00
Simon Hausmann
e227f8a46e
Use both set() and set_binding() in the rust frontend
...
When an expression holds just a constant value, then we can avoid creating a binding.
2020-05-28 14:41:15 +02:00
Olivier Goffart
f6d1151832
Use the EvaluationContext in the signal handler
2020-05-28 14:26:35 +02:00
Olivier Goffart
e86a7d3192
Merge signal and property declaration
...
A Signal is just a property of type Type::Signal
Simplifies the code a bit
2020-05-28 12:49:18 +02:00
Olivier Goffart
95b671c97c
Support for code blocks and signal call
2020-05-28 12:30:08 +02:00
Simon Hausmann
f2df9293a9
Fix the C++ build
...
Remove the Optional from the evaluation context passing for property
evaluation. Unfortunately there are nullptr uses left on the C++ side,
that need to be replaced with passing through.
2020-05-28 12:07:11 +02:00
Simon Hausmann
4f9c53879b
Implement property references as bindings in the Rust frontend
2020-05-28 11:37:59 +02:00
Olivier Goffart
250b0a2e5b
Rust macro: get the right span for the diagnostics
...
Merge the features proc_macro_span and proc_macro_diagnostics, they are the same.
2020-05-27 18:37:45 +02:00
Olivier Goffart
5580b5112f
Fix number to string conversion in C++
2020-05-27 16:18:08 +02:00
Olivier Goffart
486b2ab8f8
Do type checking and convert from number to string
2020-05-27 15:43:45 +02:00
Simon Hausmann
c8b64f5c4b
Remove the lowering
...
The LoweredItem and LoweredComponent contained, in essence, the same
information as the Element and Component in object_tree. Since the
moving declarations pass moved everything to the root element and the
LoweredPropertyDeclarations have been removed as well, this is the last
step.
2020-05-27 14:45:35 +02:00
Simon Hausmann
32990e15e2
Remove LoweredPropertyDeclaration
...
This type that allowed indexing the property declarations in the hierarchy
to the properties moved to the root is not needed anymore.
For now a simple set remains in the LoweredItem to generate
correct accessor prefixes.
2020-05-27 11:13:58 +02:00
Simon Hausmann
0504ea566c
Add support for declaring properties in Rust
2020-05-26 15:21:33 +02:00
Simon Hausmann
e77fe37568
Make it more convenient to deal with diagnostics in the Rust frontend
...
Provide a ToTokens implementation of Diagnostics by moving the code from the macro.
This makes it easier later to re-use the same logic to return
with diagnostics.
2020-05-26 15:17:18 +02:00
Olivier Goffart
36fb526811
Do inlining in a pass before the lowering
2020-05-26 15:10:27 +02:00
Olivier Goffart
4ea78134d8
Recactor the compiler so there are passes
2020-05-26 09:40:36 +02:00
Olivier Goffart
5a7a95dbc8
Make sure that we do not recognize ': =' or '= >' as one token
2020-05-25 18:15:06 +02:00
Olivier Goffart
e34ac8c3f4
Get signals and toucharea working on the rust example
2020-05-25 17:41:24 +02:00
Olivier Goffart
c0a4902240
Rename expressions -> expression_tree
...
there is already an expressions module in the parser
2020-05-25 15:28:37 +02:00
Olivier Goffart
1de4eb476b
Lookup of identifier is now done while resolving expressions
2020-05-25 14:37:09 +02:00
Olivier Goffart
3629e5f158
Refactor the Expression
...
So we will resolve the expression in a different step
2020-05-25 13:15:10 +02:00
Simon Hausmann
32b99547f1
Parse property declarations
...
For now this uses the syntax
property<qualified type name> name;
2020-05-25 12:38:29 +02:00