Compare commits

...

254 commits

Author SHA1 Message Date
7244dc7176 nix build: + xo-reader2 [NIX]
Some checks failed
CI / smoke-test (push) Has been cancelled
2026-05-30 22:49:07 -04:00
027ba0bcfd Split 'xo-reader2/' into commit 'e6d3846dbf'
git-subtree-dir: xo-reader2
git-subtree-mainline: 0b2be004c9
git-subtree-split: e6d3846dbf
2026-05-30 17:41:04 -04:00
0b2be004c9 Split 'xo-reflectutil/' into commit '14cad16f1d'
git-subtree-dir: xo-reflectutil
git-subtree-mainline: b7a0166046
git-subtree-split: 14cad16f1d
2026-05-30 17:35:21 -04:00
e6d3846dbf Split 'xo-reflectutil/' into commit '14cad16f1d'
git-subtree-dir: xo-reflectutil
git-subtree-mainline: b7a0166046
git-subtree-split: 14cad16f1d
2026-05-30 17:35:21 -04:00
b7a0166046 Split 'xo-reader2/' into commit 'b7357fdbf1'
git-subtree-dir: xo-reader2
git-subtree-mainline: 46d112c7ed
git-subtree-split: b7357fdbf1
2026-05-30 17:13:40 -04:00
14cad16f1d Split 'xo-reader2/' into commit 'b7357fdbf1'
git-subtree-dir: xo-reader2
git-subtree-mainline: 46d112c7ed
git-subtree-split: b7357fdbf1
2026-05-30 17:13:40 -04:00
46d112c7ed kill xo-pyrprintjson/. wut. 2026-05-30 15:44:53 -04:00
7b35ceeb02 xo-cmake: + missing subsystems 2026-05-30 15:42:53 -04:00
b7357fdbf1 Split 'xo-expression2/' into commit '132be039de'
git-subtree-dir: xo-expression2
git-subtree-mainline: e75422e219
git-subtree-split: 132be039de
2026-05-30 14:12:49 -04:00
f2b9a2b909 Split 'xo-expression2/' into commit '132be039de'
git-subtree-dir: xo-expression2
git-subtree-mainline: e75422e219
git-subtree-split: 132be039de
2026-05-30 14:12:49 -04:00
87d6b75b39 Split 'xo-tokenizer2/' into commit '48a082cb6b'
git-subtree-dir: xo-tokenizer2
git-subtree-mainline: d684e7408a
git-subtree-split: 48a082cb6b
2026-05-30 12:58:57 -04:00
a6fbb5dde6 Split 'xo-tokenizer2/' into commit '48a082cb6b'
git-subtree-dir: xo-tokenizer2
git-subtree-mainline: d684e7408a
git-subtree-split: 48a082cb6b
2026-05-30 12:58:57 -04:00
250e6f0502 Split 'xo-alloc/' into commit 'a2b678410d'
git-subtree-dir: xo-alloc
git-subtree-mainline: 5a5f43b56e
git-subtree-split: a2b678410d
2026-05-30 12:44:07 -04:00
7f4ffef585 Split 'xo-alloc/' into commit 'a2b678410d'
git-subtree-dir: xo-alloc
git-subtree-mainline: 5a5f43b56e
git-subtree-split: a2b678410d
2026-05-30 12:44:07 -04:00
6fcee73ae1 Split 'xo-numeric/' into commit '7750c868b6'
git-subtree-dir: xo-numeric
git-subtree-mainline: 365f5a055f
git-subtree-split: 7750c868b6
2026-05-30 12:11:31 -04:00
a56ea8894e Split 'xo-numeric/' into commit '7750c868b6'
git-subtree-dir: xo-numeric
git-subtree-mainline: 365f5a055f
git-subtree-split: 7750c868b6
2026-05-30 12:11:31 -04:00
a6f8c3d3e3 Split 'xo-numeric/' into commit '5f2de0ad5a'
git-subtree-dir: xo-numeric
git-subtree-mainline: 8888986784
git-subtree-split: 5f2de0ad5a
2026-05-30 12:07:21 -04:00
0018f23a7e Split 'xo-numeric/' into commit '5f2de0ad5a'
git-subtree-dir: xo-numeric
git-subtree-mainline: 8888986784
git-subtree-split: 5f2de0ad5a
2026-05-30 12:07:21 -04:00
adba8536d9 xo-gc stack: fix mutation setup + xo-reader2 utest 2026-05-07 23:44:32 -04:00
6068da02af tidy: drop stale ACollector comments 2026-05-02 13:58:22 -04:00
2713050d84 xo-gc stack: refactor + streamline.
Retiring unused Collector typealiases.
Fix #include topology.
Fix/improve write barrier setup.
2026-05-02 13:49:29 -04:00
866b6a55e2 xo-object2: streamline write barriers for DList,DArray muts 2026-05-01 20:38:38 -04:00
3d24a523f3 refactor focusing on xo-alloc2/ xo-gc/ write-barrier
ability to inform allocator of gco->gco mutation, via AAllocator i/face.
2026-05-01 19:54:26 -04:00
df32ec55c8 xo-object2: obj<ACollector> argument to DArray::push_back() 2026-04-28 23:17:00 -04:00
32fea42633 xo-gc: bugfixes for GCObjectStore, unit test exapnded
In particular: drop casual assignment to DList.rest_,
will break acyclic assumption of DList.size()
2026-04-11 16:51:52 -04:00
d14f119a37 xo-interpreter2 stack: + reason arg to visit_gco_children()
Helps streamline DX1Collector in xo-gc/.
Want both forward and verify entry points for the same
representation.
2026-04-10 01:10:03 -04:00
31df51ac8e refactor: use GCObjectVisitor api w/ gco_shallow_move 2026-04-06 15:21:48 -04:00
0bc037f1ea refactor: make shallow_move() available from AGCObjectVisitor 2026-04-06 00:11:08 -04:00
d740c94406 refactor: + narrower interface for gc pointer forwarding
add AGCObjectVisitor, instead of requiring ACollector.
2026-04-05 23:53:02 -04:00
bf8c3628ff refactor: retire GCObject.shallow_copy()
Collector gets this info from gc-owned object header
2026-04-04 18:01:25 -04:00
1f91e2afdc refactor: retire GCObject.shallow_size()
Not needed.  Rely on size stored in gc-owned object header
2026-04-04 17:30:03 -04:00
6251b2bde7 refactor: void return type for Collector.forward_children() 2026-04-04 16:54:46 -04:00
63bdd59fc3 refactor: rename RCollector.std_copy_for -> std_move_for 2026-04-04 16:37:17 -04:00
0898733029 refactor: rename shallow_copy -> shallow_move + streamline
Use RCollector.std_copy_for where appropriate
2026-04-04 16:33:35 -04:00
73b2561aa8 refactor: rename GCObject.shallow_copy -> shallow_move
resolve conflict since relying on move constructor in std_copy_for
2026-04-04 15:00:53 -04:00
7e575e6214 refactor: make AGCObject.shallow_copy() non-const
prep for moving to ACollector interface
2026-04-04 14:38:14 -04:00
77efd433ad xo-gc stack: + request-gc-statistics() primitive
1. xo-gc now depends on xo-object2.
2. use genfacet for ICollector_DX1Collector
3. moves xo-gc utest previously in xo-object2 to more natural
   location in xo-gc/
2026-03-29 13:44:19 -04:00
1d7339f694 xo-reader2: utest: parser utests verify full GC behavior also 2026-03-28 13:59:14 -04:00
c982a2241e xo-reader2: retire some ParserStateMachine logging 2026-03-28 13:58:46 -04:00
ce800d700c xo-reader2: expand utest to run gc [WIP] 2026-03-28 09:43:43 -04:00
c715f0d8be xo-reader2: utest: drop DX1Collector debug 2026-03-27 22:40:44 -04:00
af96e82c21 xo-gc: generation -> Generation + bugfix idle test 2026-03-26 11:30:16 -04:00
3806b46ea1 xo-interpreter2 stack: VSM as AGCObject for virtual root 2026-03-25 19:31:59 -04:00
d76622640e Merge branch 'claude1' of github.com:rconybea/xo-umbrella2 into claude1 2026-03-25 18:01:06 -04:00
f8839278c3 xo-interpreter2 stack: scaffold for virtual root VSM [WIP] 2026-03-25 18:00:36 -04:00
7be5869c93 xo-reader2 stack: constants for operator primitive names 2026-03-25 17:52:39 -04:00
f0d4e58010 xo-reader2 stack: refactor for ssm file location 2026-03-25 17:11:46 -04:00
aca798467a xo-reader2: move DDefineSsm generated support to spec'd subdirs 2026-03-24 23:41:05 -04:00
8331fa8a6b xo-tokenizer2: + op!= utest 2026-03-24 23:32:09 -04:00
0972cdada3 xo-reader2: + gcobject facet includes for DSchematikaParser 2026-03-24 22:18:37 -04:00
4304892a7c xo-reader2: adopt DSchematikaParser as gc-aware object
Use as virtual GC root.
2026-03-24 22:15:08 -04:00
48d5c323b4 xo-reader2 stack: + ARuntimeContext.collector()
access Collector API (if present) from runtime context
2026-03-24 21:59:59 -04:00
3af72fec64 xo-reader2: + SyntaxStateMachine.forward_children method
Support gc traversal with goal of making ParserStateMachine a gc root
2026-03-24 17:43:45 -04:00
ed3e26e718 nix: use clang-tools (for emacs+lsp) 2026-03-24 17:35:26 -04:00
25fd378c78 xo-reader2: #q supports literal dictionaries 2026-03-17 21:04:08 -04:00
90c4819ef9 delete unused typo file 2026-03-17 21:02:37 -04:00
f4514fc667 xo-reader2: refactor: move ExpectFormalArgSsm support -> subdir 2026-03-17 12:57:41 -04:00
ed3b5bfb4e xo-reader2: bugfix: ParenSsm include paths 2026-03-17 12:50:22 -04:00
a3a5311250 xo-reader2: bugfix genfacet paths + move DParenSsm 2026-03-17 12:49:35 -04:00
f4532235c0 xo-reader2: streamline setup 2026-03-16 19:21:09 -05:00
14bcd9dec6 xo-interpreter2 stack: use RuntimeContext to streamline setup 2026-03-16 14:09:03 -05:00
956a64df5c xo-interpreter2 stack: + dict type + pop more pm types 2026-03-16 09:03:24 -05:00
7b8e864668 xo-interpreter2 stack: + stringtable() in RuntimeContext api 2026-03-16 01:27:25 -05:00
e67117c815 xo-interpreter2 stack: modularize nth() primitive setup/install 2026-03-15 09:47:14 -05:00
4c9771126b xo-reader2: + op> support 2026-03-13 00:15:29 -05:00
6104515656 xo-reader2: + op>= support 2026-03-12 23:41:21 -05:00
417ad2ac78 xo-reader2 stack: support op<= 2026-03-12 21:08:58 -05:00
8fda8c8f14 xo-reader2 stack: + op<= setup 2026-03-12 21:00:16 -05:00
88bf0475ec xo-reader2: bugfix: gather inputs before pop 2026-03-12 20:40:35 -05:00
6acad26111 xo-reader2: drop debug 2026-03-12 20:40:04 -05:00
e6cf751083 xo-reader2: globalenv setup 2026-03-12 20:39:05 -05:00
ccc9968686 xo-reader2: drop some debug 2026-03-12 20:38:36 -05:00
b2073f832b xo-reader2: + parser utest, different precedence order 2026-03-12 20:38:09 -05:00
3dc6268dfe xo-interpreter2 stack: refactor + bugfix operator expr 2026-03-12 20:26:08 -05:00
cc42c98928 xo-interpreter2: + nil + cons 2026-03-11 16:19:40 -05:00
31c32cbca7 xo-interpreter2 stack: + nth() primitive 2026-03-11 15:40:38 -05:00
46637ec16a xo-reader2: parse list types + utest 2026-03-11 14:13:48 -05:00
6a0333765a xo-reader2: refactor: move apply genfacet to subdirs 2026-03-11 10:42:42 -05:00
af978694ac xo-reader2: refactor: move deftype impl to deftype/ subdir 2026-03-11 10:32:31 -05:00
309af002d2 xo-reader2: refactor: move Lambda genfacet files to subdirs 2026-03-11 10:27:04 -05:00
afe34f1d8a xo-reader2: refactor: generated file locn for IfElseSsm 2026-03-11 10:21:17 -05:00
8bb36ae3e0 xo-reader2: tidy CMakeLists.txt 2026-03-11 10:06:59 -05:00
aaf3f25347 build: retire FACET argument to genfacetimpl 2026-03-11 10:03:46 -05:00
a7dcf260d1 build: retiring REPR argument to xo_add_genfacetimpl() 2026-03-11 08:41:57 -05:00
76af3ff3b5 xo-reader2 stack: expand symbol table to store typedefs
+ typedef utest
+ misc qol policy choices
2026-03-11 07:49:14 -05:00
07b7a7c978 xo-reader2: scaffold for using obj<AType> for types [WIP] 2026-03-07 11:43:47 +11:00
a0fdfa2d90 xo-interpreter2 stack: refactor: string clases -> xo-stringtable2/ 2026-03-05 13:02:12 +11:00
b96cf33a21 refactor: + xo-stringtable2 w/ DString impl 2026-03-05 00:50:58 +11:00
b544a39993 xo-gc xo-alloc2: move Collector faceet gc/ -> alloc2/ for levelling 2026-03-04 22:26:31 +11:00
680416d077 xo-interpreter2 stack: + literal array parsing 2026-03-03 12:12:09 +11:00
f2a9aa3f52 xo-interpreter2 stack: parse literal lists (w/ implicit types) 2026-03-02 23:21:10 +11:00
906bb2a913 xo-interpreter2 stack: handle operator expressions w/ qliterals 2026-03-02 11:05:12 +11:00
3f8be97290 xo-reader2: scasffold for on_quoted_literal() 2026-03-01 13:35:52 +11:00
7b70296eb1 xo-reader2 stack: + #q token + QuoteSsm [WIP - not functional] 2026-03-01 13:06:57 +11:00
34e863d4ea xo-interpreter2: report_memory_use() unit test 2026-02-28 13:36:27 +11:00
df2c13f395 xo-reader2: + intern_string() forwarding methods in parser/reader 2026-02-28 13:24:06 +11:00
6795c1bc15 xo-reader2: support 0-argument apply-expressions 2026-02-28 13:21:54 +11:00
c221a31efe xo-numeric: + less than dispatch (also in schematika parser) 2026-02-27 22:55:14 +11:00
df87f1b313 Merge branch 'main' into claude1 2026-02-27 22:07:46 +11:00
04076ea983 osx build: #include <exception> in _Any.cpp 2026-02-27 19:41:03 +11:00
f83af2fd3e xo-cmake: setup to make share target available via cmake install 2026-02-27 19:38:53 +11:00
d6456ce921 xo-reader2: bugfix: need pattern match to fix operator precedence 2026-02-23 07:04:54 +11:00
4fc5f7d8ba xo-interpreter2 stack: support op!= + trial numeric refactor 2026-02-19 11:56:06 -08:00
8743aa44ef xo-interpreter2 stack: streamline op== impl + utests 2026-02-19 09:03:02 -08:00
6575ab1c11 xo-reader2 stack: use NumericDispatch for *,/,+,- ops 2026-02-18 22:40:37 -08:00
dd0857160b xo-interpreter2 stack: use xo-numeric/ to support op* 2026-02-18 22:00:30 -08:00
911818e957 xo-reader2 stack: + xo-numeric + setup multi dispatch for *,/ 2026-02-18 21:47:02 -08:00
9cb3c4b5b6 xo-reader2: recursive top-level function definition works 2026-02-17 18:32:41 -05:00
27c5f66e74 xo-reader2: allow formals w/out explicit type 2026-02-17 16:48:20 -05:00
121fb2dfad xo-interpreter2 stack: define-expr's work at top-level 2026-02-17 14:42:17 -05:00
10db8493f7 xo-reader2: utest with variable reference. Works ! 2026-02-16 23:25:34 -05:00
5c53ae08a8 xo-reader2: streamline facet codegen 2026-02-16 22:48:27 -05:00
221fd85f61 xo-facet: move output-hpp-dir + subdir to idl/*.json5 2026-02-16 22:33:32 -05:00
e72ab34419 xo-expression2: upsert global vars works in DDefineSsm 2026-02-16 19:48:14 -05:00
595dc47dee xo-reader2: bugfix: detecting toplevel for upsert global var 2026-02-16 19:07:37 -05:00
f761a38723 xo-interpreter2 stack: OUTPUT_CPP_DIR cmake->idl/ 2026-02-16 17:46:51 -05:00
9a97bb2680 xo-reader2: refactor: make() + _make() pair for each ssm 2026-02-16 16:50:57 -05:00
da58e18779 xo-reader2: rename DExprSeqState -> DToplevelSeqSsm 2026-02-16 11:15:30 -05:00
5224799479 xo-reader2: bugfix: move toplevel ExprSeqState to parser stack 2026-02-16 11:08:21 -05:00
8a4f1db08d xo-reader2: enable alloc headers for parser stack 2026-02-16 11:03:36 -05:00
66d9bc5cd6 xo-reader2: bugfix: checkpoint before allocating SSMs 2026-02-16 11:03:09 -05:00
ce655ed6bd xo-reader2: code layout - include file spelling 2026-02-16 09:49:11 -05:00
1cab365770 xo-reader2: + convenience headers 2026-02-16 09:45:36 -05:00
3773946705 xo-reader2: use alloc headers in utest for visibility 2026-02-16 09:34:40 -05:00
4724a781a4 xo-reader2: use alloc headers in utest for visibility 2026-02-16 09:34:06 -05:00
6b7533559a xo-reader2: register SchematikaParser type 2026-02-16 09:33:51 -05:00
797970cdea xo-expression2: register DGlobalSymtab type + rename 2026-02-16 09:32:53 -05:00
65bd5502ff xo-expression2 stack: expand MemorySizeInfo w/ per-type detail 2026-02-16 00:48:00 -05:00
ba7ec387cc xo-reader2 stack: + TypeRegistry 2026-02-15 22:57:15 -05:00
9ce05973f4 xo-reader2 stack: streamline + mem sizing + bugfixes 2026-02-15 16:16:02 -05:00
c0e61744bb xo-interpreter2 stack: mark non-trivial dtors b/c DGlobalSymtab 2026-02-15 14:26:33 -05:00
78f1b8a0b6 xo-interpreter2 stack: plumbing for aux_mm and use opportunistically 2026-02-15 14:13:38 -05:00
fc17a6f856 xo-reader2: drop temporary debug flag 2026-02-15 14:10:47 -05:00
57981d93ef xo-reader2: utest: annotate syntax 2026-02-13 18:13:10 -05:00
91804f1e57 xo-reader2: utest: refactor w/ syntax annotation etc. 2026-02-13 18:11:08 -05:00
955eb6d0c1 xo-reader2: utest: refactor w/ syntax annotation for apply2 utest 2026-02-13 18:06:38 -05:00
5f45f368c0 xo-reader-2: refactor interactive-apply utest 2026-02-13 18:02:55 -05:00
0d74c4f4ab xo-reader2: refactor interactive-if utest to streamline 2026-02-13 17:58:25 -05:00
85883c74e8 xo-reader2: utest: label test in console output 2026-02-13 17:52:06 -05:00
5ac64cbfdb xo-reader2: number token sequence in parser utest 2026-02-13 17:49:57 -05:00
dcb4a8d240 xo-reader2: streamline another utest 2026-02-13 17:43:00 -05:00
9b8e5baf53 xo-reader2: streamline a utest 2026-02-13 17:36:29 -05:00
a759d3c92e xo-reader2: streamline utest 2026-02-13 17:29:49 -05:00
6a52c00b2e xo-reader2 stack: handle comparison expression (x == y) 2026-02-13 17:24:23 -05:00
3afe93b6c4 xo-reader2 utest: less boilerplate! 2026-02-12 15:21:35 -05:00
3a516e2866 xo-reader2: handle multiple args in apply + streamlined utest 2026-02-12 00:43:46 -05:00
9c677b28cc xo-reader2: utest for top-level apply passes 2026-02-12 00:06:50 -05:00
a15abd8b43 xo-reader2: apply expr now parses up to rightparen 2026-02-12 00:02:56 -05:00
e0ab3c5927 xo-reader2: more work on apply expressions [WIP] 2026-02-11 20:25:24 -05:00
65d1fd840b xo-reader2: progress+apply works up to lparen introducing formals 2026-02-11 18:07:55 -05:00
40e1fb531d xo-reader2: DApplySsm for apply expressions [WIP] 2026-02-11 16:02:41 -05:00
4744139d74 xo-reader2 stack: progress towards recognizing function calls [WIP] 2026-02-10 23:28:20 -05:00
d65eb54102 xo-reader2 stack: parenthesized expressions [WIP] 2026-02-10 15:14:40 -05:00
ca1370570b xo-reader2 stack: top-level lambda w/ apply parses 2026-02-05 15:45:40 -05:00
4cd4328f07 xo-interpreter2 stack: work on variable references [WIP] 2026-02-05 10:44:11 -05:00
2aa6dfd942 xo-reader2 xo-expression2: streamline pretty w/ presence flag 2026-02-04 10:32:16 -05:00
0e043f56a4 xo-reader2 stack: streamlining + arith parser test 2026-02-03 14:27:42 -05:00
bdccad4087 xo-reader2 stack: convenience #includes + parsing examples 2026-02-03 13:43:00 -05:00
574185ccdf xo-reader2 stack: misc qol improvements + improve reader2 utest 2026-02-03 13:23:38 -05:00
6621d3900e xo-interpreter2 stack: bugfix: top-level i64 token -> DInteger 2026-02-03 12:58:55 -05:00
3f19001c94 xo-reader2 stack: curate memory pool naming 2026-02-03 10:32:43 -05:00
d243124ea8 xo-interpreter2 .. xo-arena. memory pool introspection 2026-02-03 01:05:36 -05:00
eec85cc217 xo-interpreter2: scaffold repl + alloc measurement frameowkr 2026-02-02 21:55:34 -05:00
eb929bb693 xo-interpreter2: refactor to setup vsm utest + repl 2026-02-02 10:53:28 -05:00
6b2ebe02ac xo-interpreter2: work towards utest w/ vsm+reader [WIP] 2026-02-01 22:12:28 -05:00
029fc4ae00 xo-reader2 xo-gc: streamline example + DX1Collector.ref() method 2026-02-01 17:26:24 -05:00
939885a7d2 xo-reader2: construct LambdaExpr to complete LambdaSsm + utest 2026-02-01 00:16:37 -05:00
726f821c4e xo-reader2: DLambdaSsm work towards producing DLambdaExpr [WIP] 2026-01-31 21:33:39 -05:00
15f779d2f8 xo-reader2 xo-expression2: + DSequenceSsm ++ utest 2026-01-31 18:28:25 -05:00
334057613e xo-reader2: revert c++23 feature, to keep osx clang build 2026-01-31 01:14:33 -05:00
bcd95502d2 xo-expression2 xo-reader2 DSequenceExpr, DSequenceSsm [WIP] 2026-01-30 20:08:41 -05:00
e7bdcbc125 xo-reader2: simplify DProgressSsm w/ DSyntaxStateMachine 2026-01-30 15:17:28 -05:00
64bc59660b xo-reader2: simplify DExprSeqState w/ DSyntaxStateMachine 2026-01-30 15:01:31 -05:00
ed9733937e xo-reader2: simplify DExpectTypeSsm w/ DSyntaxStateMachine 2026-01-30 14:53:49 -05:00
2fc57b1478 xo-reader2: simplify DSyntaxStateMachine w/ DExpectFormalArglistSsm 2026-01-30 14:33:44 -05:00
4614843864 xo-reader2: simplify DExpectFormalArgSsm using DSyntaxStateMachine 2026-01-30 14:27:32 -05:00
5b21490c68 xo-reader2: simplify DExpectExprSsm w/ DSyntaxStateMachine 2026-01-30 14:21:27 -05:00
a3cb9b6d8d xo-reader2: simplify DDefineSsm w/ DSyntaxStateMachine 2026-01-30 14:11:46 -05:00
9f173949ff xo-reader2: streamline DIfElseSsm w/ DSyntaxStateMachine 2026-01-30 13:49:57 -05:00
ff62b4e568 xo-reader2: streamline DExpectSymbolSsm w/ DSyntaxStateMachine 2026-01-30 13:38:43 -05:00
f6b92e1885 xo-reader2: refactor: crtp to share code across SSM impls 2026-01-30 13:23:44 -05:00
fcf171dfb6 xo-reader2: + assemble lambda function type in DLambdaSsm 2026-01-30 12:41:09 -05:00
f5ccd99dd2 xo-expression2 xo-reader2: local symtab stack in PSM 2026-01-30 10:26:35 -05:00
985e572b21 xo-object2: missed generated (Printable,Array) code + .json5 2026-01-29 15:19:35 -05:00
554c01ffad xo-reader2: + PSM,SSM on_parsed_formal_arglist() 2026-01-29 15:17:57 -05:00
2f9d49b083 xo-reader2: DExpectFormalArglistSsm parses multiple formals 2026-01-29 13:48:24 -05:00
eaf224bba0 xo-reader2: DExpectFormalArglistSsm handles+stores parsed formals 2026-01-29 13:28:30 -05:00
35a49810e4 xo-reader2: use DUniqueString* to report parsed formal 2026-01-29 12:24:46 -05:00
753b074994 xo-reader2: ssm pretty-printers include .expect_str() output 2026-01-29 10:49:55 -05:00
3e27b8be1e xo-reader2: in DExpectFormalArgSsm handle colon token 2026-01-29 10:35:13 -05:00
6a9d793c74 xo-reader2: lambda ssm progress. incremental [WIP] 2026-01-29 10:16:52 -05:00
724a7f1496 xo-reader2: + DExpectFormalArglistSsm starts DExpectFormalArgSsm 2026-01-28 18:31:10 -05:00
e7d4c4ae28 xo-reader2: + DFormalArgSsm printable facet 2026-01-28 18:04:08 -05:00
66158551c7 xo-reader2: + DExpectFormalArgSsm [WIP] 2026-01-28 17:40:57 -05:00
254d7c179d xo-reader2: + DExpectFormalArglistSsm [WIP] 2026-01-28 15:31:52 -05:00
fdf2cc8439 xo-reader2 xo-expression2: + DLambdaSsm [WIP] 2026-01-28 10:57:55 -05:00
5357407151 xo-reader2: support if-then-else expressions. + detailed utest 2026-01-27 15:50:10 -05:00
3d7c3f8861 xo-expression2: + DIfElseExpr + utest 2026-01-27 10:09:26 -05:00
bbeaadc9e4 xo-reader2: + DProgressSsm.on_parser_expression_with_semicolon 2026-01-26 22:40:56 -05:00
a346dcc579 xo-reader2: formatting + asserts 2026-01-26 21:36:10 -05:00
774a6ebe22 xo-expression2: + DApplyExpr::make 2026-01-26 15:45:40 -05:00
ce732b3d3a xo-reader2: + missing subsystem deps 2026-01-26 15:45:22 -05:00
6b2ad521f3 xo-expression2: + DConstant utest 2026-01-26 15:33:58 -05:00
c69ce58e15 xo-expression2 xo-procedure2: work on calling primitive for x*y 2026-01-26 13:42:42 -05:00
e283ee0126 xo-procedure2 xo-object2: + polymorphic primitive support 2026-01-26 12:38:17 -05:00
4b4c69cfed xo-reader2: bugfix: prior refactor requires switch remodel on_token 2026-01-25 10:47:28 -05:00
a8df123045 xo-reader2: refactor: push token dispatch to satellite SSMs 2026-01-23 19:01:12 -05:00
4d0c97ab7a xo-reader2: top-level string literal + on_string_token() in SSM 2026-01-23 17:23:19 -05:00
fa6f6defc1 xo-reader2: accept i64 token in top-level interactive session 2026-01-23 16:48:24 -05:00
e7930122a7 xo-reader2: + on_i64_token in all Ssm classes. 2026-01-23 16:45:15 -05:00
b7a813ec07 xo-reader2: fix clearing result in SchematikaReader 2026-01-23 16:34:33 -05:00
e94ec86c03 xo-reader2: + on_bool_token scaffold in parser etc. 2026-01-23 15:25:30 -05:00
bd60b45ae9 xo-reader2: + f64 toplevel constant in interactive session 2026-01-23 15:11:36 -05:00
6894055548 xo-reader2: readerreplxx works + streamline debugging 2026-01-23 14:57:43 -05:00
8f64b05b71 xo-reader2: + example app 'readerreplxx' 2026-01-23 11:54:32 -05:00
8c038ed669 xo-reader2: working on example parser repl 2026-01-22 21:03:40 -05:00
f6224eefea xo-reader2 xo-expression2: define example working and printing
def foo : f64 = 3.141593;
2026-01-22 18:40:42 -05:00
15e1e50659 xo-reader2: accept parsed expression at top level.. 2026-01-22 17:41:40 -05:00
c33cfd7ae7 xo-reader2: + on_parsed_expression_with_semicolon + DefineSsm works 2026-01-22 17:15:05 -05:00
cfff71c4a9 xo-reader2: + SyntaxStateMachine.on_parsed_expression() 2026-01-22 15:49:07 -05:00
07d53f73fe xo-reader2: cosmetic: non-executable content 2026-01-22 15:37:20 -05:00
5239290388 xo-reader2: + on_semicolon_token() method in SyntaxStateMachine 2026-01-22 15:32:12 -05:00
d30412779c xo-reader2: + on_f64_token() + handle in DDefineSsm+DProgressSsm 2026-01-22 15:18:35 -05:00
55149f0890 xo-reader2: + DExpectExprSsm + use from DDefineSsm 2026-01-22 10:54:36 -05:00
124d848a57 xo-reader2: skeleton DExpectExprSsm.* 2026-01-21 18:39:53 -05:00
c60aeda12a xo-reader2: DefineSsm: respond to = token 2026-01-21 17:35:01 -05:00
a3f5b12955 xo-reader2: scaffold on_singleassign_token() in PSM 2026-01-21 12:59:06 -05:00
7d33440ecb xo-reader2: handle parsed typedescr + use in DDefineSsm 2026-01-21 12:14:35 -05:00
7b62bd7f5c xo-reader2: + DExpectTypeSsm + extend DDefineSsm [WIP] 2026-01-21 01:24:17 -05:00
c87975ab18 xo-reader2: + DExpectTypeSsm [WIP] [NOBUILD] 2026-01-20 22:39:01 -05:00
0d8d928def xo-reader2: DefineSsm handles colon token after lhs var
example:  def foo : f64 = 3.14;
2026-01-20 22:22:45 -05:00
021625d562 xo-reader2: regen ssm facet files + on_colon_token 2026-01-20 22:15:32 -05:00
4c84f8c198 xo-reader2 xo-object2: regenerate facets from idl 2026-01-20 22:13:01 -05:00
eca64875fd xo-reader2 xo-expression2: pprint for DDefineExpr + DVariable 2026-01-20 15:06:58 -05:00
3bdbb61eba xo-reader2: + pretty-printing for ParserResult + use in utest 2026-01-20 12:40:26 -05:00
0a7e8468ae xo-reader2: + IPrintable+DDefineSsm 2026-01-20 01:19:47 -05:00
4e490e6973 xo-reader2: register printable facets 2026-01-20 01:09:56 -05:00
1bca806bf3 xo-reader2: + IPrintable+DExpectSymbolSsm 2026-01-20 01:07:21 -05:00
a836c72a72 xo-reader2: + IPrintable+DExprSeqState 2026-01-20 00:57:34 -05:00
6e7524a730 xo-reader2: intern for DDefineExpr lhs symbol 2026-01-20 00:08:51 -05:00
9ab828059b xo-reader2: + StringTable in ParserStringTable 2026-01-19 23:38:14 -05:00
535f48e202 xo-reader2: bugfix in DDefineExpr 2026-01-19 23:18:30 -05:00
19b6caa89d xo-reader2 xo-expresion2: work on define-expressions [WIP] 2026-01-19 21:25:30 -05:00
844b1519ef xo-reader2: register DDefineSsm + DExpectSymbolSsm facets 2026-01-19 11:33:27 -05:00
284ed02de6 xo-reader2: + ExpectSymbolSsm + SyntaxStateMachine.on_parsed_symbol 2026-01-19 11:32:39 -05:00
b5d2f3efab xo-reader: + DDefineSsm + utest 2026-01-19 00:39:16 -05:00
301a7c7623 xo-reader2: + DDefineSsm + utest 2026-01-19 00:38:43 -05:00
e38b61ce76 xo-reader2: ParserStateMachine w/ separate allocator 2026-01-18 20:37:15 -05:00
a8eb35bd1a xo-reader2: corrections to toplevel SchematikaParser setup 2026-01-18 20:23:00 -05:00
0aa1692f8c xo-result2: + SchematikaParser 2026-01-18 19:25:43 -05:00
a96196b365 xo-reader2: + init_reader2 + reader2_register_types 2026-01-18 19:09:48 -05:00
3198e30234 xo-reader2: + regression2_register_facets() 2026-01-18 18:57:33 -05:00
7ee57309b5 xo-reader2 scaffold (fomo+arena version of xo-reader/) [WIP] 2026-01-18 17:59:46 -05:00
185519a22e + xo-tokenizer2 xo-reader2 xo-expression2 xo-interpreter2
2nd gen schematika interpreter using fomo
2026-01-10 12:39:09 -05:00
17 changed files with 51 additions and 432 deletions

1
ci.nix
View file

@ -35,6 +35,7 @@ in
xo-numeric xo-numeric
xo-tokenizer2 xo-tokenizer2
xo-expression2 xo-expression2
xo-reader2
xo-allocutil xo-allocutil
xo-alloc xo-alloc
xo-ratio xo-ratio

43
pkgs/xo-reader2.nix Normal file
View file

@ -0,0 +1,43 @@
{
# nixpkgs dependencies
lib, stdenv, cmake, catch2,
# xo dependencies
xo-numeric,
xo-procedure2,
xo-type,
xo-expression2,
xo-tokenizer2,
xo-gc,
xo-subsys,
xo-cmake,
# config arguments
doCheck ? true
} :
stdenv.mkDerivation (finalattrs :
{
name = "xo-expression2";
src = ../xo-expression2;
cmakeFlags = ["-DCMAKE_MODULE_PATH=${xo-cmake}/share/cmake"]
++ lib.optionals doCheck ["-DENABLE_TESTING=1"];
inherit doCheck;
nativeBuildInputs = [
cmake catch2
xo-cmake
];
propagatedBuildInputs = [
xo-numeric
xo-procedure2
xo-type
xo-expression2
xo-tokenizer2
xo-gc
xo-subsys
];
})

View file

@ -341,6 +341,7 @@ in
numeric = pkgs.xo-numeric; numeric = pkgs.xo-numeric;
tokenizer2 = pkgs.xo-tokenizer2; tokenizer2 = pkgs.xo-tokenizer2;
expression2 = pkgs.xo-expression2; expression2 = pkgs.xo-expression2;
reader2 = pkgs.xo-reader2;
allocutil = pkgs.xo-allocutil; allocutil = pkgs.xo-allocutil;
alloc = pkgs.xo-alloc; alloc = pkgs.xo-alloc;

View file

@ -52,3 +52,8 @@ xo-process
xo-pyprocess xo-pyprocess
xo-kalmanfilter xo-kalmanfilter
xo-pykalmanfilter xo-pykalmanfilter
xo-imgui
xo-interpreter
xo-interpreter2
xo-reader2
xo-symboltable

View file

@ -1,196 +0,0 @@
name: build xo-pyprintjson + dependencies
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release
jobs:
build:
# The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
# You can convert this to a matrix build if you need cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
runs-on: ubuntu-latest
steps:
- name: checkout source
uses: actions/checkout@v3
- name: Install catch2
# install catch2. see [[https://stackoverflow.com/questions/57982945/how-to-apt-get-install-in-a-github-actions-workflow]]
run: sudo apt-get install -y catch2
- name: Install pybind11-dev
run: sudo apt-get install -y pybind11-dev
# ----------------------------------------------------------------
- name: Clone xo-cmake
uses: actions/checkout@v3
with:
repository: Rconybea/xo-cmake
path: repo/xo-cmake
- name: Configure xo-cmake
run: cmake -B ${{github.workspace}}/build_xo-cmake -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/local repo/xo-cmake
- name: Build xo-cmake (trivial)
run: cmake --build ${{github.workspace}}/build_xo-cmake --config ${{env.BUILD_TYPE}}
- name: Install xo-cmake
run: cmake --install ${{github.workspace}}/build_xo-cmake
# ----------------------------------------------------------------
- name: Clone indentlog
uses: actions/checkout@v3
with:
repository: Rconybea/indentlog
path: repo/indentlog
- name: Configure indentlog
# configure cmake for indentlog in dedicated build directory.
run: cmake -B ${{github.workspace}}/build_indentlog -DCMAKE_MODULE_PATH=${{github.workspace}}/local/share/cmake -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/local repo/indentlog
- name: Build indentlog
run: cmake --build ${{github.workspace}}/build_indentlog --config ${{env.BUILD_TYPE}}
- name: Install indentlog
# install into ${{github.workspace}}/local
run: cmake --install ${{github.workspace}}/build_indentlog
# ----------------------------------------------------------------
- name: Clone subsys
uses: actions/checkout@v3
with:
repository: Rconybea/subsys
path: repo/subsys
- name: Configure subsys
# configure cmake for subsys in dedicated build directory.
run: cmake -B ${{github.workspace}}/build_subsys -DCMAKE_MODULE_PATH=${{github.workspace}}/local/share/cmake -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/local repo/subsys
- name: Build subsys
run: cmake --build ${{github.workspace}}/build_subsys --config ${{env.BUILD_TYPE}}
- name: Install subsys
# install into ${{github.workspace}}/local
run: cmake --install ${{github.workspace}}/build_subsys
# ----------------------------------------------------------------
- name: Clone refcnt
uses: actions/checkout@v3
with:
repository: Rconybea/refcnt
path: repo/refcnt
- name: Configure refcnt
# configure cmake for refcnt in dedicated build directory.
run: cmake -B ${{github.workspace}}/build_refcnt -DCMAKE_MODULE_PATH=${{github.workspace}}/local/share/cmake -DCMAKE_PREFIX_PATH=${{github.workspace}}/local -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/local repo/refcnt
- name: Build refcnt
run: cmake --build ${{github.workspace}}/build_refcnt --config ${{env.BUILD_TYPE}}
- name: Install refcnt
# install into ${{github.workspace}}/local
run: cmake --install ${{github.workspace}}/build_refcnt
# ----------------------------------------------------------------
- name: Clone reflect
uses: actions/checkout@v3
with:
repository: Rconybea/reflect
path: repo/reflect
- name: Configure reflect
# configure cmake for reflect in dedicated build directory.
run: cmake -B ${{github.workspace}}/build_reflect -DCMAKE_MODULE_PATH=${{github.workspace}}/local/share/cmake -DCMAKE_PREFIX_PATH=${{github.workspace}}/local -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/local repo/reflect
- name: Build reflect
run: cmake --build ${{github.workspace}}/build_reflect --config ${{env.BUILD_TYPE}}
- name: Install reflect
# install into ${{github.workspace}}/local
run: cmake --install ${{github.workspace}}/build_reflect
# ----------------------------------------------------------------
- name: Clone printjson
uses: actions/checkout@v3
with:
repository: Rconybea/xo-printjson
path: repo/printjson
- name: Configure printjson
# configure cmake for printjson in dedicated build directory.
run: cmake -B ${{github.workspace}}/build_printjson -DCMAKE_MODULE_PATH=${{github.workspace}}/local/share/cmake -DCMAKE_PREFIX_PATH=${{github.workspace}}/local -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/local repo/printjson
- name: Build printjson
run: cmake --build ${{github.workspace}}/build_printjson --config ${{env.BUILD_TYPE}}
- name: Install printjson
# install into ${{github.workspace}}/local
run: cmake --install ${{github.workspace}}/build_printjson
# ----------------------------------------------------------------
- name: Clone pyutil
uses: actions/checkout@v3
with:
repository: Rconybea/xo-pyutil
path: repo/pyutil
- name: Configure pyutil
# configure cmake for pyutil in dedicated build directory.
run: cmake -B ${{github.workspace}}/build_pyutil -DCMAKE_MODULE_PATH=${{github.workspace}}/local/share/cmake -DCMAKE_PREFIX_PATH=${{github.workspace}}/local -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/local repo/pyutil
- name: Build pyutil
run: cmake --build ${{github.workspace}}/build_pyutil --config ${{env.BUILD_TYPE}}
- name: Install pyutil
# install into ${{github.workspace}}/local
run: cmake --install ${{github.workspace}}/build_pyutil
# ----------------------------------------------------------------
- name: Clone pyreflect
uses: actions/checkout@v3
with:
repository: Rconybea/xo-pyreflect
path: repo/pyreflect
- name: Configure pyreflect
# configure cmake for pyreflect in dedicated build directory.
run: cmake -B ${{github.workspace}}/build_pyreflect -DCMAKE_MODULE_PATH=${{github.workspace}}/local/share/cmake -DCMAKE_PREFIX_PATH=${{github.workspace}}/local -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/local repo/pyreflect
- name: Build pyreflect
run: cmake --build ${{github.workspace}}/build_pyreflect --config ${{env.BUILD_TYPE}}
- name: Install pyreflect
# install into ${{github.workspace}}/local
run: cmake --install ${{github.workspace}}/build_pyreflect
# ----------------------------------------------------------------
- name: Configure self (pyprintjson)
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: cmake -B ${{github.workspace}}/build_pyprintjson -DCMAKE_MODULE_PATH=${{github.workspace}}/local/share/cmake -DCMAKE_PREFIX_PATH=${{github.workspace}}/local -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/local -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
- name: Build self (pyprintjson)
# Build your program with the given configuration
run: cmake --build ${{github.workspace}}/build_pyprintjson --config ${{env.BUILD_TYPE}}
- name: Test self (pyprintjson)
working-directory: ${{github.workspace}}/build_pyprintjson
# Execute tests defined by the CMake configuration.
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest -C ${{env.BUILD_TYPE}}

View file

@ -1,6 +0,0 @@
# clangd working space (see emacs+lsp)
.cache
# typical cmake build directory (source-tree-nephew)
.build*
# symlink to builddir/compile_commands.json; should be set manually in dev sandbox
compile_commands.json

View file

@ -1,29 +0,0 @@
# xo-pyprintjson/CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(xo_pyprintjson VERSION 1.0)
include(GNUInstallDirs)
include(cmake/xo-bootstrap-macros.cmake)
xo_cxx_toplevel_options3()
# ----------------------------------------------------------------
# c++ settings (usually temporary)
set(PROJECT_CXX_FLAGS "")
add_definitions(${PROJECT_CXX_FLAGS})
# ----------------------------------------------------------------
# sources
add_subdirectory(src/pyprintjson)
#add_subdirectory(utest)
# ----------------------------------------------------------------
# provide find_package() support
xo_export_cmake_config(${PROJECT_NAME} ${PROJECT_VERSION} ${PROJECT_NAME}Targets)
# end CMakeLists.txt

View file

@ -1,71 +0,0 @@
# python bindings for c++ printjson library (xo-printjson)
## Getting Started
### build + install dependencies
- [github/Rconybea/xo-pyutil](https://github.com/Rconybea/xo-pyutil)
- [github/Rconybea/xo-printjson](https://github.com/Rconybea/xo-printjson)
### build + install
```
$ cd xo-pyprintjson
$ mkdir build
$ cd build
$ INSTALL_PREFIX=/usr/local # or wherever you prefer, e.g. ~/local
$ cmake \
-DCMAKE_MODULE_PATH=${INSTALL_PREFIX}/share/cmake \
-DCMAKE_PREFIX_PATH=${INSTALL_PREFIX} \
-DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} ..
$ make
$ make install
```
(also see .github/workflows/main.yml)
## Examples
```
PYTHONPATH=~/local2/lib:$PYTHONPATH python
>>> import xo_pyprintjson
>>> dir(xo_pyprintjson)
['PrintJson', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']
>>> dir(xo_pyprintjson.PrintJson)
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'instance', 'print']
>>>
```
## Development
### build for unit test coverage
```
$ cd xo-pyprintjson
$ mkdir build-ccov
$ cd build-ccov
$ cmake \
-DCMAKE_MODULE_PATH=${INSTALL_PREFIX}/share/cmake \
-DCMAKE_PREFIX_PATH=${INSTALL_PREFIX} \
-DCODE_COVERAGE=ON \
-DCMAKE_BUILD_TYPE=Debug ..
```
### LSP (language server) support
LSP looks for compile commands in the root of the source tree;
while Cmake creates them in the root of its build directory.
```
$ cd xo-pyprintjson
$ ln -s build/compile_commands.json # supply compile commands to LSP
```
### display cmake variables
- `-L` list variables
- `-A` include 'advanced' variables
- `-H` include help text
```
$ cd xo-pyprintjson/build
$ cmake -LAH
```

View file

@ -1,35 +0,0 @@
# ----------------------------------------------------------------
# for example:
# $ PREFIX=/usr/local # for example
# $ cmake -DCMAKE_MODULE_PATH=prefix -DCMAKE_INSTALL_PREFIX=$PREFIX -B .build
#
# will get
# CMAKE_MODULE_PATH
# from xo-cmake-config --cmake-module-path
#
# and expect .cmake macros in
# CMAKE_MODULE_PATH/xo_macros/xo_cxx.cmake
# ----------------------------------------------------------------
find_program(XO_CMAKE_CONFIG_EXECUTABLE NAMES xo-cmake-config REQUIRED)
if ("${XO_CMAKE_CONFIG_EXECUTABLE}" STREQUAL "XO_CMAKE_CONFIG_EXECUTABLE-NOT_FOUND")
message(FATAL "could not find xo-cmake-config executable")
endif()
message(STATUS "XO_CMAKE_CONFIG_EXECUTABLE=${XO_CMAKE_CONFIG_EXECUTABLE}")
if (NOT XO_SUBMODULE_BUILD)
if (("${CMAKE_MODULE_PATH}" STREQUAL "") OR ("${CMAKE_MODULE_PATH}" STREQUAL prefix))
# default to typical install location for xo-project-macros
execute_process(COMMAND ${XO_CMAKE_CONFIG_EXECUTABLE} --cmake-module-path OUTPUT_VARIABLE CMAKE_MODULE_PATH)
message(STATUS "CMAKE_MODULE_PATH=${CMAKE_MODULE_PATH}")
endif()
endif()
# needs to have been installed somewhere on CMAKE_MODULE_PATH,
# (e.g. from xo-cmake with the same value for CMAKE_INSTALL_PREFIX)
#
include(xo_macros/xo_cxx)
xo_cxx_bootstrap_message()

View file

@ -1,5 +0,0 @@
@PACKAGE_INIT@
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Share.cmake")
check_required_components("@PROJECT_NAME@")

View file

@ -1 +0,0 @@
placeholder for future pyprintjson #include files

View file

@ -1,10 +0,0 @@
# xo_pyprintjson/src/pyprintjson/CMakeLists.txt
set(SELF_LIB xo_pyprintjson)
set(SELF_SRCS pyprintjson.cpp)
# ----------------------------------------------------------------
xo_pybind11_library(${SELF_LIB} ${PROJECT_NAME}Targets ${SELF_SRCS})
xo_pybind11_dependency(${SELF_LIB} printjson)
xo_pybind11_header_dependency(${SELF_LIB} xo_pyreflect)

View file

@ -1,2 +0,0 @@
import pyprintjson
pj=pyprintjson.PrintJson()

View file

@ -1,49 +0,0 @@
/* @file pyprintjson.cpp */
// note: need pyreflect/ here bc pyreflect.hpp is generated, located in build directory
#include "pyprintjson.hpp"
#include "xo/pyreflect/pyreflect.hpp"
#include "xo/printjson/PrintJson.hpp"
#include "xo/reflect/TaggedRcptr.hpp"
//#include "reflect/SelfTagging.hpp"
//#include "refcnt/Refcounted.hpp"
//#include "refcnt/Unowned.hpp"
#include "xo/pyutil/pyutil.hpp"
//#include <pybind11/pybind11.h>
//#include <pybind11/stl.h>
//#include <pybind11/chrono.h>
//#include <pybind11/operators.h>
namespace xo {
namespace py = pybind11;
namespace json {
using xo::reflect::SelfTagging;
using xo::reflect::TaggedRcptr;
using xo::ref::unowned_ptr;
PYBIND11_MODULE(PYPRINTJSON_MODULE_NAME(), m) {
PYREFLECT_IMPORT_MODULE();
py::class_<PrintJson, rp<PrintJson>>(m, "PrintJson")
.def_static("instance", &PrintJsonSingleton::instance)
.def("print",
[](PrintJson & pj, TaggedRcptr p)
{
pj.print_tp(p, &std::cout); std::cout << "\n";
},
py::arg("value"))
.def("print",
[](PrintJson & pj, rp<SelfTagging> const & p)
{
pj.print_obj(p, &std::cout); std::cout << "\n";
},
py::arg("value"));
//m.def("print_json", [](){ return PrintJsonSingleton::instance_ptr(); });
} /*pyprintjson*/
} /*namespace json*/
} /*namespace xo*/
/* end pyprintjson.cpp */

View file

@ -1,25 +0,0 @@
/* @file pyprintjson.hpp
*
* automatically generated from src/pyprintjson/pyprintjson.hpp.in
* see src/pyprintjson/CMakeLists.txt
*/
/* python requires module name = library name
* example:
* PYBIND11_MODULE(PYPRINTJSON_MODULE_NAME(), m) { ... }
*/
#define PYPRINTJSON_MODULE_NAME() @SELF_LIB@
/* example:
* py::module_::import(PYPRINTJSON_MODULE_NAME_STR)
*/
#define PYPRINTJSON_MODULE_NAME_STR "@SELF_LIB@"
/* example:
* PYPRINTJSON_IMPORT_MODULE()
* replaces
* py::module_::import("pyprintjson")
*/
#define PYPRINTJSON_IMPORT_MODULE() py::module_::import("@SELF_LIB@")
/* end pyprintjson.hpp */

View file

@ -112,7 +112,4 @@ xo_dependency(${SELF_LIB} xo_gc)
xo_dependency(${SELF_LIB} xo_type) xo_dependency(${SELF_LIB} xo_type)
xo_dependency(${SELF_LIB} xo_tokenizer2) xo_dependency(${SELF_LIB} xo_tokenizer2)
xo_dependency(${SELF_LIB} xo_expression2) xo_dependency(${SELF_LIB} xo_expression2)
#xo_dependency(${SELF_LIB} reflect)
#xo_dependency(${SELF_LIB} xo_flatstring)
xo_dependency(${SELF_LIB} subsys) xo_dependency(${SELF_LIB} subsys)
#xo_dependency(${SELF_LIB} indentlog)

1
xo.nix
View file

@ -48,6 +48,7 @@ let
xo-numeric = callPackage pkgs/xo-numeric.nix { stdenv = jitStdenv; }; xo-numeric = callPackage pkgs/xo-numeric.nix { stdenv = jitStdenv; };
xo-tokenizer2 = callPackage pkgs/xo-tokenizer2.nix { stdenv = jitStdenv; buildExamples = true; }; xo-tokenizer2 = callPackage pkgs/xo-tokenizer2.nix { stdenv = jitStdenv; buildExamples = true; };
xo-expression2 = callPackage pkgs/xo-expression2.nix { stdenv = jitStdenv; }; xo-expression2 = callPackage pkgs/xo-expression2.nix { stdenv = jitStdenv; };
xo-reader2 = callPackage pkgs/xo-reader2.nix { stdenv = jitStdenv; };
xo-allocutil = callPackage pkgs/xo-allocutil.nix { stdenv = jitStdenv; }; xo-allocutil = callPackage pkgs/xo-allocutil.nix { stdenv = jitStdenv; };
xo-alloc = callPackage pkgs/xo-alloc.nix { stdenv = jitStdenv; buildDocs = true; }; xo-alloc = callPackage pkgs/xo-alloc.nix { stdenv = jitStdenv; buildDocs = true; };
xo-ratio = callPackage pkgs/xo-ratio.nix { stdenv = jitStdenv; buildDocs = true; buildExamples = true; }; xo-ratio = callPackage pkgs/xo-ratio.nix { stdenv = jitStdenv; buildDocs = true; buildExamples = true; };