Compare commits
3,017 commits
ff471bbc72
...
132be039de
| Author | SHA1 | Date | |
|---|---|---|---|
| 132be039de | |||
| 7cf23f246b | |||
| 48a082cb6b | |||
| 43de5f4f8f | |||
| a2b678410d | |||
| 2aa50b22bb | |||
| 7750c868b6 | |||
| 9ad4c25d58 | |||
| a30f52375b | |||
| f3205bdc4b | |||
| 7ddeaaeea5 | |||
| 5f2de0ad5a | |||
| 6ca5928088 | |||
| ca79d06be4 | |||
| aedb1a1648 | |||
| 822af3a246 | |||
| 997d3d8264 | |||
| f9f2822099 | |||
| fdc3054c7c | |||
| c3af763383 | |||
| 6b8ac3dcd2 | |||
| 489222311f | |||
| 4dc6739167 | |||
| d16f2a0484 | |||
| 2003c3c6f9 | |||
| d2aa0d0c55 | |||
| 53223b38ff | |||
| 2c14d410de | |||
| 34c87dc1e6 | |||
| 5950a45483 | |||
| c9d78372c8 | |||
| 7a9167e42d | |||
| 9e88672ad4 | |||
| d288c4ff1e | |||
| 4601e824bc | |||
| b3fbddcf3e | |||
| f7e8fd5f65 | |||
| 335c04a834 | |||
| ae167d70a3 | |||
| c38ab90cdd | |||
| f4d00d9e17 | |||
| ba19c627e5 | |||
| 884a6074d7 | |||
| dc43feece0 | |||
| 4039926d33 | |||
| 1075e16668 | |||
| 940cfb963a | |||
| 44c687dbfe | |||
| 692a9a7f1b | |||
| c500a98722 | |||
| 1b4d5744d2 | |||
| 380449a72a | |||
| 1a60284861 | |||
| 48b010924d | |||
| 2713b82159 | |||
| b69ec48d00 | |||
| 46c118fe29 | |||
| 6f76c9ee3b | |||
| 5f33b643c2 | |||
| 04faa7177e | |||
| 160443199b | |||
| b1a9e47615 | |||
| 55ae44d308 | |||
| d1cba49323 | |||
| 3476557e1e | |||
| 5a141e09ac | |||
| 9695a1ca75 | |||
| 1c90ce2f10 | |||
| 94c98c8396 | |||
| 041b9dc244 | |||
| 0083f23aae | |||
| 5791cd59ce | |||
| 208daff9bb | |||
| a62bb4cec8 | |||
| 6c3514b392 | |||
| 1d6f1c22ea | |||
| 22af1b3279 | |||
| fe9ae63892 | |||
| a1e5449d5a | |||
| caa03566da | |||
| fdad923183 | |||
| 77c5f625ff | |||
| 243ad12869 | |||
| 9dca9a8c46 | |||
| 1aa569c159 | |||
| 43f120dd10 | |||
| ac1395ce98 | |||
| b8fd087319 | |||
| 77546db923 | |||
| b8fbef8a5f | |||
| 1870c0cc83 | |||
| f26c05d64f | |||
| ce8663bcfa | |||
| 4a3c8e794a | |||
| c7d820a92b | |||
| 4a5d924676 | |||
| ec0c8feb36 | |||
| 6bf4378132 | |||
| f777aeade0 | |||
| 6f3833d6fb | |||
| ef7fc21287 | |||
| 57f6f9073e | |||
| a737b98853 | |||
| f9f770110e | |||
| fec4ecd630 | |||
| 4653be7808 | |||
| ff5186ed55 | |||
| 058d518e8b | |||
| 9c33fa5d9f | |||
| 03847102be | |||
| 1f85d0bbbf | |||
| 9fd5bebae9 | |||
| 06521e5e79 | |||
| b0966570c0 | |||
| fc4bfafa0a | |||
| 28348e46ec | |||
| 908060ea6d | |||
| 8871b149e4 | |||
| 045bdbf525 | |||
| 44e6bac3b2 | |||
| f48927a4be | |||
| 02b33d13be | |||
| f7f21a4392 | |||
| 1c943839eb | |||
| 516ad5207b | |||
| 44ecf581f0 | |||
| ced30862d8 | |||
| ec59384d13 | |||
| 556eaf9928 | |||
| 323a7cf9d3 | |||
| e87073f914 | |||
| 95b0292667 | |||
| 16309dfff6 | |||
| 0023831e4c | |||
| 1918dd06e5 | |||
| d36f0b7733 | |||
| 8e3b8691fc | |||
| 8aec961990 | |||
| 31c6697467 | |||
| 3666bf3dd1 | |||
| 6209c812d3 | |||
| 72ef2c70ff | |||
| 176be07731 | |||
| b187f1a719 | |||
| cb29d009d3 | |||
| 5560f84dee | |||
| 1f05a568f5 | |||
| 5488a76711 | |||
| 3e6ab92bb3 | |||
| 24757255c7 | |||
| 27b076ee24 | |||
| 7813650aea | |||
| 38e6588cd9 | |||
| 4c785e647e | |||
| 07dc58c1dc | |||
| 017a7a092c | |||
| 0ad4182325 | |||
| e7e9d226dd | |||
| 8c0bf6a311 | |||
| 6ffe3a627d | |||
| 556ed5dd73 | |||
| 2c5cf63723 | |||
| f754f51ba5 | |||
| 5040cef102 | |||
| 90de831992 | |||
| 8fe0f9728b | |||
| 34b4defd43 | |||
| 76ea5a9c67 | |||
| f845dd6a19 | |||
| b35e607f3e | |||
| 985801a909 | |||
| 8462d8a0fa | |||
| cf9930a54a | |||
| 20cee5db7d | |||
| 1ebd714e3d | |||
| 2f770d1c47 | |||
| 2e5c2e7149 | |||
| bfae393127 | |||
| e76660e226 | |||
| af4c37c575 | |||
| 0ab3b63a38 | |||
| 5b97cddbcd | |||
| ce5232efd9 | |||
| 83156ef2d0 | |||
| c60a2506fc | |||
| 9855d22f35 | |||
| 8c3141101b | |||
| ee05e5f7b2 | |||
| 2cf7f2744f | |||
| cfd35da0c0 | |||
| 18ae5739c2 | |||
| 49f1eca1f7 | |||
| 700c9a19cf | |||
| a79f4aef2b | |||
| 00dc45db9f | |||
| add1b018ac | |||
| 0df7e05e82 | |||
| 0170b8dacf | |||
| e9413abbd6 | |||
| 9a4a6b7188 | |||
| 6f87a2324a | |||
| 60b8fda134 | |||
| d869e87516 | |||
| da1f099b4f | |||
| 370e52a149 | |||
| 4278ea726a | |||
| c9c43fbef2 | |||
| 61d41a2298 | |||
| e71954697c | |||
| 5c3772e62e | |||
| 24912ffd38 | |||
| 5d070f4e98 | |||
| 508a061756 | |||
| a0b2e02785 | |||
| 8c93134cfe | |||
| 8cca5db5a1 | |||
| 8ed2b489f5 | |||
| b75010fa49 | |||
| 771a0e640c | |||
| 0fff79d6b7 | |||
| bdc7b33c8f | |||
| 523538b21c | |||
| b994c56bc5 | |||
| f77a94af6f | |||
| 8f97502677 | |||
| 854a8dcc48 | |||
| e6fdd2b436 | |||
| 0e6afabaa3 | |||
| cbe845ec29 | |||
| ecf686b1a9 | |||
| 6ec8bd53a2 | |||
| c931fca242 | |||
| 438e92d51b | |||
| f6aae4190e | |||
| ac2b307eb9 | |||
| 7028fa49f8 | |||
| 88c4b752d4 | |||
| 756e8a94cf | |||
| 6b948e8200 | |||
| c6c05ab633 | |||
| 6a932912e3 | |||
| e0eeeb12c2 | |||
| 0f7dccc193 | |||
| cd369cf2e8 | |||
| ce5728f3c0 | |||
| 3a290a456c | |||
| 14d4aa5cf1 | |||
| fc37c7325b | |||
| 440d43e109 | |||
| 805055bc74 | |||
| 5d089dc34d | |||
| 92e79852b9 | |||
| 315c066734 | |||
| f08403bfe3 | |||
| 3358bf885d | |||
| 2d3f558766 | |||
| 7960e05b84 | |||
| 0b332b7872 | |||
| 09d5175957 | |||
| feb94b13cb | |||
| 3b1b4f03b5 | |||
| 06f93bf86f | |||
| f0c73499b2 | |||
| 79320c6a00 | |||
| 470d40c24d | |||
| 8b55483991 | |||
| b5b6a51ce4 | |||
| d44bb78900 | |||
| dd64b61e51 | |||
| 6f2c793b1d | |||
| d953246acd | |||
| 94efaf46cd | |||
| 298e05dd06 | |||
| eaa99881e0 | |||
| 8f531065a9 | |||
| 6df599673a | |||
| f8d5d8834d | |||
| 1c2352c008 | |||
| fb48c94be6 | |||
| 2ddaa861fa | |||
| 2a149d371c | |||
| a26b781101 | |||
| dcb5a8fb30 | |||
| 089bd9fcbb | |||
| 60657ae68a | |||
| 2a7d6d24a8 | |||
| 02e83594c4 | |||
| f9ae5bc3c6 | |||
| 0eb1d9b526 | |||
| c9011c1296 | |||
| 666482a945 | |||
| fbf88809a6 | |||
| a69023096d | |||
| c052c5c509 | |||
| 0fcb548587 | |||
| e243264511 | |||
| 3bae8cbb57 | |||
| bbbcfd2c4b | |||
| c6290b6879 | |||
| 5033b65ef2 | |||
| 1e83e9aaba | |||
| 3f8a57cef5 | |||
| 37283140ab | |||
| abcbe1c84b | |||
| 70c43e0fe5 | |||
| d720d89fd2 | |||
| 1b185a3680 | |||
| 772bbc1b65 | |||
| afc4c58cf7 | |||
| 2f40959a01 | |||
| 09850306ad | |||
| 31aaddb7af | |||
| 5842b193c7 | |||
| 320e424032 | |||
| a9de96f1a0 | |||
| c3f5323cb8 | |||
| 19d53585fb | |||
| 8366dc62a1 | |||
| 2671def903 | |||
| 78e3d28196 | |||
| 0d23fa97b8 | |||
| 7dab46a13a | |||
| 3a6992b6bd | |||
| d7e2ea79b8 | |||
| 6dcf43e3ac | |||
| 826879c517 | |||
| 9eda9f7894 | |||
| bb8a140647 | |||
| 43a6235439 | |||
| 65f50609f6 | |||
| 6c73d08e32 | |||
| c0978f5098 | |||
| 8b63fbaaa2 | |||
| e35c85def0 | |||
| c7913a81db | |||
|
|
1d1024d95b |
||
| 706eb30081 | |||
| 1e55926915 | |||
| ecf4081924 | |||
| 0a1aa8c0f1 | |||
| 6972363118 | |||
| 9be54387c2 | |||
| 670f5d3d91 | |||
| 1c4d4e6362 | |||
| 5f5469637a | |||
| 66e666cc65 | |||
| e4cfb57bef | |||
| b6ff615057 | |||
| adeef936c4 | |||
| 8c6f504224 | |||
| 9a87b28f3f | |||
| 0fb0f7a1bf | |||
| b12555067c | |||
| 132b8d231a | |||
| 87534edb80 | |||
| 610afe7677 | |||
| 258d0823f5 | |||
| dc9f29275a | |||
| 855cdb08b7 | |||
| 2bf23b41a9 | |||
| 8452ef040c | |||
| c3907f45df | |||
| 56aceac9e8 | |||
| 538cc4aa4a | |||
| 164b09a3d7 | |||
| 0163c16771 | |||
| a341ac1f06 | |||
| 5bd78b8f4e | |||
| 8b148285b1 | |||
| b84447e4f8 | |||
| 8189197d63 | |||
| 29609e6dfd | |||
| 5ad6934f2c | |||
| 3cbd4224b1 | |||
| 319c7537f3 | |||
| 823e3d7fb3 | |||
| 3cca1b8255 | |||
| 121fba491f | |||
| 00117840d0 | |||
| 7fd1bd0a6b | |||
| e24a6bbdfd | |||
| 10d3a49a52 | |||
| f804d4f1e9 | |||
| 6caae2ff99 | |||
| e69db9eb8d | |||
| 1b6775d032 | |||
| 487f7b8195 | |||
| 048a190f51 | |||
| 7c076c7053 | |||
| 1c2073128d | |||
| 39a938cc20 | |||
| 67beec4ee4 | |||
| 807513a556 | |||
| 480294ae05 | |||
| ca2be0172a | |||
| d39dab185a | |||
| b920b775d5 | |||
| 8d7244a214 | |||
| 353c29791c | |||
| 864a850825 | |||
| 0e62562f34 | |||
| b29f72be5d | |||
| 5dc510694c | |||
| a0d021abfc | |||
| da0d736946 | |||
| 516b0932ee | |||
| 8bae2128a1 | |||
| 42e2276e97 | |||
| 83ef04c250 | |||
| e252a9f4e7 | |||
| d3066ef88d | |||
| 39fa1f7c9f | |||
| 846071a4fb | |||
| 6e2a2bbcd0 | |||
| 64b165766f | |||
| 15028cbe92 | |||
| 74db591328 | |||
| f0e7a186a8 | |||
| 15d9448d03 | |||
| f4e5261a72 | |||
| f38c90db91 | |||
| a6a0e8a8ea | |||
| b3215da360 | |||
| 6cd861f47e | |||
| b8e0452730 | |||
| c4f31592fc | |||
| d6b29241fd | |||
| e3e16fb842 | |||
| 28fc36adeb | |||
| 1cf8eb934b | |||
| 37b0ea3c3e | |||
| 00f8146af5 | |||
| a23307aabb | |||
| 2178d78540 | |||
| e7de2c97fe | |||
| 33c4e2dc0a | |||
| 88c201167d | |||
| 4155137c38 | |||
| 5870e72a4b | |||
| 111df958f5 | |||
| ef6a1d139d | |||
| d96c20f607 | |||
| cb4b5f3769 | |||
| 079c96ffe4 | |||
| 9b0ba471bd | |||
| 4244b2cd7c | |||
| 23383d7e69 | |||
| 93429becad | |||
| aae8a3e864 | |||
| 929c25a7a6 | |||
| 0ae4b1528f | |||
| 6f8fb9f15a | |||
| a51af1bad2 | |||
| 41efdda5f6 | |||
| 27e255f574 | |||
| f16e701a40 | |||
| 2edfb56530 | |||
| 563f6b3ea4 | |||
| 5565183495 | |||
| fac95836fc | |||
| 05693bd55e | |||
| 293d805351 | |||
| 52d72ac0e5 | |||
| ad59fac380 | |||
| 38a62102cb | |||
| fdd9753e44 | |||
| 47a2158354 | |||
| b9091b1667 | |||
| 88cf3aba0d | |||
| 2d58d22a72 | |||
| 87dd88beec | |||
| 0a6f449b3b | |||
| 5628d00c7c | |||
| 3ae1685626 | |||
| cb56e1ed26 | |||
| 3349cea289 | |||
| f02e550f8c | |||
| 9da8217df0 | |||
| e5a4906ec7 | |||
| 7b7911f95c | |||
| 51126ae718 | |||
| a3b4853f55 | |||
| e625a362a6 | |||
| 71dcbe69f0 | |||
| 72b282d550 | |||
| a3f153eda6 | |||
| d2d3b34ce7 | |||
| aba9530a57 | |||
| ecfd3e4e6f | |||
| 343b3828ab | |||
| 9e9a76344c | |||
| d107ea5423 | |||
| 7e9c02441c | |||
| 00d7c03c55 | |||
| 46bad19f7c | |||
| 4c468d88e3 | |||
| b5d69aefe0 | |||
| 56bda48a06 | |||
| fd02d9f834 | |||
| 1848a4a06c | |||
| 0d79236814 | |||
| 3cbbe5ab63 | |||
| 47239f98e5 | |||
| ceb75e83c4 | |||
| 38d18bf325 | |||
| cbf6abb539 | |||
| c7486ba674 | |||
| 8daf562b29 | |||
| 4065ba0bd5 | |||
| deaa55564e | |||
| 7db67acadc | |||
| bffe189ea1 | |||
| bfcd618350 | |||
| bfe894008b | |||
| b67d8464ff | |||
| 9d7679c3ad | |||
| c7d6c5bb95 | |||
| e2f9077231 | |||
| 34db92a1f0 | |||
| 1ad73914bb | |||
| 4a4a4afa1f | |||
| 4c99411f8b | |||
| 95022291fd | |||
| ab7b4e330a | |||
| 7778c7f1c9 | |||
| f7bd3b0db3 | |||
| 95bd3c7fae | |||
| cc76dcfa13 | |||
| 7a94f705e6 | |||
| a0af184035 | |||
| 3a93626689 | |||
| 5bf61b491e | |||
| bb6423d56a | |||
| 4ac35dd60e | |||
| 53affe2fd1 | |||
| fc1108a9b1 | |||
| 09ee3a20ac | |||
| 9ce465e84f | |||
| 2a3133b008 | |||
| 52f70fe733 | |||
| 7ffb47bfc5 | |||
| d75458fbc9 | |||
| 93f64130b0 | |||
| cf5a8e9614 | |||
| fd74dbf5dd | |||
| 02534102de | |||
| 7d85327928 | |||
| 2c0a66ac61 | |||
| e9c21eb5ba | |||
| ba6a75e686 | |||
| 7b4ee4da22 | |||
| 4b73706625 | |||
| b5c4ea47f8 | |||
| 9f43885e0c | |||
| f79f46a6f1 | |||
| 59ce513720 | |||
| 9699f15961 | |||
| 804065367f | |||
| 58c5319d03 | |||
| 2af28cafa9 | |||
| 3a10699eeb | |||
| 6647f081ba | |||
| a283e65f9d | |||
| f75870dccd | |||
| 29fb1b20f5 | |||
| 3049492de8 | |||
| 280e4cfac5 | |||
| 209d84c66f | |||
| a4c940ec35 | |||
| 9d82c4b72b | |||
| 45260d320d | |||
| 67552d90bd | |||
| cd8d6a2f67 | |||
| add201ec22 | |||
| 0e6ab862d1 | |||
| d00fb57671 | |||
| 390c5533df | |||
| 49c0904a4a | |||
| 63a568f3a7 | |||
| f474d84891 | |||
| 9f5049c2ca | |||
| 1aa8261bad | |||
| be590ae7b4 | |||
| 71a403c78b | |||
| 20da7d0176 | |||
| 0863ad6a94 | |||
| ef55002556 | |||
| 583952ee6d | |||
| 63b8ffe002 | |||
| d85128b88a | |||
| a7f470d94c | |||
| 61b446f5f1 | |||
| 0604600213 | |||
| 67daf45346 | |||
| e6d4a93668 | |||
| e1f45308ab | |||
| 7cb5ab8289 | |||
| f1c094fd43 | |||
| 8f5958ae32 | |||
| 94370c4775 | |||
| 725b32258b | |||
| 5299ec554d | |||
| 8e75dfec3d | |||
| 820f639ef8 | |||
| ad097feee1 | |||
| 154eca1086 | |||
| 6d30aec8f9 | |||
| b378ac5c17 | |||
| 827de87a22 | |||
| 247d5d0b10 | |||
| 5bd216ce5d | |||
| 88ac4b0ceb | |||
| 3efd2e18a9 | |||
| ab40bb108c | |||
| ed6c1b05bf | |||
| c714b8f02f | |||
| 287fce9b7b | |||
| 280ecca2e5 | |||
| 6b22aab6fb | |||
| e3711860f1 | |||
| 402cf9b852 | |||
| 6cdd6c494c | |||
| c739fba5eb | |||
| 2ad59bf7c9 | |||
| 84adc35aec | |||
| 329a4791ed | |||
| 2e0ec5537d | |||
| 8a2c89e9fd | |||
| 596589bb7b | |||
| e0cb07c9f5 | |||
| 44a096c6f7 | |||
| 3f1470f938 | |||
| 6bd33bd900 | |||
| 8c56a94238 | |||
| fb14fcad15 | |||
| afc44e71fa | |||
| 519df04e34 | |||
| 3b64c6ae27 | |||
| 25de1e30ef | |||
| aa7cb8cacf | |||
| 3b1be6843c | |||
| 66bd3380aa | |||
| eadf26bb9c | |||
| a8ff0ffec3 | |||
| 2eee5e715d | |||
| 5465235b13 | |||
| 3bd5fe699f | |||
| 8b5e2dd59f | |||
| 093cf3c969 | |||
| 4d509453fd | |||
| 06c7a6c1db | |||
| 2623df5378 | |||
| 9597a55600 | |||
| 59ba178630 | |||
| c9d37e13d1 | |||
| cb0add52df | |||
| af1707aa03 | |||
| 9db150290d | |||
| 84a4d46804 | |||
| 73d8d1945f | |||
| 5c7a2e1ad5 | |||
| d09c18eb19 | |||
| 20abea5289 | |||
| 5314c12242 | |||
| 70ce4712e1 | |||
| 3184b37460 | |||
| eb8b89450f | |||
| 4fb50592ac | |||
| 1383c477f0 | |||
| bc1f669ec7 | |||
| 7cd7b6dfdb | |||
| 5a5de795c1 | |||
| 1dc221e65f | |||
| ef8ec32a2d | |||
| e369bc93f4 | |||
| a757904dcc | |||
| 017397117c | |||
| 9099c09dd3 | |||
| eda51583c5 | |||
| 1b5067d643 | |||
| cffee6b7cf | |||
| 45e05f03cb | |||
| f07febd7a2 | |||
| 9d4a920736 | |||
| 29a15547fb | |||
| 9b74d749a3 | |||
| 7f792bea9b | |||
| e5cb3ff96b | |||
| d005eee946 | |||
| 198f46f1c4 | |||
| c6b57232e8 | |||
| 1bb0a71705 | |||
| 6cf535eaef | |||
| 8d0af9a0e3 | |||
| 1ac6631d6d | |||
| 644100633d | |||
| 4865c0cd22 | |||
| f51d2e7b7c | |||
| 29ecc2dc38 | |||
| 2538a3e7d8 | |||
| e2efe9d605 | |||
| 24109a9e11 | |||
| 38f419f2ea | |||
| e21debcda2 | |||
| f52184f84c | |||
| 05ab69384a | |||
| c172492007 | |||
| ec4ecb29aa | |||
| a4e88b674e | |||
| 7117a8d9e5 | |||
| 7cd07283a5 | |||
| 119638764d | |||
| d1f9e1d307 | |||
| d93cf1734b | |||
| f582caed10 | |||
| 0c390d383b | |||
| 82b901f8d0 | |||
| 872469f11e | |||
| cb0ac934cd | |||
| 2aadd8094b | |||
| a0bc4c37f0 | |||
| ffd391adef | |||
| 007e1e2983 | |||
| 1de8160fae | |||
| c1d33d71c5 | |||
| 639705821d | |||
| 5a9356edcc | |||
| 7b5198be08 | |||
| a3a73c3aa3 | |||
| d13d2f54ed | |||
| c6876ed31a | |||
| 1d3999a6bd | |||
| 13d5023ac6 | |||
| 7e149d0558 | |||
| 6b148ecdc4 | |||
| 57197974ae | |||
| 1b93c9a427 | |||
| 528a772ea2 | |||
| bd8ca68e7c | |||
| 3d06980b42 | |||
| 39794ecc0f | |||
| b6ccde3ddc | |||
| 3c27dfbf59 | |||
| e5c3d4c714 | |||
| 40281c4e0a | |||
| 12f40c8049 | |||
| e8d755252a | |||
| 7cab92e128 | |||
| bd0b1b1f71 | |||
| 5542fdea8b | |||
| 451425af87 | |||
| c56dd72292 | |||
| b5d70d0f1b | |||
| 676a9d0d62 | |||
| f9c3a4807a | |||
| e4a4e0dc87 | |||
| 1a1fccbc7f | |||
| f39ee922f1 | |||
| 69bf615810 | |||
| 113869342c | |||
| 908cd0dd0f | |||
| 3c3709ba15 | |||
| 72e8db30e1 | |||
| 1a8771dc5d | |||
| 27001fcdbc | |||
| 67cf4cc625 | |||
| d73d93bc5e | |||
| 146b730447 | |||
| 210a3c5f64 | |||
| 43d79d7809 | |||
| c3a6684c4f | |||
| 764e98e12e | |||
| e454bee6af | |||
| 77f84cabbb | |||
| c7816416c5 | |||
| fd6bdd93c3 | |||
| b03f0be2f2 | |||
| 4d2bc7f245 | |||
| 1b8526df08 | |||
| b32b9151da | |||
| 3a840546fe | |||
| 30a00be262 | |||
| 540b43d971 | |||
| 8d4649c6cf | |||
| 08f26ffd48 | |||
| 949e2ca375 | |||
| 3d7ddd2f8c | |||
| 792df8b297 | |||
| 8c3feb927a | |||
| cf846b2f8d | |||
| 5e3df1c783 | |||
| 6e9349f70c | |||
| 50b0f7698c | |||
| 14a8814338 | |||
| 2febec3c8c | |||
| db32b58052 | |||
| 212a1fdc8c | |||
| e9f36a3c2d | |||
| 1d1e72adf3 | |||
| 7ca1366bec | |||
| 79d32b61c6 | |||
| 2526dcc9b1 | |||
| daf729292e | |||
| 4488117ac3 | |||
| 22670cda3d | |||
| 7ee41a4b71 | |||
| 498dd6a54e | |||
| 705406e039 | |||
| 7b49d3da88 | |||
| 2bffef29d5 | |||
| e5a72bce36 | |||
| d91a2ae08e | |||
| 5c032834c6 | |||
| fb5c43dc85 | |||
| f98d1345d3 | |||
| 66235079a8 | |||
| c5c9441c1e | |||
| e10380a792 | |||
| 7fdfc71390 | |||
| 2f2cb735f3 | |||
| 52113737ac | |||
| 760bb556b2 | |||
| 4d2cd54365 | |||
| eec5bc0981 | |||
| 56a1c3bc75 | |||
| 57ef654a55 | |||
| 15ed096ba4 | |||
| 40128c423c | |||
| a91d0d0202 | |||
| 0c6a787515 | |||
| a3a98eb9da | |||
| 1a3d86b800 | |||
| 54dbbf6944 | |||
| 2f7155e57b | |||
| dd41635a56 | |||
| 84c5a75b28 | |||
| 7f1afac903 | |||
| 2c21eede1f | |||
| 8c11c108ca | |||
| 37b132821f | |||
| 3956635920 | |||
| f12b5c1172 | |||
| 85bfd34c0d | |||
| 75f5aa91a6 | |||
| 800928cd69 | |||
| f3887debca | |||
| cfca87ee44 | |||
| de3b27629d | |||
| dfccc6c0ff | |||
| 20b105d909 | |||
| 1d40b5da55 | |||
| 3b7b80fd43 | |||
| 7b82ace806 | |||
| 6a0e4bfeaa | |||
| 442d24805d | |||
| 1fd30047b6 | |||
| 79b33ab852 | |||
| 5e843cde99 | |||
| 4e295c71b0 | |||
| 78c6c5cde9 | |||
| d58a8532d4 | |||
| b4c89d8624 | |||
| f3e7330d92 | |||
| bfee0bdf9b | |||
| 1c97e2aa93 | |||
| bd3dc59c07 | |||
| 9969804845 | |||
| c3e96bee00 | |||
| 9761688cfe | |||
| 5d1b5e2ebb | |||
| 782456991a | |||
| 07b6cc949f | |||
| 954921c641 | |||
| f4c35c4d3f | |||
| 270c563899 | |||
| b2f3ab42ee | |||
| 6e7bd64469 | |||
| 51a1ce7d0f | |||
| b4a8ecd7d6 | |||
| 5fcfadce9a | |||
| 826298d097 | |||
| 5754e0f94a | |||
| e74ab54a8b | |||
| c9ebea451f | |||
| a5eeba74c1 | |||
| 10b1cff790 | |||
| 3c87645998 | |||
| 876d90a816 | |||
| e595bd09da | |||
| 43868c0888 | |||
| ccf2919cba | |||
| adb97b12c8 | |||
| a05770fc20 | |||
| a373b8da21 | |||
| 78b2cd4f0c | |||
| 61a5ed1c90 | |||
| 08257f19fd | |||
| 9e10535fe6 | |||
| 7495206e79 | |||
| af1a2adbde | |||
| 425fe3c764 | |||
| 3fc8fe2765 | |||
| 6405f09918 | |||
| 53744f1de0 | |||
| adb4faf58e | |||
| e3b1a69eb5 | |||
| 0c3b4b10bc | |||
| 68096c16bb | |||
| 559ec7c8c9 | |||
| 638707550b | |||
| f197d4cbe0 | |||
| a7721d9198 | |||
| 0591bd03d2 | |||
| bdf59791b0 | |||
| 7497751192 | |||
| f902f93800 | |||
| 51b2b9d8ef | |||
| d9aa1ddc81 | |||
| d817c649aa | |||
| 38ceb3c0cb | |||
| 62fcdeb13b | |||
| 92363a9fd5 | |||
| ba9de6773b | |||
| e41be4bff2 | |||
| d9b7ae2263 | |||
| d6dea12915 | |||
| 892ff53ef9 | |||
| 3a5d58f4aa | |||
| a996cf6a83 | |||
| 62051f08f0 | |||
| f40f37c437 | |||
| 5cb640ad67 | |||
| d719705f2e | |||
| 35334154c8 | |||
| 77d4f09851 | |||
| 9ffeb47c4c | |||
| 752945f815 | |||
| ddf2ca08e4 | |||
| abf3330d69 | |||
| b8b21c4f4a | |||
| a490611394 | |||
| 9a4914b0f7 | |||
| 91e972a4cf | |||
| ddd0afb623 | |||
| 01dc1b057c | |||
| 70f3f4e486 | |||
| da517bb284 | |||
| 255f07c8c2 | |||
| 366a7a5d11 | |||
| d1909d406b | |||
| 7793097cfe | |||
| 3344fb4749 | |||
| 2e507be500 | |||
| aad2dff6fc | |||
| f1c3f2392d | |||
| ed2df23faa | |||
| 09eb1e9a2f | |||
| d537a84f65 | |||
| d015f3ad2d | |||
| 032a2ad868 | |||
| 9529ba27f4 | |||
| c77ec7a2c8 | |||
| 62d62e60a0 | |||
| ff6fe6b5aa | |||
| b3ab4d2cf7 | |||
| e3c9f9cadc | |||
| a28a3f5732 | |||
| f46c1d613e | |||
| 5959fae81c | |||
| fb7947a896 | |||
| c331058914 | |||
| 184dd3809b | |||
| 6c7b13e443 | |||
| 26f460a60f | |||
| 0b0ae07fb8 | |||
| a956320470 | |||
| 2a682242fe | |||
| b07fd70b31 | |||
| ecac429c52 | |||
| 4c824edbe4 | |||
| 4a7463edcc | |||
| d97078dc41 | |||
| 9afed4371f | |||
| 0a19c8b043 | |||
| b6d7f9762e | |||
| b431f70941 | |||
| d751093a87 | |||
| 0ad59b7c9f | |||
| 78195b0218 | |||
| 7c846f9ad0 | |||
| 5eb58b7d37 | |||
| 2314268b43 | |||
| 9317838ef0 | |||
| d2eda3a2d5 | |||
| df9ad3b855 | |||
| c08334b8dc | |||
| a7305904c7 | |||
| 8fa254418a | |||
| f4be2e765e | |||
| 2ec5072092 | |||
| cbaa4c90f8 | |||
| 279a1a040c | |||
| 4eae80295a | |||
| 258555e9eb | |||
| 746dc4b0e2 | |||
| 8e5040a505 | |||
| d8b3d7a148 | |||
| 312f7e58c7 | |||
| a6e4430825 | |||
| bd00826448 | |||
| 8b622e6999 | |||
| 2048de70f3 | |||
| 593dc064f9 | |||
| 13f4fb0935 | |||
| 227b2e5cf7 | |||
| 150bfa4aa2 | |||
| 432e0efce2 | |||
| ea60d107e8 | |||
| ff5b0cfb8a | |||
| 66e2b07ce5 | |||
| 11cae3bec3 | |||
| d1b85c647d | |||
| 1aa32e873c | |||
| fc9180363d | |||
| e80304a09b | |||
| 14ff9f9592 | |||
| 19520f017b | |||
| 8d0a7a4ff1 | |||
| c7488cbfd5 | |||
| 5d2fcf6498 | |||
| 5f46b51f12 | |||
| e1d5ae46d2 | |||
| 03c8d66401 | |||
| 042a774ba1 | |||
| 43161d5e89 | |||
| b1ecf98791 | |||
| 8970f51dbd | |||
| b5e7d91883 | |||
| dc056cbc37 | |||
| d3ad841806 | |||
| 5c7b756bd1 | |||
| 483ce15988 | |||
| f3fde735da | |||
| 622f08856e | |||
| 7d220ede27 | |||
| 813407310c | |||
| 67811cec00 | |||
| b811e34090 | |||
| bbbab9b237 | |||
| 8d5a9c825f | |||
| 75b74918b7 | |||
| 6a7353f689 | |||
| 16c08b2f96 | |||
| 190a21e2f7 | |||
| 93b2daab6c | |||
| 7a9357954d | |||
| 81bbc080fd | |||
| ce760bd5cf | |||
| b0305ede55 | |||
| fdbc101cd0 | |||
| c39d369dbc | |||
| 5ed8999ccf | |||
| c6f6ee17d2 | |||
| d14b7354eb | |||
| 65a83cd77c | |||
| 8c36bbce28 | |||
| 2e0846823b | |||
| 96aa415920 | |||
| 495d8cd44a | |||
| ca4181a822 | |||
| 0b0d8ffdc0 | |||
| 55602c83cc | |||
| 232c6d7b22 | |||
| a52d7554f3 | |||
| 56d00a5913 | |||
| 78d0230e5a | |||
| b5a11f7e51 | |||
| d74e56bc74 | |||
| eb2d627f85 | |||
| 809f2df37d | |||
| 699ee5d38e | |||
| e6a3366349 | |||
| 065697540f | |||
| 5d020e5928 | |||
| 0af7a50810 | |||
| dc6acaa18c | |||
| 53b6adeef1 | |||
| f9b7ab307a | |||
| eccc50d2b9 | |||
| f774e6446f | |||
| a4b2299537 | |||
| 155b2dbec0 | |||
| 82f7912fe1 | |||
| cc02c0053d | |||
| a12a236bc1 | |||
| 2025969068 | |||
| 24d32a44be | |||
| 3343a7148a | |||
| 77b2514746 | |||
| 3b073d013f | |||
| 0bd77b3c52 | |||
| be157859cc | |||
| f9e52987bf | |||
| 21aa8978cf | |||
| 093f8a4b7c | |||
| f162b48461 | |||
| 6fbfd065a2 | |||
| f9961a1e37 | |||
| b24d6d7e8d | |||
| 21a7814cc8 | |||
| d2177898d4 | |||
| 27ef5701ac | |||
| 8435734b45 | |||
| 0bfaec7167 | |||
| acdf52fe5a | |||
| 6751610645 | |||
| e587277666 | |||
| 34d2b75167 | |||
| 5f5b0b3bdd | |||
| 4bc6cc79c5 | |||
| b38ebddf8d | |||
| 967524d37b | |||
| 302288f2ce | |||
| 84f56b4528 | |||
| cc40e42b45 | |||
| d64a90207e | |||
| 63cd31766e | |||
| 070fba8010 | |||
| ed94ad9243 | |||
| a6f850e6c3 | |||
| e314e16e96 | |||
| 3143dc68ee | |||
| 3bdc59e089 | |||
| 9e93a96754 | |||
| a49aa0c1f1 | |||
| 1026364701 | |||
| 7cc8af4b57 | |||
| 80d1e53dd9 | |||
| 127ebc549b | |||
| 2450ab4ed9 | |||
| abd08e3491 | |||
| aa8ce0c3d8 | |||
| e35cdce5fc | |||
| 77d12d4b91 | |||
| c9893dfb89 | |||
| ed44f47076 | |||
| 84ba84693e | |||
| ecd019e8bb | |||
| 4e022df686 | |||
| a98b508ff9 | |||
| a8634c4914 | |||
| 4594ae5c04 | |||
| 5e85114b2e | |||
| ac77df2850 | |||
| 605b0f6d36 | |||
| 03ba939813 | |||
| d9261f4d41 | |||
| 54f3e9bd86 | |||
| 28b6d457c0 | |||
| dd1a6b1afc | |||
| 97eefaea22 | |||
| 7c6114bf46 | |||
| 9aa938c58d | |||
| c8521d96b4 | |||
| 9c8e23577e | |||
| d49c309f80 | |||
| 065056493b | |||
| 3f1fd834d5 | |||
| a2a8b936b9 | |||
| afbc21d143 | |||
| 86cd0a812b | |||
| 5ce1c5fb0a | |||
| 42ee4bbdc2 | |||
| 662a8a5b40 | |||
| 56380e9aed | |||
| bb781207e7 | |||
| c9948aa7b1 | |||
| 50140ec954 | |||
| 6c85c0660f | |||
| 7d7dfc0bb4 | |||
| bb06174a6e | |||
| 757dfed99c | |||
| 35555df976 | |||
| de65eec7aa | |||
| 0ae98c211d | |||
| dacdeb2cd7 | |||
| 6395a7a285 | |||
| e8f65f88cf | |||
| 91048486aa | |||
| 3309a6b8c0 | |||
| aecabbb144 | |||
| d0f5ccc1ce | |||
| 06314a84aa | |||
| cb2ce5a5b8 | |||
| d1fa15f248 | |||
| e9ee6992ca | |||
| 92df7ca236 | |||
| b4c2b98a88 | |||
| a043c03901 | |||
| a3eb90a6dc | |||
| 6eaac6866f | |||
| c1e3014384 | |||
| c7f5d9d810 | |||
| 820f431d66 | |||
| 8111f3846c | |||
| acb5ae23d4 | |||
| 76d8a73bbb | |||
| 44c135489e | |||
| 707562f1f2 | |||
| 219038c445 | |||
| 852dbe66dd | |||
| 1eb4114722 | |||
| 9778da2094 | |||
| aaa3864229 | |||
| ae78de305f | |||
| 57170366da | |||
| 3c981b70d8 | |||
| 06981d4c29 | |||
| 4fcb57bb8c | |||
| 4454164195 | |||
| 2075b654af | |||
| ce2fc80bfd | |||
| f58d743b22 | |||
| dfe0317bc1 | |||
| 577fea0b0b | |||
| 52d26de787 | |||
| 976e2865a6 | |||
| 895af0da62 | |||
| 5f69fbc1f8 | |||
| 1ccd4a308f | |||
| a4c47007ac | |||
| 680e89dcc4 | |||
| cdd9743ec8 | |||
| 4058fbb841 | |||
| 3c126d53c5 | |||
| fa2bc5d08f | |||
| e84fad8dab | |||
| 341fcfd1c7 | |||
| 1c3f033933 | |||
| 764c6a60b7 | |||
| 0df3e730a0 | |||
| 624178f193 | |||
| 204e600e14 | |||
| cf62cb328a | |||
| a0fed9a4d2 | |||
| 88a8cd0f0a | |||
| 81f59ed217 | |||
| 2329d118c2 | |||
| c88807597e | |||
| 2cb4df32e9 | |||
| 2f2141328c | |||
| f510700b99 | |||
| 5ac3c03a0c | |||
| ebbe45e5e7 | |||
| 855887df71 | |||
| 734ead4807 | |||
| 7fdf5b4a78 | |||
| ee20e79906 | |||
| 54d11b31a5 | |||
| f940051411 | |||
| 4d0e708ea4 | |||
| 3ce41f42ca | |||
| b531e382c2 | |||
| 57bf06a68f | |||
| 5d8cef515e | |||
| 830c6ebe55 | |||
| bcd86e5324 | |||
| 89ef68f5f2 | |||
| 38f2da8a8d | |||
| d43c4af0b4 | |||
| 9439f0f221 | |||
| 38f5e58ed5 | |||
| c9cea234bc | |||
| b361811b97 | |||
| 2241afd6f9 | |||
| 3e64ed53e5 | |||
| f3441b583a | |||
| 07e5a1f349 | |||
| c393512912 | |||
| 4fb94bc2d6 | |||
| c42b6c70eb | |||
| 0ed8a1f435 | |||
| 9aeaaf1c33 | |||
| 88852c1498 | |||
| 99b56a3540 | |||
| 563b7250d2 | |||
| a9daaa3278 | |||
| 94e59d7248 | |||
| 2ced8429c0 | |||
| e140c6d285 | |||
| ae49d8896a | |||
| 79be222ec0 | |||
| c4af12c625 | |||
| 5068fd493f | |||
| 7cfc560f02 | |||
| 4a5512bc16 | |||
| 5dce303fe1 | |||
| 41f5ee3f88 | |||
| a142a0044c | |||
| 07be5ae7ec | |||
| 036ca5d817 | |||
| 5d80fa4499 | |||
| eca5806575 | |||
| 31a544dd03 | |||
| 3452e68e0c | |||
| f10dd12dc1 | |||
| 50b8d529a7 | |||
| d02fa16324 | |||
| a3e3f381c2 | |||
| e3a53d10e6 | |||
| aa40c8ac75 | |||
| 000ed7b957 | |||
| b257f89140 | |||
| 578b3d724a | |||
| 9caa56f5e9 | |||
| 8e75838950 | |||
| 7d1e10c09b | |||
| 4e1849c726 | |||
| fda578b554 | |||
| 704f415239 | |||
| 6743b9ef18 | |||
| 36797a419a | |||
| 2ccc717579 | |||
| e4088392b8 | |||
| cac526a517 | |||
| ea8faf7032 | |||
| c311577997 | |||
| d18e9afc1d | |||
| e40dc2daab | |||
| dfccfc56c1 | |||
| bdfe08a514 | |||
| c46c0f1cc4 | |||
| 84e6d3f347 | |||
| bc30b34bc2 | |||
| 24d9d504b5 | |||
| ac4ee7d6b8 | |||
| 4179196e21 | |||
| 9ea386ecc4 | |||
| 22d4c6c601 | |||
| 1145830bb1 | |||
| 00625ee063 | |||
| d88d2713db | |||
| 76f292d40d | |||
| ec1e45d2ed | |||
| 75b0383e66 | |||
| bff6b7ce9b | |||
| 47a5e7ccaa | |||
| d0b28e3cd4 | |||
| 7fad60290d | |||
| b906fdfa5a | |||
| 3e28f8b42c | |||
| a0e921e9ee | |||
| dad6b2562c | |||
| 5038045bdc | |||
| b1c3dc80b1 | |||
| d4fd55b8ed | |||
| e712169daa | |||
| 50dd94e354 | |||
| fbc2122271 | |||
| eed5cdf691 | |||
| 3b57a1f142 | |||
| 94109c93b7 | |||
| 8d495a6427 | |||
| 8db0bf11d0 | |||
| e74e55832e | |||
| 0b0c424b84 | |||
| 6dcc0d420e | |||
| 96c0bea2f5 | |||
| c8f166acc8 | |||
| f5a309d611 | |||
| fa9f4967f2 | |||
| b988bc6790 | |||
| 4232da4ef2 | |||
| bcb2af4a56 | |||
| bdf75d5620 | |||
| 355f73b2a1 | |||
| 370722b086 | |||
| dbd2f69533 | |||
| 29932f9a3d | |||
| b02d1e17e4 | |||
| bda115037b | |||
| 8cae38817b | |||
| e5dc8d14d4 | |||
| 034dac7dfd | |||
| 6a71f718bd | |||
| 7767833afb | |||
| 0dd66a4bcc | |||
| 2df98cc029 | |||
| a5e2f622a4 | |||
| 79c4b59a19 | |||
| 8c0ddab587 | |||
| 6d73caf308 | |||
| 5916ac874f | |||
| bd8f093a00 | |||
| 9a42f02f0c | |||
| 2b6b15480e | |||
| f8754913bb | |||
| 8bff8adc57 | |||
| f432e950ab | |||
| e8e03f7b4c | |||
| b607c8b6dc | |||
| 5b221b1fae | |||
| 818127a446 | |||
| 12efbebe21 | |||
| e43d3536c0 | |||
| 29638438b5 | |||
| ebeefdc447 | |||
| e9289e855e | |||
| 8a633a4f94 | |||
| 67125d5c65 | |||
| 2f2a1d2e13 | |||
| 8edbfcf21f | |||
| de9f813d82 | |||
| 1628d8f44c | |||
| 0841fd7dbd | |||
| 8ed090c2e2 | |||
| 52d1bd8790 | |||
| fda9889207 | |||
| 6d5387eef7 | |||
| 5b53dbeac7 | |||
| c36e8cae40 | |||
| bba6898ee1 | |||
| 29596a7c1d | |||
| e149e85910 | |||
| f677995f77 | |||
| fa335ee523 | |||
| 1918148999 | |||
| 4f44bada3d | |||
| ae746b3173 | |||
| 652a454887 | |||
| e9e0d5255f | |||
| f1f5b44a81 | |||
| 18a4b51d3c | |||
| 57b9a7f561 | |||
| 2b436850cf | |||
| 99d9f40091 | |||
| 29f2173070 | |||
| 1087e57a62 | |||
| 08497a371c | |||
| be412cb5ae | |||
| d1d72f9fc9 | |||
| fb30451684 | |||
| 538c9d90e5 | |||
| 6b9503ef76 | |||
| b8b9efd633 | |||
| 5a4923e5cf | |||
| f0f4c57362 | |||
| e2f9fbb9a4 | |||
| 372a86485f | |||
| cf3448bc82 | |||
| 30cfe0c918 | |||
| 6473ab6e26 | |||
| 424a4cd0f1 | |||
| 04f79eaf01 | |||
| 74099cacab | |||
| 60a7ec1cd0 | |||
| 892b332a20 | |||
| a51f1d65db | |||
| 8d1ae35075 | |||
| 2cff2b5ca7 | |||
| 544c1def4a | |||
| 1fcac9485b | |||
| 49cb0f0bba | |||
| b813e55194 | |||
| c1ab574a73 | |||
| 67e76b5d8c | |||
| ccfd0660d5 | |||
| 5d3e92d114 | |||
| 90a921fa4e | |||
| cbd411bbf8 | |||
| fccff55001 | |||
| 3a0a455b2c | |||
| 1a6908043b | |||
| 5c14ff9884 | |||
| 149536b182 | |||
| a3b8f778f2 | |||
| b6a94bb61c | |||
| 190a0fa719 | |||
| e544491ef7 | |||
| 762aa0016a | |||
| 452c224110 | |||
| ca33241ce2 | |||
| 8b77fa9e99 | |||
| 3f949dd3e4 | |||
| 3a1db8ca02 | |||
| c4b58bb298 | |||
| 739d8efe82 | |||
| e58f1ac62d | |||
| 6bc28cbfdf | |||
| 6ff2ac97b0 | |||
| 3746f32529 | |||
| 6f42b348e2 | |||
| 37268113fb | |||
| 7c59381604 | |||
| 5d31ac7a43 | |||
| 876489700f | |||
| f591d9703e | |||
| 91545c9732 | |||
| f57d23fef0 | |||
| f00c390e37 | |||
| 0fdef0f317 | |||
| 260cb9ce77 | |||
| 7e311ab0cb | |||
| 07ba966e08 | |||
| a4848044ea | |||
| dabc642ca4 | |||
| 52b522c8b1 | |||
| ec7d50f052 | |||
| f58502c8a8 | |||
| 99c1ebc7fb | |||
| fce0fea1cb | |||
| 2d0608de52 | |||
| cad31397ec | |||
| 0708bc7569 | |||
| 9a1a419aef | |||
| e8a590b0d4 | |||
| 4738ff66b4 | |||
| 3964f72cea | |||
| ca19c65b02 | |||
| 04bb6891ec | |||
| b88eb68547 | |||
| ae59fa3428 | |||
| 7e088e0262 | |||
| 179215e651 | |||
| 5ed786adc0 | |||
| d522d36899 | |||
| 2d0336058e | |||
| 8b631bbcc1 | |||
| fc2b88da4b | |||
| 102fbf4a16 | |||
| 57eee82fa5 | |||
| 0c45d2b883 | |||
| 0fef9b03e3 | |||
| 32057efb5a | |||
| 4df9192586 | |||
| c4c140af36 | |||
| 4e9b41645f | |||
| 7d6941fe3f | |||
| 992de108ca | |||
| 325d1f6547 | |||
| 18f3280525 | |||
| 44fdba132c | |||
| 216eea9d2c | |||
| 514a2cb687 | |||
| cd83b6bed9 | |||
| 77ec1c7ead | |||
| 129b5d9258 | |||
| 909101cd8d | |||
| 880606908b | |||
| 5281ccb3f5 | |||
| f1b83ec805 | |||
| 04d3961d24 | |||
| e013082442 | |||
| 03f11ab70a | |||
| 942de7335c | |||
| 010f15641e | |||
| c7c6bc888a | |||
| 8bc91d3b83 | |||
| 6b53afe6e6 | |||
| 59837c47f0 | |||
| cdd40a20c7 | |||
| 00eaa55cc9 | |||
| 847f8744b3 | |||
| 6affaf9ded | |||
| a5bd857efd | |||
| 2f7176b102 | |||
| 32b3998094 | |||
| 4132a66165 | |||
| 5d2ee35fe6 | |||
| 0af24e9a2c | |||
| 04920c0e9a | |||
| 9dc37e84e6 | |||
| 18feb2bfe7 | |||
| 3fa4029bc2 | |||
| 0ee004cec6 | |||
| 97d095a055 | |||
| 09f5c141df | |||
| 26a055eb1c | |||
| 659c0c400b | |||
| 19d8a5e846 | |||
| 56b924a286 | |||
| 792dcf0157 | |||
| f2fa9978cf | |||
| 4c8289336d | |||
| d7192c1d97 | |||
| fdc5d46fd7 | |||
| 921c70dcd7 | |||
| a0d748ef9f | |||
| 6f4f06f1b1 | |||
| cdb4dd8427 | |||
| 8cf89f5eef | |||
| 4b0a2cff2a | |||
| 91a5a2b844 | |||
| b6ba761551 | |||
| c7a030aa37 | |||
| 89043b0d46 | |||
| f18c33b249 | |||
| a76c835477 | |||
| fdfe2e7270 | |||
| 1d99757bca | |||
| 14796663b1 | |||
| a94c55304b | |||
| bf60c704da | |||
| db02e7c08c | |||
| 38ed17cd9f | |||
| 97264b726f | |||
| b7db7c5454 | |||
| 1f0c0cb71d | |||
| 28884e1f4f | |||
| a877af562a | |||
| d836f13b88 | |||
| 1ddc3e6a62 | |||
| 71df4f824d | |||
| be3e62f75a | |||
| 27d8f05b52 | |||
| 465be8ddd2 | |||
| f971f18ecd | |||
| aff3e64619 | |||
| 5fb7745c66 | |||
| 85837924a5 | |||
| 908c3ae50b | |||
| 58e143f1b1 | |||
| 2c51a1e1a0 | |||
| 771ccdd308 | |||
| 2b9aff3640 | |||
| ec2591f907 | |||
| 42331ce8ba | |||
| cf95f64961 | |||
| 7e1f3c8cb5 | |||
| 585e4cc35c | |||
| 09d884737d | |||
| 274370c28c | |||
| e8f8a43f7a | |||
| 360d1da2f9 | |||
| 56210442a2 | |||
| fcd87b52c0 | |||
| 72d0305cdb | |||
| ce9d93240a | |||
| e1d8d7619b | |||
| a7b6ca2864 | |||
| 0454fdcbff | |||
| c7b37d35bb | |||
| 37ff6c2b01 | |||
| be6d7c2aab | |||
| 829bffd007 | |||
| d94e16eecd | |||
| d06f176c98 | |||
| 5c7af2151b | |||
| 2f593d15d5 | |||
| e246f12d70 | |||
| 2235bba872 | |||
| 6abede9c33 | |||
| f1de52b962 | |||
| e671686a3a | |||
| aae67dd794 | |||
| bdd51539f4 | |||
| ea681a65ea | |||
| 88cc8885b6 | |||
| 52ec4f09a5 | |||
| f4efdd9700 | |||
| 4d486c0e5c | |||
| c7c21969e8 | |||
| fd033bdf60 | |||
| 8f57d15eac | |||
| b7c4e8f93c | |||
| 7e5aca41e7 | |||
| a2cb8ae60f | |||
| 48efe6b319 | |||
| faed5f59c6 | |||
| 0273a8b8df | |||
| c09f1f46df | |||
| ba39b6366d | |||
| 39a8e8aad4 | |||
| 69ee09fa59 | |||
| 787d0b69e2 | |||
| 3f441d8ba6 | |||
| 97aea9d513 | |||
| 2e99cc7c31 | |||
| c9a061abf0 | |||
| d59328ee1f | |||
| 1f02ec02ef | |||
| 34123662b8 | |||
| 37b2bc85a4 | |||
| 6edb6abd44 | |||
| 4132c7fba3 | |||
| dc4f13815a | |||
| 92c4cda97f | |||
| 76f5e4caca | |||
| bd8c2c4e13 | |||
| e57ba44ae7 | |||
| 50d3d32fc3 | |||
| 00025a66e4 | |||
| af8b0d4a46 | |||
| 2a4b9a4360 | |||
| d43ac46eab | |||
| 5c4b062cf8 | |||
| 57a75e380f | |||
| 05c94a3105 | |||
| c381fc4751 | |||
| 0595c7c74e | |||
| b06c55b98b | |||
| ef41f9b280 | |||
| 276e1e5451 | |||
| f4db0eefce | |||
| 6fc1fff9dc | |||
| 8a20796fe9 | |||
| 20eab4e5d3 | |||
| 9ff173f68a | |||
| dddd6ca5ec | |||
| 7243939916 | |||
| c6da0fb58b | |||
| debc2db34c | |||
| 444ea0f4b5 | |||
| 8549bd9223 | |||
| e169a0d276 | |||
| c8d5633d81 | |||
| 80df3e013c | |||
| 4acf521609 | |||
| 5ea46cf22e | |||
| 93819cbb6c | |||
| c739e3bd4c | |||
| b18de1b0ce | |||
| abd33daec0 | |||
| ac2c0a7f26 | |||
| 8c44daf87d | |||
| a4396576c8 | |||
| bc601c472c | |||
| cd687d2ac4 | |||
| ecd315c0f2 | |||
| 3298fdf277 | |||
| 0759cc0c51 | |||
| 8d122425a0 | |||
| f71cb12831 | |||
| a36b6f5c75 | |||
| 78605a758d | |||
| 32c7451191 | |||
| fe2053a7be | |||
| 012597b112 | |||
| 6b0f49970a | |||
| 6783cb7e8c | |||
| f7e4433a1d | |||
| bfbd097db5 | |||
| 596ecbdf66 | |||
| 9bcb86e8bc | |||
| b6ece85856 | |||
| fb3ccff617 | |||
| 6d7de854da | |||
| a4af2a79d0 | |||
| 932e7cd966 | |||
| a23e0f56c6 | |||
| c16686fd4c | |||
| 7c3226ee64 | |||
| a927d44e0e | |||
| f3af5d27bf | |||
| 537e178e09 | |||
| e22841148c | |||
| 595a3a2d5b | |||
| 1b3718bd12 | |||
| 73bf066318 | |||
| 7f4d0ee8e2 | |||
| f7db84972f | |||
| 8e72f98bcc | |||
| 01e0b8ffba | |||
| 7402746dbd | |||
| dafa567eaa | |||
| f7dfd67770 | |||
| cf7bc43c5e | |||
| 38d9609147 | |||
| 2b1827f5cc | |||
| 3b5193c28d | |||
| e8a2297ac0 | |||
| 066c135629 | |||
| 425323f917 | |||
| fa0104422f | |||
| 515cedf160 | |||
| 6c856be0fc | |||
| 0c7b1e03d7 | |||
| 49eaf6bc45 | |||
| 42a4009d02 | |||
| 7fcb0026f1 | |||
| 97c0613fee | |||
| a9deebaa90 | |||
| 3d354f7657 | |||
| 94d0391585 | |||
| 27a0dd591f | |||
| 1ead5333b0 | |||
| 82b725442e | |||
| f8b7314055 | |||
| 2b32aa83c7 | |||
| f5b08526e6 | |||
| 8c3c3a7ac4 | |||
| 6451b12617 | |||
| ae9acf59b3 | |||
| 3ec39aa295 | |||
| 8f5a7dd59c | |||
| db87d4f40d | |||
| 4b8fab54c3 | |||
| 4514901459 | |||
| d315d4212b | |||
| 5b8b08145b | |||
| 3cc8e73ab4 | |||
| fb8f4fdec2 | |||
| ef191b136e | |||
| ec365d8b6f | |||
| aa55e20e12 | |||
| 188825d449 | |||
| fba8ed9c89 | |||
| 0fe2b51076 | |||
| 9db0969733 | |||
| 9d31c6ad87 | |||
| 731b91889c | |||
| 9d2b0f17f8 | |||
| 20b23b50fc | |||
| 69dfaa931a | |||
| d6371ee369 | |||
| 432c369a66 | |||
| 2d94fd51bf | |||
| fb63bd1261 | |||
| cd62475738 | |||
| 1727a7b97b | |||
| 0200808f90 | |||
| cf41b7a483 | |||
| 530a569cfa | |||
| 32c3d8e44e | |||
| ae69a418ff | |||
| 25039f88e8 | |||
| 1b83bd7be2 | |||
| a920d2c396 | |||
| c1b7e94e82 | |||
| 5a1f2e74e4 | |||
| b4d490ed3c | |||
| d36829994f | |||
| 122d58b0f8 | |||
| 421563a72b | |||
| b2d7bf93d2 | |||
| b0ce5eaee9 | |||
| 412a0ba163 | |||
| 0664af34c5 | |||
| 3b2fa29821 | |||
| 0aef5a4154 | |||
| 1df767b7c4 | |||
| 1925c144b0 | |||
| 8784ed836a | |||
| 8c09ee456d | |||
| 454b1466a3 | |||
| c6689c3fa9 | |||
| 0744c4f9b4 | |||
| 4347b8b5a3 | |||
| 69a81a3fae | |||
| f28c9f7b0f | |||
| 21e56e0b1a | |||
| 02f44264d7 | |||
| 5d8ea2192a | |||
| 8844390090 | |||
| 83aceebe33 | |||
| 9f9d897dbf | |||
| a998c9a989 | |||
| 5d07fa172e | |||
| 565e50a35d | |||
| 30d0d4f7eb | |||
| a9bb9631c2 | |||
| 9f85019101 | |||
| 6ab163b2ea | |||
| 867132c84c | |||
| 7ee9eca0dd | |||
| f4c1ef5ee6 | |||
| 5f20b53485 | |||
| 5fd6bd3148 | |||
| d767675dd9 | |||
| 74f36ad374 | |||
| 22dbb5e529 | |||
| 2c3638d394 | |||
| aad6bd50e8 | |||
| 28023d8a45 | |||
| 1a2023a9a2 | |||
| ad6bc34d62 | |||
| ee083cda00 | |||
| 45a0ac3f01 | |||
| 4a4dcd8072 | |||
| 608845391c | |||
| a4c482ae5f | |||
| ce113b557a | |||
| e72760925f | |||
| 2a63780235 | |||
| 7d7a424a9f | |||
| 6ba4b23ece | |||
| 1df4697a52 | |||
| ae479775b8 | |||
| 5a443b287f | |||
| 24b609173d | |||
| eb050392a2 | |||
| d7ea576d2a | |||
| df6cfbb25c | |||
| 3e86011f51 | |||
| 166276c710 | |||
| e4e853acf7 | |||
| 17519e8408 | |||
| 8d5fcda096 | |||
| 2fe58ef8c8 | |||
| 17c863893e | |||
| b5b6485c2c | |||
| e09c6670bd | |||
| 6b95d09719 | |||
| f49cce98b9 | |||
| cf65def417 | |||
| cc00ed83a3 | |||
| 9a5def616b | |||
| 1b8fabe923 | |||
| a9c7b696fb | |||
| 6610193258 | |||
| cb7bd4d1f2 | |||
| 779e7e0569 | |||
| 4ee89948d9 | |||
| c5c2f83c90 | |||
| a0d5991d01 | |||
| 00245ad378 | |||
| 591a20c151 | |||
| b39f502c6c | |||
| dc9e7d2f9d | |||
| 821ed4f56f | |||
| 822d636812 | |||
| 862187c69d | |||
| e37340f6c2 | |||
| 844bbca3de | |||
| 83424e1ee3 | |||
| 4263144614 | |||
| f3e75cc634 | |||
| 633c037ba3 | |||
| 5078cdd8de | |||
| be8e832481 | |||
| 8502b863f2 | |||
| 76043fb7cb | |||
| 42503feb62 | |||
| cf9ad4d02e | |||
| dd643109cc | |||
| 90031b2296 | |||
| cfdf380c05 | |||
| b028588877 | |||
| 8f7d60dd21 | |||
| 2f9266b6ed | |||
| be67f55c79 | |||
| be24d649eb | |||
| 1729ce06fc | |||
| 6508fd5dc2 | |||
| 16ef7658b9 | |||
| ca8d5fd235 | |||
| 3c4f77aa12 | |||
| 40ba11d99f | |||
| 7d53a47f50 | |||
| 5574b6e8df | |||
| 2f4778f3ac | |||
| ba793cf5b5 | |||
| cb7d4db69c | |||
| 89fd44467f | |||
| 96cca5e383 | |||
| d98a86fafd | |||
| c7f69a5424 | |||
| 7c8a60789f | |||
| a03b932253 | |||
| 5735a3525f | |||
| 1dd6ac7d80 | |||
| eb63f5fdc8 | |||
| 63b4255dae | |||
| ea7d79f95c | |||
| 088fd9b32c | |||
| b3335c22fb | |||
| 307f82daa2 | |||
| f3f7e144eb | |||
| 9d3cae1dee | |||
| d5e6985609 | |||
| f25378219b | |||
| c656d0d4f5 | |||
| e9d77c6bc2 | |||
| 32897d3017 | |||
| 5d02e74406 | |||
| 301a7c790d | |||
| fd5ebbfd22 | |||
| 49688b828f | |||
| e02ce241ec | |||
| b128c9314d | |||
| c71bcb6415 | |||
| 847bf85360 | |||
| a15025e95b | |||
| 6a949d16c5 | |||
| 022bef09d0 | |||
| 692b26754c | |||
| 9438456e94 | |||
| e7e8396543 | |||
| a91c90fad4 | |||
| bb90a37460 | |||
| 8c6b01b485 | |||
| 02e730ff93 | |||
| d8580214d5 | |||
| 19ef51cfe2 | |||
| c33116119e | |||
| f900c43463 | |||
| 9bea04bfa2 | |||
| 7c51ccb7f3 | |||
| 0680b7b1fc | |||
| 9e0ae8b193 | |||
| b4052c647f | |||
| 9b8702e26d | |||
| f92371cd9b | |||
| e57ee85a7d | |||
| eeee5a2a36 | |||
| 44a31724ec | |||
| 45cc28b4f8 | |||
| f47c5db866 | |||
| 6778d4ce45 | |||
| da58be3f38 | |||
| 89fc563f00 | |||
| 787aba1e19 | |||
| 340deff5fa | |||
| 453f8aa9e1 | |||
| 9ef4f66ec3 | |||
| 6b0acb1d7b | |||
| d7fa7156df | |||
| ab689b51df | |||
| a3c6ef6d33 | |||
| e6ccd09ad7 | |||
| 9373026960 | |||
| 5f9bbb6648 | |||
| 8c70c0d837 | |||
| e95a21f83f | |||
| c5c0ab72ef | |||
| 21a135f795 | |||
| e379b9c46f | |||
| 0f06ac6577 | |||
| bf3abc59f2 | |||
| a6496a970e | |||
| 1cc5dd80d2 | |||
| 7fe2f523d7 | |||
| 50789fae7c | |||
| 85a25b6fb6 | |||
| e640ac436c | |||
| ed842a6172 | |||
| a7af978e50 | |||
| 9350f017b1 | |||
| 67802ed5a3 | |||
| f535e393e8 | |||
| 376393b292 | |||
| bec209f61b | |||
| 5e69c494ce | |||
| 37170d604d | |||
| 3053e0586e | |||
| e0e6fb0e09 | |||
| 3d4821cc84 | |||
| 27dec697ed | |||
| 74eda2bc75 | |||
| 86c6bbe806 | |||
| 292a410f1f | |||
| 8afe90afd6 | |||
| 23a9a647c7 | |||
| 8d4becef2b | |||
| 781f393f91 | |||
| f860e231f5 | |||
| 92477b7e5b | |||
| d949a2de2a | |||
| 99b429cf28 | |||
| 2b03bb9442 | |||
| 8d1bdf5463 | |||
| e1fee23cdc | |||
| 0a07111084 | |||
| 65e1c2afd4 | |||
| 7347a4f3a9 | |||
| 06ed8fec8b | |||
| b52ab13495 | |||
| 09f05f648f | |||
| cb2b1c8b9e | |||
| efc4623492 | |||
| 1f372d64ad | |||
| 483d14ae5f | |||
| c95548d935 | |||
| a195e7e702 | |||
| 10f79238b7 | |||
| 80a439e0a8 | |||
| 648c7d409c | |||
| 37e346e6ea | |||
| c18d4a47ac | |||
| d09157ce83 | |||
| 41278a290b | |||
| 1736237419 | |||
| 0eec013321 | |||
| 022b1da059 | |||
| 87e4194433 | |||
| 2e0dd555f9 | |||
| b781190cc3 | |||
| 562bcaa395 | |||
| 023c193b78 | |||
| 65d8fb79b5 | |||
| 1b931bf9e1 | |||
| 1fdbe61317 | |||
| a9dc31ad9d | |||
| f035b9f31f | |||
| c22cde60d7 | |||
| 62c6786d38 | |||
| 8846fa5da8 | |||
| 633bbd4047 | |||
| f9619cf5b0 | |||
| 40ce9b63bc | |||
| c111a3eff2 | |||
| d3b12a97e2 | |||
| 294f1ebb81 | |||
| a978d91e94 | |||
| 3339ea8eb6 | |||
| 970a91705e | |||
| e443dd1699 | |||
| 534a32bcb6 | |||
| 795f680c27 | |||
| 80507820af | |||
| 6a702ed88a | |||
| 39cedaa618 | |||
| 8cc47f4a9c | |||
| deda80242a | |||
| 10bd972d34 | |||
| 70b7df6074 | |||
| 66e7a688e5 | |||
| 70be29ceae | |||
| 382ceb8803 | |||
| 5fd8269dcc | |||
| 0f1338921d | |||
| b32363b848 | |||
| be56b6f609 | |||
| c46a66565c | |||
| e538e61172 | |||
| 4d092dcbc2 | |||
| 8ec337c589 | |||
| ac232a397a | |||
| eb36c44613 | |||
| a00ca0bd19 | |||
| 360d4608df | |||
| 71de50fbfc | |||
| 0e142967fe | |||
| 5c11b8a636 | |||
| cfa922686a | |||
| 2b7f1058f3 | |||
| fb01fb3e3b | |||
| edbbe1f241 | |||
| bd6fa8d322 | |||
| eccdd21cbd | |||
| 64f3174dd4 | |||
| 056ed9cbfe | |||
| 78de273af0 | |||
| 31c1453f8f | |||
| 30cc8586ba | |||
| b88e415907 | |||
| e0a347a23a | |||
| 306dec6af6 | |||
| dcf1439005 | |||
| e1d7f62ca6 | |||
| 8548f26143 | |||
| 7cee19423f | |||
| 6a3db2197e | |||
| 04d5b63116 | |||
| 6bb6068c30 | |||
| e9e3c63aed | |||
| 540bdce40b | |||
| 2312fd7d57 | |||
| 404930adef | |||
| d1938abd15 | |||
| 01ec8b21f9 | |||
| 6045f5a053 | |||
| ba38f4e03b | |||
| 99c5fa5e78 | |||
| 0888b52ba1 | |||
| 1d175ee3f5 | |||
| 1142d7e68a | |||
| c9ec702915 | |||
| 33895cf225 | |||
| 16b14f6827 | |||
| cb5cd1d26f | |||
| 67e26a426f | |||
| e44bf2aad3 | |||
| e84f7ad72b | |||
| 755224743e | |||
| 254846df4b | |||
| f8951bfc50 | |||
| ce9df76a3d | |||
| 5bde1bfb94 | |||
| 3643f6a0a0 | |||
| 8f39edcdd8 | |||
| 4ccf6f3e99 | |||
| eeda67769c | |||
| 937ab77169 | |||
| 3fc7bc2667 | |||
| 6a8bfc39da | |||
| 15b9162aa4 | |||
| a0eda881a6 | |||
| 3b7a3149a5 | |||
| 06e230ebfd | |||
| 75f78b45d3 | |||
| 54cb306903 | |||
| 24df33c505 | |||
| cef1f81f5f | |||
| fd305ffe8f | |||
| a848e5ea67 | |||
| b1b8d89f7c | |||
| d5747dde17 | |||
| 66998590dc | |||
| 96e50d0a6b | |||
| 413c84d65e | |||
| ec73e10c56 | |||
| 0c7cb8c37e | |||
| d907f4eaff | |||
| c0b2e83211 | |||
| 787e19ae40 | |||
| 87c64c59e0 | |||
| 5cd6f2c71a | |||
| 8a020258c4 | |||
| ffeb873907 | |||
| 0a03aa949b | |||
| 978af419b3 | |||
| 3cc6ba9a66 | |||
| c9b81d217f | |||
| 30fd9c6d16 | |||
| 8ae770610e | |||
| 5f2f9cccaa | |||
| 03717ea7e9 | |||
| 39ca2aa9f4 | |||
| 3dd48ee1e7 | |||
| b56cd3e390 | |||
| 6b43254b79 | |||
| d34855e7fb | |||
| bdb39b8226 | |||
| 8d81f4fb91 | |||
| 24f9346652 | |||
| 6df49efaa4 | |||
| a8dced149c | |||
| 6ce95635b6 | |||
| 2b1aa47893 | |||
| 1d18f11678 | |||
| 0ca71b16b9 | |||
| 036f412d0d | |||
| e0960d9848 | |||
| ff7afb8176 | |||
| 0cc317b140 | |||
| 85fa69c58c | |||
| e171c28701 | |||
| c9c46c24a6 | |||
| 02bb6bd826 | |||
| 5b9fc80258 | |||
| eb11089c4a | |||
| b2f2272b32 | |||
| c9fa89bbdd | |||
| ecb321f0f1 | |||
| f7c633be86 | |||
| eca4267636 | |||
| a958217c38 | |||
| c8ac0ceb49 | |||
| 75799f4652 | |||
| eea10d8fe1 | |||
| c25930b7f5 | |||
| 1740a23294 | |||
| 0ff7b7dc11 | |||
| 0c355d3e8b | |||
| 1a7321c98f | |||
| 859fdfd2c4 | |||
| ccdaace50c | |||
| fcdf0c8dfa | |||
| 34214f571d | |||
| 8fb3b11e00 | |||
| 2cea0d3dfa | |||
| b4c3ba4dda | |||
| 4d823595fe | |||
| fdd80f9d5f | |||
| 715205f97b | |||
| ba31d2c112 | |||
| 7c7373427e | |||
| bb5fc1cb4e | |||
| a785480d28 | |||
| 0f7a739e2f | |||
| d2a8d9bbe5 | |||
| 52f8aec04f | |||
| fc7a2564f0 | |||
| b6467d0013 | |||
| 46c6447b92 | |||
| 439c2d03c2 | |||
| bde506df1c | |||
| 7432d3798c | |||
| 4446fc3e1e | |||
| d446f0671c | |||
| 554edcd045 | |||
| f8e337c783 | |||
| 3f9e5f11ca | |||
| 9ddee6c61c | |||
| cfd77c3888 | |||
| e3325e0926 | |||
| f439108352 | |||
| 4cfad33578 | |||
| ac6b55c447 | |||
| 0f202575f9 | |||
| eb7ae8a564 | |||
| 204c889281 | |||
| eff31256f9 | |||
| 13f4746f52 | |||
| 183da6b29b | |||
| 0d9fd75b0c | |||
| d9868870e4 | |||
| 7e61533caf | |||
| 06a7e938e4 | |||
| 2e1214efbe | |||
| d6342f7269 | |||
| ad8c028e73 | |||
| df80738233 | |||
| 35c4fbdca8 | |||
| c5db43985c | |||
| 83810d6c00 | |||
| b8f2360b89 | |||
| b480e4a0e6 | |||
| 3c1f8389c7 | |||
| 2f911bc109 | |||
| 5688582f4d | |||
| 20774158ad | |||
| cb5e72cc30 | |||
| 2979479269 | |||
| 8bbf326805 | |||
| d42d29fa52 | |||
| a5f060f358 | |||
| 2602b75194 | |||
| be5a3261f5 | |||
| a449316999 | |||
| cffffdae7c | |||
| 707af05520 | |||
| 2abb2a47f4 | |||
| 4aaf33164f | |||
| 9e7aebd6dd | |||
| a647a2535b | |||
| 5a45859f51 | |||
| 267b8aa783 | |||
| 5db07574c9 | |||
| cc5c53d470 | |||
| a929e8112b | |||
| 1051e0e60f | |||
| 8c196a35a7 | |||
| 791583399d | |||
| 0bce4cdc91 | |||
| dd2bebc7e8 | |||
| 17d26aaf4e | |||
| 06bd432430 | |||
| c894733706 | |||
| 8c98585497 | |||
| dd2a897192 | |||
| 591c2451d8 | |||
| 35ac475558 | |||
| fdefb286b0 | |||
| ddc15c0416 | |||
| 37649bca06 | |||
| ced5e755b5 | |||
| 1e4d83ae41 | |||
| 86acc27ce6 | |||
| a85a7782a3 | |||
| 17fc09190c | |||
| 0376652980 | |||
| 99e029c352 | |||
| da011d38cf | |||
| 70f5349138 | |||
| a70370d239 | |||
| 9e19cb8582 | |||
| 9157edb3f9 | |||
| 12df1e773b | |||
| 661f52373e | |||
| 856e2f8de2 | |||
| ce1ed005a5 | |||
| 637e090243 | |||
| c8f17169d9 | |||
| 66abd390bd | |||
| 692078e1a0 | |||
| 209f2be304 | |||
| 15f42c083a | |||
| a8161f301e | |||
| 630ab081c6 | |||
| 204e3bae4f | |||
| 78bb709ddc | |||
| 6276893847 | |||
| b1e08d791a | |||
| aa77c5f4b4 | |||
| 591b7388fe | |||
| ee82037ba9 | |||
| 3e7b9a000a | |||
| d0700cb361 | |||
| 1021889c01 | |||
| 4c912d6fe0 | |||
| 6417e0e098 | |||
| 3ed31ad824 | |||
| 99190e4615 | |||
| c520ad8294 | |||
| daa42fcadd | |||
| 05357a6398 | |||
| 76c7733f77 | |||
| 8d83e37ac7 | |||
| b5590ce449 | |||
| 1348ba81c8 | |||
| 963ba96f6c | |||
| 14cec30749 | |||
| 4693064fd3 | |||
| 3817677fc8 | |||
| 9c36ab7e2e | |||
| 9430b4ee59 | |||
| 45d718820a | |||
| f7abb8fedb | |||
| 0f7f6d0e1c | |||
| b5f6ede377 | |||
| 4b2a991dc6 | |||
| 2f908b7c36 | |||
| 1b00b98a8f | |||
| 99bfbeb7f3 | |||
| 69d30651cc | |||
| 20475c59e1 | |||
| 421e786e1d | |||
| 9893b71483 | |||
| 260f3435e1 | |||
| 9e69bd6ad7 | |||
| a96142ffea | |||
| 884eb3acc4 | |||
| 90c20ddae2 | |||
| b07ce785c5 | |||
| 80f8b7a96e | |||
| fd279f0e38 | |||
| f81b6abda8 | |||
| faf58781e9 | |||
| c0ff16e3ac | |||
| fe986a320a | |||
| 8f11a8e413 | |||
| c40f5f3ccf | |||
| 94be37cef7 | |||
| bcf9713e07 | |||
| ca721658e9 | |||
| d34315d33f | |||
| ccdf8d467f | |||
| 93910f9013 | |||
| aa8f431cc2 | |||
| b0b3e7c0c8 | |||
| 31105757e6 | |||
| 45a81a2a7a | |||
| 09cb38f265 | |||
| ffd8e9dca9 | |||
| e4169def1c | |||
| 6262b043fe | |||
| aa539e1075 | |||
| 9d412f10e1 | |||
| e28ebb94e9 | |||
| 9dc0c6e256 | |||
| 697fd4ee9a | |||
| 8472e4196d | |||
| 7a7c3ab3f3 | |||
| e72c0d27af | |||
| f95cd5edc5 | |||
| ba0b989b6d | |||
| ccccf26f59 | |||
| 484b2e9f0d | |||
| 389a637575 | |||
| 037b34d9e9 | |||
| df22be6901 | |||
| abd1fb2040 | |||
| 8c1c0c1811 | |||
| 5529e36b81 | |||
| 5327277ee4 | |||
| 52df00721c | |||
| bb26c99660 | |||
| da94aef079 | |||
| 3645ffaf73 | |||
| 5668e1b188 | |||
| 751154fc3e | |||
| 500855f426 | |||
| e9b9da2969 | |||
| 2868cefc53 | |||
| fa93e06bd5 | |||
| 38c95a5542 | |||
| 361a957e3c | |||
| 098a208ee0 | |||
|
|
471a0d4d43 | ||
| d7a884f651 | |||
| 026560c427 | |||
| 86b97d238f | |||
| 3d2cdc159b | |||
| e3743cc01f | |||
| c7c29daf5e | |||
| 7d599854fb | |||
| 797db3e021 | |||
| 474446218d | |||
| 264d74caed | |||
| e281bc9213 | |||
| 64842065a3 | |||
| 5ae6f41e63 | |||
| 9bb3f8c668 | |||
| 10d49e511c | |||
| 1bd545590a | |||
|
|
e1f39b7b0d | ||
|
|
49d2fd3757 | ||
| 8454b48956 | |||
|
|
86fb63c679 | ||
| db01f8cefc | |||
| cd96900046 | |||
| 6360cd7297 | |||
| b5dc259687 | |||
| f880bc6659 | |||
| b2d7a04a09 | |||
| 6f1b0aca76 | |||
| ef1e0b0371 | |||
| 4ccb726cca | |||
| 24a145b489 | |||
| 16306684d3 | |||
| 5f9942cf03 | |||
| a55be71914 | |||
| 098c979f2d | |||
| 8ad5460831 | |||
| ff0c4f2019 | |||
| 4e933b9a7c | |||
| 020f72c375 | |||
| 7add629792 | |||
| fa0444daa1 | |||
| c09dfcc4f5 | |||
| a115153dd0 | |||
| 8036f787e1 | |||
| e548a3e8ed | |||
| 74a23f1132 | |||
| 5553fe5f70 | |||
| 66a6687039 | |||
| e3e50aca2c | |||
| 7b433e3f4e | |||
| fa5e4216a8 | |||
| 3831e387a9 | |||
| 35820ef0da | |||
| a480e40afe | |||
| 3194fb35f7 | |||
| 729975b145 | |||
| 2dbda84ef1 | |||
| 71416fcd25 | |||
| 0119cdfe1c | |||
| 20fbb27afc | |||
| fe268c12b2 | |||
| 32a027e610 | |||
| f26fb23255 | |||
| 7c2d01c5f4 | |||
| dd01874b2e | |||
| c0c9cf279e | |||
| aa24e18909 | |||
| 5b3f712e0f | |||
| f48208072a | |||
| 4f5cd005b3 | |||
| 36a6edc51f | |||
| e3f6cda58f | |||
| ee6eb49354 | |||
| ea36e50ea0 | |||
| 6d5a14b335 | |||
| 7ccc752b00 | |||
| 6bb448708b | |||
| 49844da0e6 | |||
| 9dfe247729 | |||
| 9e680badec | |||
| f2224d5005 | |||
| 450b17807a | |||
|
|
a9c73175e2 | ||
|
|
a6d0252dd4 | ||
|
|
0068f6c0fd | ||
| 1fe15afb57 | |||
| 20b899fd5e | |||
| 45d799bd36 | |||
| def29aeb96 | |||
| a97de592df | |||
| 0653f4f69e | |||
| 5c4fb10056 | |||
| 060366684e | |||
| 1a1383c724 | |||
| ce5c914566 | |||
| 0e9ecec2ed | |||
| cc1c42b8c3 | |||
| 3487e3780c | |||
| 0b5fffc120 | |||
| c3bc9f1b2e | |||
| 368b654655 | |||
| 42cd9aedca | |||
| 63d63f953f | |||
| 10856b2ed9 | |||
| 36e0129348 | |||
| 70c76bd4a8 | |||
| c4ed2e7f22 | |||
| 5f927717b6 | |||
| 711b0a580f | |||
| 758b883f0e | |||
| a1f935579b | |||
| dc253cd388 | |||
| b7c2e1d15e | |||
| c96029fa1b | |||
| 64f6d92f04 | |||
| ee154327ec | |||
| 69d4c89aa6 | |||
| eca9fd9eab | |||
| 6cb78eeb2f | |||
| dc723b7ce3 | |||
| f6a1fe7dc0 | |||
| 1078c49269 | |||
| ebb6378da8 | |||
| f472c58591 | |||
| ecd9cb5d85 | |||
| 51818852a4 | |||
| 0de914aea5 | |||
| f9f37a7a48 | |||
| 209dfd69fc | |||
| b47cfebeb0 | |||
| c8326018bb | |||
| 1a72a54633 | |||
| df2c0b3e20 | |||
| 8fcfd18515 | |||
| 228c7cea97 | |||
| e0ed57b91a | |||
| 0c438ebcf5 | |||
| cbd748d909 | |||
| 166cff5088 | |||
| 61787846cc | |||
| 2af96edaea | |||
| 3231cc6b4d | |||
| d392d5d593 | |||
| 638fb898ff | |||
| d8efcb7490 | |||
| 0deb2a2ab3 | |||
| 6d970d4f3c | |||
| 77a570f8a5 | |||
| d312d8a5a4 | |||
| df951e4a4d | |||
| c634f33e67 | |||
| 3913e07f81 | |||
| c07d1c23e1 | |||
| 7e9eb6b6df | |||
| f7d2b04941 | |||
| 10cef97474 | |||
| 4215fd98ec | |||
| 8d0a327aad | |||
| 8e1f89440e | |||
| 2de57c1ec3 | |||
| 4b65f3bb95 | |||
| 86b9a40ae7 | |||
| add1004108 | |||
| 652362a127 | |||
| 465a712252 | |||
| bc55885778 | |||
| 4246f33642 | |||
| 4468aa0ee1 | |||
| b8d15cc1fa | |||
| 2040d530b8 | |||
| a4c264d8db | |||
| 0d6e9afc0a | |||
| 0707571945 | |||
| 8231420c5e | |||
| 47f86347a4 | |||
| fb36eee3d0 | |||
| 5fb7586fea | |||
| 298f7a2888 | |||
| 6a094194f6 | |||
| 54413efce4 | |||
|
|
f0208ec71a | ||
|
|
9227ed0ecf | ||
|
|
e149d44a93 | ||
|
|
f88484a79d | ||
|
|
9a1e33dfd6 | ||
|
|
4c78144b47 | ||
|
|
d99acc979d | ||
| be6d36a5c8 | |||
| f2c1c26f40 | |||
| 9adfbb822d | |||
| daa09aff86 | |||
| 12d38a7e4a | |||
| 937109896c | |||
| 38b8f34b28 | |||
| 9a23b29c12 | |||
| 0f898ff011 | |||
| 8759357ec7 | |||
| 886ad07eb3 | |||
| 1c648d70c3 | |||
| 4c825252ed | |||
| 30a524b22c | |||
| 6fd18236eb | |||
| 1d7de75889 | |||
| 1192ef3073 | |||
| 0157f8dc04 | |||
| 756e6c521f | |||
| bdde88ebae | |||
| 4c5992ae40 | |||
| 03807c5c23 | |||
| 43a08a9628 | |||
| fe9b36140a | |||
| 532d48529f | |||
| 5b8f2b6d74 | |||
| 4d2cc52658 | |||
| 75ee64909e | |||
| d4c486abf1 | |||
| 437f943e37 | |||
| 9644d6b966 | |||
| e4f54cb2f7 | |||
| 487f516a3f | |||
| 7a800d7cf0 | |||
| 6da0ceb35d | |||
| ccb934e2b5 | |||
| 0a26fa9911 | |||
| 45a0675436 | |||
| 0f4f874587 | |||
| 3b00641d17 | |||
| a228728445 | |||
| d0ccff195f | |||
| 26dffce470 | |||
| 5840dffe50 | |||
| 25380b8da7 | |||
| effbbf22d9 | |||
| 4daef05550 | |||
| e1bbb4261c | |||
| 5da396c8c3 | |||
| 58b7f567e9 | |||
| c494a44f99 | |||
| 19fe68dc0e | |||
| 3f82f69374 | |||
| f05068a45b | |||
| 5019c94024 | |||
| 50cf27b6a2 | |||
| 46ff8f0b41 | |||
| 2ccb974fbf | |||
| ac5534d8e2 | |||
| 5ad75dec28 | |||
| 7e80de41aa | |||
| 0bc65c8727 | |||
| 863f87db7d | |||
| f25389cda2 | |||
| 5f22bca0dc | |||
| 0c73b5417b | |||
| 7d1e2f3902 | |||
| cb74a35334 | |||
| 8247f9b56f | |||
| bfc7828b0a | |||
| cd6bd92e3f | |||
| 415c81b181 | |||
| a467f151bc | |||
| c12a3ec726 | |||
| 515f632cb5 | |||
| e6e659bc05 | |||
| b3d4a1276e | |||
| 14ee09a76b | |||
| ebfbd40afc | |||
| 81f04b86f7 | |||
| 1b3be7e733 | |||
| 8ba04142ea | |||
| 5b558ce086 | |||
| 00fae469e0 | |||
| aaba8f0508 | |||
| c6a258eb3c | |||
| 1e62d358dc | |||
| b7b80ffe75 | |||
| 243e9573c7 | |||
| f5c60e299b | |||
| 2b195c47f7 | |||
| d480174107 | |||
| 61ddb8140e | |||
| 9718be824b | |||
| c8280cb8c4 | |||
| 035c187cd1 | |||
| 08d4ceeb32 | |||
| 6be9037f10 | |||
| ba95d0a40c | |||
| af1d2f3535 | |||
| c18c848179 | |||
| d148f3d51f | |||
| cfef8198d4 | |||
| 9a2fc0605b | |||
| d7316a2ef0 | |||
| a26a6e4656 | |||
| 5b4858e075 | |||
| d1f7ae24d2 | |||
| b33b39e8fb | |||
| 58903a6fee | |||
| ad7ea74f48 | |||
| 8c1bbb0935 | |||
| 5e16be0b5a | |||
| 0c76f5f40a | |||
| f6e0dc2182 | |||
| 90dcd600c0 | |||
| e27c64ce15 | |||
| ee436ca9e9 | |||
| 9b36ea4925 | |||
| 415eeaaca1 | |||
| 3c361213c7 | |||
| 4e88ca9820 | |||
| 592447fa15 | |||
| ac265dc2b7 | |||
| dfc7aa23d7 | |||
| 2b10fec175 | |||
| dfbc753fd6 | |||
| 19ca2b6a34 | |||
| 1df07c4bb1 | |||
| abec2b994e | |||
| 2fc5a385fd | |||
| 8a325bab4b | |||
| 94d77bf809 | |||
| 4e0c8e92f2 | |||
| f38f489437 | |||
| 5972be91da | |||
| 277935c25e | |||
| afd595185b | |||
| 4600ebcb21 | |||
| 11092bc4fd | |||
| 401fc257e8 | |||
| cf4a928783 | |||
| 50b7877593 | |||
| c361c5d4ca | |||
| 3ab6046e28 | |||
| 3ec624bd75 | |||
| 3d9d49f617 | |||
| 4012d7387f | |||
| ee054b6f37 | |||
| 29d5d68319 | |||
| 66d8b43941 | |||
| fb5bb1b03a | |||
| 83c3664be5 | |||
| f4442c07a7 | |||
| 6d09431d40 | |||
| a8ec3021eb | |||
| 81a639de98 | |||
| 49567a59a1 | |||
| a2e3bda4ff | |||
| bc4335af82 | |||
| 31d8ce44de | |||
| a35770dc78 | |||
| 25712169ee | |||
| 0c9d13b7eb | |||
| b75e3b8fb2 | |||
| 33f96604ee | |||
| e8a79ebb57 | |||
| ef0b02f4ca | |||
| 6ab0524903 | |||
| fc1963424c | |||
| 7f6579bf30 | |||
| 6d9eb67743 | |||
| 7a58d58470 | |||
| 8488b2a58a | |||
| dbb9f38e8d | |||
| 79bb624ec8 | |||
| eafb897dfd | |||
| 6c56ed4aec | |||
| 155e1e5864 | |||
| 41c2093027 | |||
| 8884d7f9aa | |||
| 795d5ddb69 | |||
| 3da73f5d3c | |||
| bd3f396933 | |||
| aa1256fca7 | |||
| 748c7d86e4 | |||
| aac74e2763 | |||
| ebc70db3e7 | |||
| 870eb57aa7 | |||
| 5f025d8fc8 | |||
| 27c4535bf6 | |||
| 31abb2ae41 | |||
| efa8afa9c2 | |||
| d349796363 | |||
| efb1b9aa47 | |||
| 63d5267913 | |||
| 6e43bb55f0 | |||
| 0c7f78f721 | |||
| 031d0bf887 | |||
| 7a40acc8b5 | |||
| 40a8944258 | |||
| 4467586ca0 | |||
| 2bd1b19388 | |||
| 8c9b541e7d | |||
| 75cfc477b8 | |||
| 8e1b51c96f | |||
| 34b7722410 | |||
| 4430470f56 | |||
| 3d8fd35e82 | |||
| ce7154db57 | |||
| e636c59f62 | |||
| 5059252204 | |||
| 5b4d9331c8 | |||
| d7232b4da6 | |||
| d1be10ab3a | |||
| 955462003b | |||
| 06a9f72ef5 | |||
| 56154d53af | |||
| 0eaef318bf | |||
| 129e762c7b | |||
| 8f36e73b18 | |||
| d1833c5fa6 | |||
| 31e0c14930 | |||
| 94788b53f0 | |||
|
|
4cc5f4049f |
||
| 57808cc614 | |||
| ab23f431af | |||
| fdb4ca37f4 | |||
| 2e63293139 | |||
| 064659e179 | |||
| a29faaa1ae | |||
|
|
1c384e1ff0 |
||
| 539917e24c | |||
| 1b363f94a0 | |||
| 8560fc63fd | |||
| 4b3c854fc7 | |||
| 34e0a8acea | |||
| df4420c6a5 | |||
| f305581cdf | |||
| 9a3b104ec0 | |||
| 7cc51fc13d | |||
| be3880779f | |||
| 2fc39afdcc | |||
| a605654fb9 | |||
| 264da8e122 | |||
| 8f596d8f3d | |||
| 464449df06 | |||
| 8340c0c615 | |||
| 572572c7bb | |||
|
|
9161210d52 |
||
| 1bdb8bb459 | |||
| f8ca4dbe09 | |||
| bf92724aa5 | |||
| b6723b921b | |||
| 87b4bfa795 | |||
| 0e18026fba | |||
| 1db6cd4d4a | |||
| fadbcd7b54 | |||
| 5d6bd7cd40 | |||
| e2533d7ae6 | |||
| 4f6f045423 | |||
| 7aa534567f | |||
| 3983361e78 | |||
| b2d939363e | |||
| ca64cdd911 | |||
| 2b7d7f9d78 | |||
| 20b19d9cfe | |||
| e7317b122c | |||
| 9cfa6db5db | |||
| b07b3e09b5 | |||
| cc82199a8e | |||
| bc4474c72f | |||
| d656a3970d | |||
| 896a997a53 | |||
| 78eceaab42 | |||
| d259cee009 | |||
| dd75bcfedf | |||
| 9678b6fdea | |||
| 7676b7a676 | |||
| 6364779191 | |||
|
|
6775e8243a |
||
| 414630a09a | |||
| 0977ff9606 | |||
| 3aa23ef894 | |||
| 468c525470 | |||
| 6f74ce1cf4 | |||
| eaa5f3ada3 | |||
| 38101cce90 | |||
| efe207a4de | |||
| 5c60277610 | |||
| 21c1a8e1ae | |||
| fbe0de6cba | |||
| 6a06c769c8 | |||
| 346eef69a4 | |||
| 30753c76af | |||
| e674fe65b1 | |||
| 0c9eb6e2da | |||
| 9a12eba62f | |||
| 62d2ac2766 | |||
| a51355417a | |||
| 92c74b90a0 | |||
| 921da6aac6 | |||
| 3fa1ed052f | |||
| dfc84d5fde | |||
| a9777a7ddf | |||
| 1be7001966 | |||
| e324b9d007 | |||
| c608229981 | |||
| 2a6b7057b9 | |||
| 0fe20e6355 | |||
| 77d58d6a3e | |||
| 7bb9d11db1 | |||
| 814879fd7b | |||
| 4785ae6805 | |||
| 238edb1619 | |||
| 2f78963bed | |||
| f71c009a0f | |||
| 61441f2513 | |||
| 8268eef8b2 | |||
| 335083579e | |||
| 0260ca79c1 | |||
| 0ed8d865a0 | |||
| c9b9cf3a02 | |||
| 833a20d8a6 | |||
| b3ab5976ae | |||
| 3e457e4435 | |||
| efdcacf9b5 | |||
| 7b233acf29 | |||
| d46c734950 | |||
| 5b80fe2d20 | |||
| 643e0a2edc | |||
| d4207c1f33 | |||
| 794196c3f8 | |||
| 3437ef1b3f | |||
| beeb927082 | |||
| 5339e9b124 | |||
| db9e34d8e9 | |||
| f5a2ee1af5 | |||
| 3e62cefe43 | |||
| ad36c16d91 | |||
| 5a47539dbb | |||
| fd2be2a4ae | |||
| f7882b1ff2 | |||
| a150913045 | |||
| f7c19c338f | |||
| f9c583973c | |||
| 1c6fffd048 | |||
| 59e7e19ccf | |||
| 2871874dd8 | |||
| 7c964ab93c | |||
| 605f4df41f | |||
| 5ad143d5b6 | |||
| 49f8acfabb | |||
| 89b493e939 | |||
| 01bd1ffc6f | |||
| c32699ae14 | |||
| 7bfde708dd | |||
| 45988211c7 | |||
| 8a1f29a44b | |||
| 9c6722f99a |
182 changed files with 10613 additions and 3057 deletions
319
CMakeLists.txt
319
CMakeLists.txt
|
|
@ -1,8 +1,8 @@
|
|||
# xo-tokenizer2/CMakeLists.txt
|
||||
# xo-expression2/CMakeLists.txt
|
||||
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
|
||||
project(xo_tokenizer2 VERSION 1.0)
|
||||
project(xo_expression2 VERSION 1.0)
|
||||
enable_language(CXX)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
|
|
@ -20,18 +20,313 @@ add_definitions(${PROJECT_CXX_FLAGS})
|
|||
# ----------------------------------------------------------------
|
||||
# output targets
|
||||
|
||||
add_subdirectory(src/tokenizer2)
|
||||
add_subdirectory(example)
|
||||
#add_subdirectory(utest)
|
||||
xo_export_cmake_config(${PROJECT_NAME} ${PROJECT_VERSION} ${PROJECT_NAME}Targets)
|
||||
add_subdirectory(utest)
|
||||
|
||||
if (XO_ENABLE_EXAMPLES)
|
||||
install(TARGETS xo_tokenizer2_repl DESTINATION bin/xo/example/tokenizer2)
|
||||
endif()
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacet(
|
||||
TARGET xo-expression2-facet-symboltable
|
||||
FACET SymbolTable
|
||||
INPUT idl/SymbolTable.json5
|
||||
OUTPUT_HPP_DIR include/xo/expression2
|
||||
OUTPUT_IMPL_SUBDIR detail
|
||||
)
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
# docs targets depends on all the other library/utest targets
|
||||
#
|
||||
#add_subdirectory(docs)
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-symboltable-localsymtab
|
||||
FACET_PKG xo_expression2
|
||||
# REPR LocalSymtab
|
||||
INPUT idl/ISymbolTable_DLocalSymtab.json5
|
||||
)
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-gcobject-localsymtab
|
||||
FACET_PKG xo_alloc2
|
||||
# REPR LocalSymtab
|
||||
INPUT idl/IGCObject_DLocalSymtab.json5
|
||||
)
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-printable-localsymtab
|
||||
FACET_PKG xo_printable2
|
||||
# REPR LocalSymtab
|
||||
INPUT idl/IPrintable_DLocalSymtab.json5
|
||||
)
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-symboltable-globalsymtab
|
||||
FACET_PKG xo_expression2
|
||||
# REPR GlobalSymtab
|
||||
INPUT idl/ISymbolTable_DGlobalSymtab.json5
|
||||
)
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-gcobject-globalsymtab
|
||||
FACET_PKG xo_alloc2
|
||||
# REPR GlobalSymtab
|
||||
INPUT idl/IGCObject_DGlobalSymtab.json5
|
||||
)
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-printable-globalsymtab
|
||||
FACET_PKG xo_printable2
|
||||
# REPR GlobalSymtab
|
||||
INPUT idl/IPrintable_DGlobalSymtab.json5
|
||||
)
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacet(
|
||||
TARGET xo-expression2-facet-expression
|
||||
FACET Expression
|
||||
INPUT idl/Expression.json5
|
||||
OUTPUT_HPP_DIR include/xo/expression2
|
||||
OUTPUT_IMPL_SUBDIR detail
|
||||
)
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-expression-constant
|
||||
FACET_PKG xo_expression2
|
||||
# REPR Constant
|
||||
INPUT idl/IExpression_DConstant.json5
|
||||
)
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-gcobject-constant
|
||||
FACET_PKG xo_alloc2
|
||||
# REPR Constant
|
||||
INPUT idl/IGCObject_DConstant.json5
|
||||
)
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-printable-constant
|
||||
FACET_PKG xo_printable2
|
||||
# REPR Constant
|
||||
INPUT idl/IPrintable_DConstant.json5
|
||||
)
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-expression-variable
|
||||
FACET_PKG xo_expression2
|
||||
# REPR Variable
|
||||
INPUT idl/IExpression_DVariable.json5
|
||||
)
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-gcobject-variable
|
||||
FACET_PKG xo_alloc2
|
||||
# REPR Variable
|
||||
INPUT idl/IGCObject_DVariable.json5
|
||||
)
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-printable-variable
|
||||
FACET_PKG xo_printable2
|
||||
# REPR Variable
|
||||
INPUT idl/IPrintable_DVariable.json5
|
||||
)
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-gcobject-typename
|
||||
FACET_PKG xo_alloc2
|
||||
# REPR Typename
|
||||
INPUT idl/IGCObject_DTypename.json5
|
||||
)
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-printable-typename
|
||||
FACET_PKG xo_printable2
|
||||
# REPR Typename
|
||||
INPUT idl/IPrintable_DTypename.json5
|
||||
)
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-expression-varref
|
||||
FACET_PKG xo_expression2
|
||||
# REPR VarRef
|
||||
INPUT idl/IExpression_DVarRef.json5
|
||||
)
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-gcobject-varref
|
||||
FACET_PKG xo_alloc2
|
||||
# REPR VarRef
|
||||
INPUT idl/IGCObject_DVarRef.json5
|
||||
)
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-printable-varref
|
||||
FACET_PKG xo_printable2
|
||||
# REPR VarRef
|
||||
INPUT idl/IPrintable_DVarRef.json5
|
||||
)
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-expression-defineexpr
|
||||
FACET_PKG xo_expression2
|
||||
# REPR DefineExpr
|
||||
INPUT idl/IExpression_DDefineExpr.json5
|
||||
)
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-gcobject-defineexpr
|
||||
FACET_PKG xo_alloc2
|
||||
# REPR DefineExpr
|
||||
INPUT idl/IGCObject_DDefineExpr.json5
|
||||
)
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-printable-defineexpr
|
||||
FACET_PKG xo_printable2
|
||||
# REPR DefineExpr
|
||||
INPUT idl/IPrintable_DDefineExpr.json5
|
||||
)
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-expression-applyexpr
|
||||
FACET_PKG xo_expression2
|
||||
# REPR ApplyExpr
|
||||
INPUT idl/IExpression_DApplyExpr.json5
|
||||
)
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-gcobject-applyexpr
|
||||
FACET_PKG xo_alloc2
|
||||
# REPR ApplyExpr
|
||||
INPUT idl/IGCObject_DApplyExpr.json5
|
||||
)
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-printable-applyexpr
|
||||
FACET_PKG xo_printable2
|
||||
# REPR ApplyExpr
|
||||
INPUT idl/IPrintable_DApplyExpr.json5
|
||||
)
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-expression-lambdaexpr
|
||||
FACET_PKG xo_expression2
|
||||
# REPR LambdaExpr
|
||||
INPUT idl/IExpression_DLambdaExpr.json5
|
||||
)
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-gcobject-lambdaexpr
|
||||
FACET_PKG xo_alloc2
|
||||
# REPR LambdaExpr
|
||||
INPUT idl/IGCObject_DLambdaExpr.json5
|
||||
)
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-printable-lambdaexpr
|
||||
FACET_PKG xo_printable2
|
||||
# REPR LambdaExpr
|
||||
INPUT idl/IPrintable_DLambdaExpr.json5
|
||||
)
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-expression-ifelseexpr
|
||||
FACET_PKG xo_expression2
|
||||
# REPR IfElseExpr
|
||||
INPUT idl/IExpression_DIfElseExpr.json5
|
||||
)
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-gcobject-ifelseexpr
|
||||
FACET_PKG xo_alloc2
|
||||
INPUT idl/IGCObject_DIfElseExpr.json5
|
||||
)
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-printable-ifelseexpr
|
||||
FACET_PKG xo_printable2
|
||||
INPUT idl/IPrintable_DIfElseExpr.json5
|
||||
)
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-expression-sequenceexpr
|
||||
FACET_PKG xo_expression2
|
||||
INPUT idl/IExpression_DSequenceExpr.json5
|
||||
)
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-gcobject-sequenceexpr
|
||||
FACET_PKG xo_alloc2
|
||||
INPUT idl/IGCObject_DSequenceExpr.json5
|
||||
)
|
||||
|
||||
# note: manual target; generated code committed to git
|
||||
xo_add_genfacetimpl(
|
||||
TARGET xo-expression2-facetimpl-printable-sequenceexpr
|
||||
FACET_PKG xo_printable2
|
||||
INPUT idl/IPrintable_DSequenceExpr.json5
|
||||
)
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
|
||||
xo_add_genfacet_all(xo-expression2-genfacet-all)
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
# shared library
|
||||
|
||||
add_subdirectory(src/expression2)
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
# cmake helper (for external xo-expression2 users)
|
||||
|
||||
xo_export_cmake_config(${PROJECT_NAME} ${PROJECT_VERSION} ${PROJECT_NAME}Targets)
|
||||
|
||||
# end CMakeLists.txt
|
||||
|
|
|
|||
|
|
@ -4,10 +4,15 @@ include(CMakeFindDependencyMacro)
|
|||
|
||||
# note: changes to find_dependency() calls here
|
||||
# must coordinate with xo_dependency() calls
|
||||
# in src/tokenizer2/CMakeLists.txt
|
||||
# in CMakeLists.txt
|
||||
#
|
||||
find_dependency(xo_stringtable2)
|
||||
find_dependency(xo_arena)
|
||||
find_dependency(xo_type)
|
||||
find_dependency(xo_gc)
|
||||
find_dependency(reflect)
|
||||
find_dependency(xo_procedure2)
|
||||
find_dependency(xo_printable2)
|
||||
find_dependency(xo_flatstring)
|
||||
find_dependency(cmake)
|
||||
find_dependency(indentlog)
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
|
||||
|
|
@ -1 +0,0 @@
|
|||
add_subdirectory(tokenrepl)
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
# xo-tokenizer2/example/tokenrepl/CMakeLists.txt
|
||||
|
||||
set(SELF_EXE xo_tokenizer2_repl)
|
||||
set(SELF_SRCS tokenrepl.cpp)
|
||||
|
||||
if (XO_ENABLE_EXAMPLES)
|
||||
xo_add_executable(${SELF_EXE} ${SELF_SRCS})
|
||||
xo_self_dependency(${SELF_EXE} xo_tokenizer2)
|
||||
xo_external_target_dependency(${SELF_EXE} replxx replxx::replxx)
|
||||
|
||||
find_package(Threads REQUIRED) # replxx needs this
|
||||
target_link_libraries(${SELF_EXE} PUBLIC Threads::Threads)
|
||||
endif()
|
||||
|
||||
# end CMakeLists.txt
|
||||
|
|
@ -1,128 +0,0 @@
|
|||
/** @file tokenrepl.cpp **/
|
||||
|
||||
#include <xo/tokenizer2/Tokenizer.hpp>
|
||||
#include <xo/tokenizer2/Token.hpp>
|
||||
#include <xo/tokenizer2/tokentype.hpp>
|
||||
#include <xo/arena/span.hpp>
|
||||
#include <xo/indentlog/log_config.hpp>
|
||||
#include <replxx.hxx>
|
||||
#include <iostream>
|
||||
#include <unistd.h> // for isatty
|
||||
|
||||
// presumeably replxx assumes input is a tty
|
||||
//
|
||||
bool replxx_getline(bool interactive,
|
||||
std::size_t parser_stack_size,
|
||||
replxx::Replxx & rx,
|
||||
const char ** p_input)
|
||||
{
|
||||
using namespace std;
|
||||
|
||||
char const * prompt = "";
|
||||
|
||||
if (interactive) {
|
||||
if (parser_stack_size <= 1)
|
||||
prompt = "> ";
|
||||
else
|
||||
prompt = ". ";
|
||||
}
|
||||
|
||||
const char * input_cstr = rx.input(prompt);
|
||||
|
||||
bool retval = (input_cstr != nullptr);
|
||||
|
||||
if (retval) {
|
||||
//cerr << "got reval->true" << endl;
|
||||
|
||||
*p_input = input_cstr;
|
||||
|
||||
} else {
|
||||
//cerr << "got retval->false" << endl;
|
||||
}
|
||||
|
||||
rx.history_add(input_cstr);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
int
|
||||
main() {
|
||||
using xo::scm::Tokenizer;
|
||||
using xo::scm::operator<<;
|
||||
using xo::mm::CircularBufferConfig;
|
||||
using xo::mm::span;
|
||||
using xo::scope;
|
||||
using xo::xtag;
|
||||
using replxx::Replxx;
|
||||
|
||||
using namespace std;
|
||||
|
||||
using span_type = span<const char>;
|
||||
|
||||
xo::log_config::min_log_level = xo::log_level::severe;
|
||||
|
||||
bool interactive = isatty(STDIN_FILENO);
|
||||
|
||||
Replxx rx;
|
||||
rx.set_max_history_size(1000);
|
||||
rx.history_load("repl_history.txt");
|
||||
|
||||
constexpr bool c_debug_flag = true;
|
||||
scope log(XO_DEBUG(c_debug_flag));
|
||||
|
||||
Tokenizer tkz(CircularBufferConfig{.name_ = "tokenrepl-input",
|
||||
.max_capacity_ = 4*1024,
|
||||
.max_captured_span_ = 128},
|
||||
c_debug_flag);
|
||||
|
||||
const char * input_cstr = nullptr;;
|
||||
|
||||
size_t line_no = 1;
|
||||
|
||||
constexpr std::size_t c_maxlines = 25;
|
||||
|
||||
while (replxx_getline(interactive, 0 /*parser_stack_size*/, rx, &input_cstr))
|
||||
{
|
||||
//cout << "input: " << input << endl;
|
||||
|
||||
auto input_ext = Tokenizer::span_type::from_cstr(input_cstr);
|
||||
|
||||
// reminder: input may contain multiple tokens
|
||||
auto [error, input] = tkz.buffer_input_line(input_ext, false /*!eof*/);
|
||||
|
||||
if (log) {
|
||||
log(xtag("msg", "buffered input line"));
|
||||
log(xtag("input", input));
|
||||
}
|
||||
|
||||
while (!input.empty())
|
||||
{
|
||||
auto [tk, consumed, error] = tkz.scan(input);
|
||||
|
||||
log && log(xtag("consumed", consumed), xtag("tk", tk));
|
||||
|
||||
if (tk.is_valid()) {
|
||||
cout << tk << endl;
|
||||
} else if (error.is_error()) {
|
||||
cout << "tokenizer error: " << endl;
|
||||
|
||||
error.report(cout);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
input = input.after_prefix(consumed);
|
||||
}
|
||||
|
||||
/* here: input.empty() or error encountered */
|
||||
|
||||
++line_no;
|
||||
|
||||
if (line_no > c_maxlines) {
|
||||
cout << "always exit after " << c_maxlines << " lines of input" << endl;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** end tokenrepl.cpp */
|
||||
74
idl/Expression.json5
Normal file
74
idl/Expression.json5
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
{
|
||||
mode: "facet",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "detail",
|
||||
includes: [ "\"TypeRef.hpp\"",
|
||||
"\"exprtype.hpp\"",
|
||||
"<xo/reflect/TypeDescr.hpp>"],
|
||||
// extra includes in Expression.hpp, if any
|
||||
user_hpp_includes: [],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
// text after includes, before AExpression
|
||||
pretext: [ "// {pretext} here" ],
|
||||
facet: "Expression",
|
||||
detail_subdir: "detail",
|
||||
brief: "a schematika expression",
|
||||
using_doxygen: true,
|
||||
doc: [
|
||||
"Representation for executable Schematika expressions"
|
||||
],
|
||||
types: [
|
||||
// using TypeDescr = xo::reflect::TypeDescr;
|
||||
{
|
||||
name: "TypeDescr",
|
||||
doc: ["struct describing a type"],
|
||||
definition: "xo::reflect::TypeDescr"
|
||||
},
|
||||
],
|
||||
const_methods: [
|
||||
{
|
||||
name: "extype",
|
||||
doc: ["expression type (constant | apply | ..)"],
|
||||
return_type: "exprtype",
|
||||
args: [],
|
||||
const: true,
|
||||
noexcept: true,
|
||||
attributes: [],
|
||||
},
|
||||
{
|
||||
name: "typeref",
|
||||
doc: ["placeholder for type giving possible values for this expression"],
|
||||
return_type: "TypeRef",
|
||||
args: [],
|
||||
const: true,
|
||||
noexcept: true,
|
||||
attributes: [],
|
||||
},
|
||||
{
|
||||
name: "valuetype",
|
||||
doc: ["type giving possible values for this expression. Maybe null before typecheck"],
|
||||
return_type: "TypeDescr",
|
||||
args: [],
|
||||
const: true,
|
||||
noexcept: true,
|
||||
attributes: [],
|
||||
},
|
||||
],
|
||||
nonconst_methods: [
|
||||
{
|
||||
name: "assign_valuetype",
|
||||
doc: ["assing to valuetype member. Useful when scaffolding expressions"],
|
||||
return_type: "void",
|
||||
args: [
|
||||
// void assign_valuetype(TypeDescr td)
|
||||
{type: "TypeDescr", name: "td"},
|
||||
],
|
||||
const: false,
|
||||
noexcept: true,
|
||||
attributes: [],
|
||||
}
|
||||
],
|
||||
router_facet_explicit_content: [ ],
|
||||
}
|
||||
15
idl/IExpression_DApplyExpr.json5
Normal file
15
idl/IExpression_DApplyExpr.json5
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "detail",
|
||||
includes: [ "\"Expression.hpp\"" ],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/Expression.json5",
|
||||
brief: "provide AExpression interface for DApplyExpr state",
|
||||
using_doxygen: true,
|
||||
repr: "DApplyExpr",
|
||||
doc: ["doc for IExpression+DApplyExpr" ],
|
||||
}
|
||||
15
idl/IExpression_DConstant.json5
Normal file
15
idl/IExpression_DConstant.json5
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "detail",
|
||||
includes: [ "\"Expression.hpp\"" ],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/Expression.json5",
|
||||
brief: "provide AExpression interface for DConstant state",
|
||||
using_doxygen: true,
|
||||
repr: "DConstant",
|
||||
doc: ["doc for something or other IExpression+DConstant" ],
|
||||
}
|
||||
15
idl/IExpression_DDefineExpr.json5
Normal file
15
idl/IExpression_DDefineExpr.json5
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "detail",
|
||||
includes: [ "\"Expression.hpp\"" ],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/Expression.json5",
|
||||
brief: "provide AExpression interface for DDefineExpr state",
|
||||
using_doxygen: true,
|
||||
repr: "DDefineExpr",
|
||||
doc: ["doc for IExpression+DDefineExpr" ],
|
||||
}
|
||||
15
idl/IExpression_DIfElseExpr.json5
Normal file
15
idl/IExpression_DIfElseExpr.json5
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "detail",
|
||||
includes: [ "\"Expression.hpp\"" ],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/Expression.json5",
|
||||
brief: "provide AExpression interface for DIfElseExpr state",
|
||||
using_doxygen: true,
|
||||
repr: "DIfElseExpr",
|
||||
doc: ["doc for IExpression+DIfElseExpr" ],
|
||||
}
|
||||
15
idl/IExpression_DLambdaExpr.json5
Normal file
15
idl/IExpression_DLambdaExpr.json5
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "detail",
|
||||
includes: [ "\"Expression.hpp\"" ],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/Expression.json5",
|
||||
brief: "provide AExpression interface for DLambdaExpr state",
|
||||
using_doxygen: true,
|
||||
repr: "DLambdaExpr",
|
||||
doc: ["doc for IExpression+DLambdaExpr" ],
|
||||
}
|
||||
15
idl/IExpression_DSequenceExpr.json5
Normal file
15
idl/IExpression_DSequenceExpr.json5
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "detail",
|
||||
includes: [ "\"Expression.hpp\"" ],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/Expression.json5",
|
||||
brief: "provide AExpression interface for DSequenceExpr state",
|
||||
using_doxygen: true,
|
||||
repr: "DSequenceExpr",
|
||||
doc: ["doc for something or other IExpression+DSequenceExpr" ],
|
||||
}
|
||||
15
idl/IExpression_DVarRef.json5
Normal file
15
idl/IExpression_DVarRef.json5
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "detail",
|
||||
includes: [ "\"Expression.hpp\"" ],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/Expression.json5",
|
||||
brief: "provide AExpression interface for DVarRef state",
|
||||
using_doxygen: true,
|
||||
repr: "DVarRef",
|
||||
doc: ["doc for IExpression+DVarRef" ],
|
||||
}
|
||||
15
idl/IExpression_DVariable.json5
Normal file
15
idl/IExpression_DVariable.json5
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2/facet",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "variable",
|
||||
includes: [ "\"Expression.hpp\"" ],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/Expression.json5",
|
||||
brief: "provide AExpression interface for DVariable state",
|
||||
using_doxygen: true,
|
||||
repr: "DVariable",
|
||||
doc: ["doc for IExpression+DVariable" ],
|
||||
}
|
||||
18
idl/IGCObject_DApplyExpr.json5
Normal file
18
idl/IGCObject_DApplyExpr.json5
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "detail",
|
||||
includes: [
|
||||
"<xo/alloc2/GCObject.hpp>",
|
||||
"<xo/alloc2/Allocator.hpp>"
|
||||
],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/GCObject.json5",
|
||||
brief: "provide AGCObject interface for DApplyExpr",
|
||||
using_doxygen: true,
|
||||
repr: "DApplyExpr",
|
||||
doc: [ "implement AGCObject for DApplyExpr" ],
|
||||
}
|
||||
18
idl/IGCObject_DConstant.json5
Normal file
18
idl/IGCObject_DConstant.json5
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "detail",
|
||||
includes: [
|
||||
"<xo/alloc2/GCObject.hpp>",
|
||||
"<xo/alloc2/Allocator.hpp>"
|
||||
],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/GCObject.json5",
|
||||
brief: "provide AGCObject interface for DConstant",
|
||||
using_doxygen: true,
|
||||
repr: "DConstant",
|
||||
doc: [ "implement AGCObject for DConstant" ],
|
||||
}
|
||||
18
idl/IGCObject_DDefineExpr.json5
Normal file
18
idl/IGCObject_DDefineExpr.json5
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "define",
|
||||
includes: [
|
||||
"<xo/alloc2/GCObject.hpp>",
|
||||
"<xo/alloc2/Allocator.hpp>"
|
||||
],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/GCObject.json5",
|
||||
brief: "provide AGCObject interface for DDefineExpr",
|
||||
using_doxygen: true,
|
||||
repr: "DDefineExpr",
|
||||
doc: [ "implement AGCObject for DDefineExpr" ],
|
||||
}
|
||||
18
idl/IGCObject_DGlobalSymtab.json5
Normal file
18
idl/IGCObject_DGlobalSymtab.json5
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "symtab",
|
||||
includes: [
|
||||
"<xo/alloc2/GCObject.hpp>",
|
||||
"<xo/alloc2/Allocator.hpp>"
|
||||
],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/GCObject.json5",
|
||||
brief: "provide AGCObject interface for DGlobalSymtab",
|
||||
using_doxygen: true,
|
||||
repr: "DGlobalSymtab",
|
||||
doc: [ "implement AGCObject for DGlobalSymtab" ],
|
||||
}
|
||||
18
idl/IGCObject_DIfElseExpr.json5
Normal file
18
idl/IGCObject_DIfElseExpr.json5
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "detail",
|
||||
includes: [
|
||||
"<xo/alloc2/GCObject.hpp>",
|
||||
"<xo/alloc2/Allocator.hpp>"
|
||||
],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/GCObject.json5",
|
||||
brief: "provide AGCObject interface for DIfElseExpr",
|
||||
using_doxygen: true,
|
||||
repr: "DIfElseExpr",
|
||||
doc: [ "implement AGCObject for DIfElseExpr" ],
|
||||
}
|
||||
18
idl/IGCObject_DLambdaExpr.json5
Normal file
18
idl/IGCObject_DLambdaExpr.json5
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "detail",
|
||||
includes: [
|
||||
"<xo/alloc2/GCObject.hpp>",
|
||||
"<xo/alloc2/Allocator.hpp>"
|
||||
],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/GCObject.json5",
|
||||
brief: "provide AGCObject interface for DLambdaExpr",
|
||||
using_doxygen: true,
|
||||
repr: "DLambdaExpr",
|
||||
doc: [ "implement AGCObject for DLambdaExpr" ],
|
||||
}
|
||||
18
idl/IGCObject_DLocalSymtab.json5
Normal file
18
idl/IGCObject_DLocalSymtab.json5
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "symtab",
|
||||
includes: [
|
||||
"<xo/alloc2/GCObject.hpp>",
|
||||
"<xo/alloc2/Allocator.hpp>"
|
||||
],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/GCObject.json5",
|
||||
brief: "provide AGCObject interface for DLocalSymtab",
|
||||
using_doxygen: true,
|
||||
repr: "DLocalSymtab",
|
||||
doc: [ "implement AGCObject for DLocalSymtab" ],
|
||||
}
|
||||
18
idl/IGCObject_DSequenceExpr.json5
Normal file
18
idl/IGCObject_DSequenceExpr.json5
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "detail",
|
||||
includes: [
|
||||
"<xo/alloc2/GCObject.hpp>",
|
||||
"<xo/alloc2/Allocator.hpp>"
|
||||
],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/GCObject.json5",
|
||||
brief: "provide AGCObject interface for DSequenceExpr",
|
||||
using_doxygen: true,
|
||||
repr: "DSequenceExpr",
|
||||
doc: [ "implement AGCObject for DSequenceExpr" ],
|
||||
}
|
||||
18
idl/IGCObject_DTypename.json5
Normal file
18
idl/IGCObject_DTypename.json5
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "typename",
|
||||
includes: [
|
||||
// "<xo/alloc2/GCObject.hpp>",
|
||||
// "<xo/alloc2/Allocator.hpp>"
|
||||
],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/GCObject.json5",
|
||||
brief: "provide AGCObject interface for DTypename",
|
||||
using_doxygen: true,
|
||||
repr: "DTypename",
|
||||
doc: [ "implement AGCObject for DTypename" ],
|
||||
}
|
||||
18
idl/IGCObject_DVarRef.json5
Normal file
18
idl/IGCObject_DVarRef.json5
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "detail",
|
||||
includes: [
|
||||
"<xo/alloc2/GCObject.hpp>",
|
||||
"<xo/alloc2/Allocator.hpp>"
|
||||
],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/GCObject.json5",
|
||||
brief: "provide AGCObject interface for DVarRef",
|
||||
using_doxygen: true,
|
||||
repr: "DVarRef",
|
||||
doc: [ "implement AGCObject for DVarRef" ],
|
||||
}
|
||||
18
idl/IGCObject_DVariable.json5
Normal file
18
idl/IGCObject_DVariable.json5
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2/facet",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "variable",
|
||||
includes: [
|
||||
"<xo/alloc2/GCObject.hpp>",
|
||||
"<xo/alloc2/Allocator.hpp>"
|
||||
],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/GCObject.json5",
|
||||
brief: "provide AGCObject interface for DVariable",
|
||||
using_doxygen: true,
|
||||
repr: "DVariable",
|
||||
doc: [ "implement AGCObject for DVariable" ],
|
||||
}
|
||||
16
idl/IPrintable_DApplyExpr.json5
Normal file
16
idl/IPrintable_DApplyExpr.json5
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "detail",
|
||||
includes: [ "<xo/printable2/Printable.hpp>",
|
||||
"<xo/printable2/detail/IPrintable_Xfer.hpp>" ],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/Printable.json5",
|
||||
brief: "provide APrintable interface for DApplyExpr",
|
||||
using_doxygen: true,
|
||||
repr: "DApplyExpr",
|
||||
doc: [ "implement APrintable for DApplyExpr" ],
|
||||
}
|
||||
16
idl/IPrintable_DConstant.json5
Normal file
16
idl/IPrintable_DConstant.json5
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "detail",
|
||||
includes: [ "<xo/printable2/Printable.hpp>",
|
||||
"<xo/printable2/detail/IPrintable_Xfer.hpp>" ],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/Printable.json5",
|
||||
brief: "provide APrintable interface for DConstant",
|
||||
using_doxygen: true,
|
||||
repr: "DConstant",
|
||||
doc: [ "implement APrintable for DConstant" ],
|
||||
}
|
||||
16
idl/IPrintable_DDefineExpr.json5
Normal file
16
idl/IPrintable_DDefineExpr.json5
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "detail",
|
||||
includes: [ "<xo/printable2/Printable.hpp>",
|
||||
"<xo/printable2/detail/IPrintable_Xfer.hpp>" ],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/Printable.json5",
|
||||
brief: "provide APrintable interface for DDefineExpr",
|
||||
using_doxygen: true,
|
||||
repr: "DDefineExpr",
|
||||
doc: [ "implement APrintable for DDefineExpr" ],
|
||||
}
|
||||
16
idl/IPrintable_DGlobalSymtab.json5
Normal file
16
idl/IPrintable_DGlobalSymtab.json5
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "symtab",
|
||||
includes: [ "<xo/printable2/Printable.hpp>",
|
||||
"<xo/printable2/detail/IPrintable_Xfer.hpp>" ],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/Printable.json5",
|
||||
brief: "provide APrintable interface for DGlobalSymtab",
|
||||
using_doxygen: true,
|
||||
repr: "DGlobalSymtab",
|
||||
doc: [ "implement APrintable for DGlobalSymtab" ],
|
||||
}
|
||||
16
idl/IPrintable_DIfElseExpr.json5
Normal file
16
idl/IPrintable_DIfElseExpr.json5
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "detail",
|
||||
includes: [ "<xo/printable2/Printable.hpp>",
|
||||
"<xo/printable2/detail/IPrintable_Xfer.hpp>" ],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/Printable.json5",
|
||||
brief: "provide APrintable interface for DIfElseExpr",
|
||||
using_doxygen: true,
|
||||
repr: "DIfElseExpr",
|
||||
doc: [ "implement APrintable for DIfElseExpr" ],
|
||||
}
|
||||
16
idl/IPrintable_DLambdaExpr.json5
Normal file
16
idl/IPrintable_DLambdaExpr.json5
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "detail",
|
||||
includes: [ "<xo/printable2/Printable.hpp>",
|
||||
"<xo/printable2/detail/IPrintable_Xfer.hpp>" ],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/Printable.json5",
|
||||
brief: "provide APrintable interface for DLambdaExpr",
|
||||
using_doxygen: true,
|
||||
repr: "DLambdaExpr",
|
||||
doc: [ "implement APrintable for DLambdaExpr" ],
|
||||
}
|
||||
16
idl/IPrintable_DLocalSymtab.json5
Normal file
16
idl/IPrintable_DLocalSymtab.json5
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "symtab",
|
||||
includes: [ "<xo/printable2/Printable.hpp>",
|
||||
"<xo/printable2/detail/IPrintable_Xfer.hpp>" ],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/Printable.json5",
|
||||
brief: "provide APrintable interface for DLocalSymtab",
|
||||
using_doxygen: true,
|
||||
repr: "DLocalSymtab",
|
||||
doc: [ "implement APrintable for DLocalSymtab" ],
|
||||
}
|
||||
16
idl/IPrintable_DSequenceExpr.json5
Normal file
16
idl/IPrintable_DSequenceExpr.json5
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "detail",
|
||||
includes: [ "<xo/printable2/Printable.hpp>",
|
||||
"<xo/printable2/detail/IPrintable_Xfer.hpp>" ],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/Printable.json5",
|
||||
brief: "provide APrintable interface for DSequenceExpr",
|
||||
using_doxygen: true,
|
||||
repr: "DSequenceExpr",
|
||||
doc: [ "implement APrintable for DSequenceExpr" ],
|
||||
}
|
||||
16
idl/IPrintable_DTypename.json5
Normal file
16
idl/IPrintable_DTypename.json5
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "typename",
|
||||
includes: [ "<xo/printable2/Printable.hpp>",
|
||||
"<xo/printable2/detail/IPrintable_Xfer.hpp>" ],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/Printable.json5",
|
||||
brief: "provide APrintable interface for DTypename",
|
||||
using_doxygen: true,
|
||||
repr: "DTypename",
|
||||
doc: [ "implement APrintable for DTypename" ],
|
||||
}
|
||||
16
idl/IPrintable_DVarRef.json5
Normal file
16
idl/IPrintable_DVarRef.json5
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "detail",
|
||||
includes: [ "<xo/printable2/Printable.hpp>",
|
||||
"<xo/printable2/detail/IPrintable_Xfer.hpp>" ],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/Printable.json5",
|
||||
brief: "provide APrintable interface for DVarRef",
|
||||
using_doxygen: true,
|
||||
repr: "DVarRef",
|
||||
doc: [ "implement APrintable for DVarRef" ],
|
||||
}
|
||||
16
idl/IPrintable_DVariable.json5
Normal file
16
idl/IPrintable_DVariable.json5
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2/facet",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "variable",
|
||||
includes: [ "<xo/printable2/Printable.hpp>",
|
||||
"<xo/printable2/detail/IPrintable_Xfer.hpp>" ],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/Printable.json5",
|
||||
brief: "provide APrintable interface for DVariable",
|
||||
using_doxygen: true,
|
||||
repr: "DVariable",
|
||||
doc: [ "implement APrintable for DVariable" ],
|
||||
}
|
||||
15
idl/ISymbolTable_DGlobalSymtab.json5
Normal file
15
idl/ISymbolTable_DGlobalSymtab.json5
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "symtab",
|
||||
includes: [ ],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/SymbolTable.json5",
|
||||
brief: "provide ASymbolTable interface for DGlobalSymtab",
|
||||
using_doxygen: true,
|
||||
repr: "DGlobalSymtab",
|
||||
doc: [ "implement ASymbolTable for DGlobalSymtab" ],
|
||||
}
|
||||
15
idl/ISymbolTable_DLocalSymtab.json5
Normal file
15
idl/ISymbolTable_DLocalSymtab.json5
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
mode: "implementation",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "symtab",
|
||||
includes: [ ],
|
||||
local_types: [ ],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
facet_idl: "idl/SymbolTable.json5",
|
||||
brief: "provide ASymbolTable interface for DLocalSymtab",
|
||||
using_doxygen: true,
|
||||
repr: "DLocalSymtab",
|
||||
doc: [ "implement ASymbolTable for DLocalSymtab" ],
|
||||
}
|
||||
63
idl/SymbolTable.json5
Normal file
63
idl/SymbolTable.json5
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
{
|
||||
mode: "facet",
|
||||
output_cpp_dir: "src/expression2",
|
||||
output_hpp_dir: "include/xo/expression2",
|
||||
output_impl_subdir: "symtab",
|
||||
includes: [
|
||||
"\"Binding.hpp\"",
|
||||
"\"DUniqueString.hpp\""
|
||||
],
|
||||
// extra includes in SymbolTable.hpp, if any
|
||||
user_hpp_includes: [],
|
||||
namespace1: "xo",
|
||||
namespace2: "scm",
|
||||
// text after includes, before ASymbolTable
|
||||
pretext: [ "// {pretext} here" ],
|
||||
facet: "SymbolTable",
|
||||
detail_subdir: "symtab",
|
||||
brief: "symbol table derived from a set of schematika expressions",
|
||||
using_doxygen: true,
|
||||
doc: [
|
||||
"Map symbols to schematika expressions. Output of schematika parser"
|
||||
],
|
||||
types: [
|
||||
// { name: string, doc: [ string ], definition: string },
|
||||
],
|
||||
const_methods: [
|
||||
|
||||
{
|
||||
// bool is_global_symtab() const noexcept;
|
||||
name: "is_global_symtab",
|
||||
doc: ["true iff this is toplevel (global) symbol table."],
|
||||
return_type: "bool",
|
||||
args: [],
|
||||
const: true,
|
||||
noexcept: true,
|
||||
attributes: [],
|
||||
},
|
||||
|
||||
{
|
||||
// Binding lookup_binding(const DUniqueString * sym) const noexcept;
|
||||
name: "lookup_binding",
|
||||
doc: ["report ingredients needed to address variable at runtime."],
|
||||
return_type: "Binding",
|
||||
args: [
|
||||
{type: "const DUniqueString *", name: "sym"},
|
||||
],
|
||||
const: true,
|
||||
noexcept: true,
|
||||
attributes: [],
|
||||
},
|
||||
|
||||
// //
|
||||
// obj<AExpression> lookup_var(const DUniqueString * sym) const noexcept;
|
||||
|
||||
// //
|
||||
// obj<AExpression> lookup_local(const DUniqueString * sym) const noexcept;
|
||||
],
|
||||
nonconst_methods: [
|
||||
// // Variable gives both {name, type}
|
||||
// void upsert_local(DVariable * target) = 0;
|
||||
],
|
||||
router_facet_explicit_content: [ ],
|
||||
}
|
||||
13
include/xo/expression2/ApplyExpr.hpp
Normal file
13
include/xo/expression2/ApplyExpr.hpp
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
/** @file ApplyExpr.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Feb 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "DApplyExpr.hpp"
|
||||
#include "detail/IExpression_DApplyExpr.hpp"
|
||||
#include "detail/IGCObject_DApplyExpr.hpp"
|
||||
#include "detail/IPrintable_DApplyExpr.hpp"
|
||||
|
||||
/* end ApplyExpr.hpp */
|
||||
65
include/xo/expression2/Binding.hpp
Normal file
65
include/xo/expression2/Binding.hpp
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
/** @file Binding.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Jan 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <iostream>
|
||||
#include <cstdint>
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
class Binding {
|
||||
public:
|
||||
using slot_type = int32_t;
|
||||
|
||||
static constexpr int32_t c_link_sentinel = -2;
|
||||
static constexpr int32_t c_link_global = -1;
|
||||
|
||||
public:
|
||||
Binding() : i_link_{-2}, j_slot_{-1} {}
|
||||
Binding(int32_t i_link, int32_t j_slot)
|
||||
: i_link_{i_link}, j_slot_{j_slot} {}
|
||||
|
||||
static Binding null() { return Binding(); }
|
||||
/** global bindings are located by symbol name **/
|
||||
static Binding global(int32_t j_slot) { return Binding(c_link_global, j_slot); }
|
||||
static Binding local(int32_t j_slot) { return Binding(0, j_slot); }
|
||||
static Binding relative(int32_t i_link, Binding def);
|
||||
|
||||
bool is_null() const {
|
||||
return (i_link_ == c_link_sentinel) && (j_slot_ == -1);
|
||||
}
|
||||
bool is_global() const { return i_link_ == c_link_global; }
|
||||
bool is_local() const { return (i_link_ == 0) && (j_slot_ >= 0); }
|
||||
|
||||
int32_t i_link() const noexcept { return i_link_; }
|
||||
int32_t j_slot() const noexcept { return j_slot_; }
|
||||
|
||||
/** print human-readable repr to stream @p os **/
|
||||
void print(std::ostream & os) const;
|
||||
|
||||
private:
|
||||
/**
|
||||
* >= 0: number of parent links to traverse
|
||||
* to a fixed-size frame
|
||||
* -1: resolve globally
|
||||
* -2: sentinel (binding info not computed)
|
||||
**/
|
||||
int32_t i_link_ = c_link_sentinel;
|
||||
/** if @ref i_link_ >= 0, frame offset
|
||||
* (in 'variables' not bytes).
|
||||
* ignored if @ref i_link_ is global
|
||||
**/
|
||||
int32_t j_slot_ = -1;
|
||||
};
|
||||
|
||||
inline std::ostream & operator<< (std::ostream & os, Binding x) {
|
||||
x.print(os);
|
||||
return os;
|
||||
}
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* Binding.hpp */
|
||||
13
include/xo/expression2/Constant.hpp
Normal file
13
include/xo/expression2/Constant.hpp
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
/** @file Constant.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Feb 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "DConstant.hpp"
|
||||
#include "detail/IExpression_DConstant.hpp"
|
||||
#include "detail/IGCObject_DConstant.hpp"
|
||||
#include "detail/IPrintable_DConstant.hpp"
|
||||
|
||||
/* end Constant.hpp */
|
||||
113
include/xo/expression2/DApplyExpr.hpp
Normal file
113
include/xo/expression2/DApplyExpr.hpp
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
/** @file DApplyExpr.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Jan 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Expression.hpp"
|
||||
#include "TypeRef.hpp"
|
||||
#include "exprtype.hpp"
|
||||
#include <xo/alloc2/GCObjectVisitor.hpp>
|
||||
#include <xo/object2/DArray.hpp>
|
||||
#include <xo/reflect/TypeDescr.hpp>
|
||||
#include <xo/indentlog/print/pretty.hpp>
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
|
||||
/** @class DApplyExpr
|
||||
* @brief syntax for a procedure/function call
|
||||
**/
|
||||
class DApplyExpr {
|
||||
public:
|
||||
using AGCObjectVisitor = xo::mm::AGCObjectVisitor;
|
||||
using VisitReason = xo::mm::VisitReason;
|
||||
using AAllocator = xo::mm::AAllocator;
|
||||
using TypeDescr = xo::reflect::TypeDescr;
|
||||
using ppindentinfo = xo::print::ppindentinfo;
|
||||
using size_type = std::uint32_t;
|
||||
|
||||
public:
|
||||
/** @defgroup scm-applyexpr-constructors **/
|
||||
///@{
|
||||
|
||||
/** construct empty instance, but with argument expressions empty **/
|
||||
DApplyExpr(TypeRef typeref,
|
||||
obj<AExpression> fn_expr,
|
||||
size_type n_args);
|
||||
|
||||
/** create apply for function with 2 arguments **/
|
||||
static obj<AExpression,DApplyExpr> make2(obj<AAllocator> mm,
|
||||
TypeRef typeref,
|
||||
obj<AExpression> fn_expr,
|
||||
obj<AExpression> arg1,
|
||||
obj<AExpression> arg2);
|
||||
|
||||
/** create apply for function with 2 arguments **/
|
||||
static DApplyExpr * _make2(obj<AAllocator> mm,
|
||||
TypeRef typeref,
|
||||
obj<AExpression> fn_expr,
|
||||
obj<AExpression> arg1,
|
||||
obj<AExpression> arg2);
|
||||
|
||||
/** scaffold incomplete instance.
|
||||
* apply-expr using memory from @p mm.
|
||||
* will construct instance with space for @p n_args arguments
|
||||
* but expressions left empty.
|
||||
* use @ref assign_arg for all arguments to complete.
|
||||
**/
|
||||
static DApplyExpr * scaffold(obj<AAllocator> mm,
|
||||
TypeRef typeref,
|
||||
obj<AExpression> fn_expr,
|
||||
size_type n_args);
|
||||
void assign_arg(size_type i_arg, obj<AExpression> expr);
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-applyexpr-access-methods **/
|
||||
///@{
|
||||
|
||||
obj<AExpression> fn() const noexcept { return fn_; }
|
||||
size_type n_args() const noexcept { return n_args_; }
|
||||
obj<AExpression> arg(size_type i) const;
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-applyexpr-expression-facet **/
|
||||
///@{
|
||||
|
||||
exprtype extype() const noexcept { return exprtype::apply; }
|
||||
TypeRef typeref() const noexcept { return typeref_; }
|
||||
TypeDescr valuetype() const noexcept { return typeref_.td(); }
|
||||
void assign_valuetype(TypeDescr td) noexcept;
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-applyexpr-gcobject-facet **/
|
||||
///@{
|
||||
|
||||
DApplyExpr * gco_shallow_move(obj<AGCObjectVisitor> gc) noexcept;
|
||||
void visit_gco_children(VisitReason reason, obj<AGCObjectVisitor> gc) noexcept;
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-applyexpr-printable-facet **/
|
||||
///@{
|
||||
|
||||
bool pretty(const ppindentinfo & ppii) const;
|
||||
|
||||
///@}
|
||||
|
||||
private:
|
||||
/** expression value always has type consistent
|
||||
* with this description
|
||||
**/
|
||||
TypeRef typeref_;
|
||||
/** expression for function/procedure to invoke **/
|
||||
obj<AExpression> fn_;
|
||||
/** number of arguments (not counting @ref fn_ **/
|
||||
size_type n_args_ = 0;
|
||||
/** args_[i] is expression for i'th argument to @ref fn_ **/
|
||||
obj<AExpression> args_[];
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/* end DApplyExpr.hpp */
|
||||
91
include/xo/expression2/DConstant.hpp
Normal file
91
include/xo/expression2/DConstant.hpp
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
/** @file DConstant.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Jan 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Expression.hpp"
|
||||
#include "TypeRef.hpp"
|
||||
#include "exprtype.hpp"
|
||||
#include <xo/alloc2/GCObject.hpp>
|
||||
#include <xo/alloc2/GCObjectVisitor.hpp>
|
||||
#include <xo/reflect/TaggedPtr.hpp>
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class DConstant
|
||||
* @brief Schematika expression respresenting a literal constant
|
||||
**/
|
||||
struct DConstant {
|
||||
public:
|
||||
using TaggedPtr = xo::reflect::TaggedPtr;
|
||||
using TypeDescr = xo::reflect::TypeDescr;
|
||||
using AGCObject = xo::mm::AGCObject;
|
||||
using VisitReason = xo::mm::VisitReason;
|
||||
using AGCObjectVisitor = xo::mm::AGCObjectVisitor;
|
||||
using AAllocator = xo::mm::AAllocator;
|
||||
using typeseq = xo::reflect::typeseq;
|
||||
using ppindentinfo = xo::print::ppindentinfo;
|
||||
|
||||
public:
|
||||
explicit DConstant(obj<AGCObject> value) noexcept;
|
||||
|
||||
/** create isntance
|
||||
* @p mm memory allocator
|
||||
* @p value literal constant
|
||||
**/
|
||||
static obj<AExpression,DConstant> make(obj<AAllocator> mm,
|
||||
obj<AGCObject> value);
|
||||
|
||||
/** create instance
|
||||
* @p mm memory allocator
|
||||
* @p value literal constant
|
||||
**/
|
||||
static DConstant * _make(obj<AAllocator> mm,
|
||||
obj<AGCObject> value);
|
||||
|
||||
bool is_resolved() const noexcept { return typeref_.is_resolved(); }
|
||||
|
||||
obj<AGCObject> value() const noexcept { return value_; }
|
||||
TypeDescr value_td() const noexcept { return typeref_.td(); }
|
||||
TaggedPtr value_tp() const noexcept { return TaggedPtr(typeref_.td(), value_.data()); }
|
||||
|
||||
/** @defgroup scm-constant-expression-facet **/
|
||||
///@{
|
||||
|
||||
exprtype extype() const noexcept { return exprtype::constant; }
|
||||
TypeRef typeref() const noexcept { return typeref_; }
|
||||
TypeDescr valuetype() const noexcept { return typeref_.td(); }
|
||||
void assign_valuetype(TypeDescr td) noexcept { typeref_.resolve(td); }
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-constant-gcobject-facet **/
|
||||
///@{
|
||||
|
||||
DConstant * gco_shallow_move(obj<AGCObjectVisitor> gc) noexcept;
|
||||
void visit_gco_children(VisitReason reason, obj<AGCObjectVisitor> gc) noexcept;
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-constant-printable-facet **/
|
||||
///@{
|
||||
|
||||
bool pretty(const ppindentinfo & ppii) const;
|
||||
|
||||
///@}
|
||||
|
||||
private:
|
||||
static TypeDescr _lookup_td(typeseq tseq);
|
||||
|
||||
private:
|
||||
/** type for value of this expression
|
||||
* or unification breadcrumb before unification
|
||||
**/
|
||||
TypeRef typeref_;
|
||||
/** literal value **/
|
||||
obj<AGCObject> value_;
|
||||
};
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end DConstant.hpp */
|
||||
108
include/xo/expression2/DDefineExpr.hpp
Normal file
108
include/xo/expression2/DDefineExpr.hpp
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
/** @file DDefineExpr.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Jan 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Expression.hpp"
|
||||
#include "DVariable.hpp"
|
||||
#include <xo/alloc2/Allocator.hpp>
|
||||
#include <xo/alloc2/GCObjectVisitor.hpp>
|
||||
#include <xo/indentlog/print/pretty.hpp>
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
class DUniqueString; // see DUniqueString.hpp
|
||||
|
||||
/** @class DDefineExpr
|
||||
* @brief an expression that introduces a variable.
|
||||
*
|
||||
* Variable may optionally be declared with a type,
|
||||
* and may come with an expression specifying an initial value
|
||||
**/
|
||||
class DDefineExpr {
|
||||
public:
|
||||
using ppindentinfo = xo::print::ppindentinfo;
|
||||
using ACollector = xo::mm::ACollector;
|
||||
using AGCObjectVisitor = xo::mm::AGCObjectVisitor;
|
||||
using VisitReason = xo::mm::VisitReason;
|
||||
using AAllocator = xo::mm::AAllocator;
|
||||
using TypeDescr = xo::reflect::TypeDescr;
|
||||
|
||||
public:
|
||||
/** @defgroup scm-defineexpr-constructors **/
|
||||
///@{
|
||||
|
||||
/** create instance: define-expr using memory from @p mm
|
||||
* with lhs name @p lhs_name and rhs expression @p rhs_expr
|
||||
**/
|
||||
static DDefineExpr * make(obj<AAllocator> mm,
|
||||
const DUniqueString * lhs_name,
|
||||
obj<AExpression> rhs_expr);
|
||||
/** create empty skeleton. Rely on this for parsing
|
||||
**/
|
||||
static DDefineExpr * make_empty(obj<AAllocator> mm);
|
||||
|
||||
DDefineExpr(DVariable * lhs_var,
|
||||
obj<AExpression> rhs);
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-definexpr-access-methods **/
|
||||
///@{
|
||||
|
||||
DVariable * lhs() const { return lhs_var_; }
|
||||
obj<AExpression> rhs() const noexcept { return rhs_; }
|
||||
const DUniqueString * name() const noexcept;
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-definexpr-bookkeeping-methods **/
|
||||
///@{
|
||||
|
||||
void assign_lhs_name(const DUniqueString * name);
|
||||
void assign_rhs(obj<AExpression> rhs);
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-defineexpr-expression-facet **/
|
||||
///@{
|
||||
|
||||
exprtype extype() const noexcept { return exprtype::define; }
|
||||
TypeRef typeref() const noexcept { return lhs_var_->typeref(); }
|
||||
TypeDescr valuetype() const noexcept { return lhs_var_->typeref().td(); }
|
||||
void assign_valuetype(TypeDescr td) noexcept;
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-defineexpr-gcobject-facet **/
|
||||
///@{
|
||||
|
||||
DDefineExpr * gco_shallow_move(obj<AGCObjectVisitor> gc) noexcept;
|
||||
void visit_gco_children(VisitReason reason, obj<AGCObjectVisitor> gc) noexcept;
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-defineexpr-printable-facet **/
|
||||
///@{
|
||||
|
||||
bool pretty(const ppindentinfo & ppii) const;
|
||||
|
||||
///@}
|
||||
|
||||
private:
|
||||
/** @defgrouop scm-defineexpr-instance-vars **/
|
||||
///@{
|
||||
|
||||
/** variable being defined by this expression.
|
||||
**/
|
||||
DVariable * lhs_var_ = nullptr;
|
||||
|
||||
/** expression for initial value of this expression
|
||||
**/
|
||||
obj<AExpression> rhs_;
|
||||
|
||||
// std::set<std::string> free_var_set_;
|
||||
|
||||
///@}
|
||||
};
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end DDefineExpr.hpp */
|
||||
161
include/xo/expression2/DGlobalSymtab.hpp
Normal file
161
include/xo/expression2/DGlobalSymtab.hpp
Normal file
|
|
@ -0,0 +1,161 @@
|
|||
/** @file DGlobalSymtab.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Jan 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Binding.hpp"
|
||||
#include "DVariable.hpp"
|
||||
#include "DTypename.hpp"
|
||||
#include <xo/object2/DArray.hpp>
|
||||
#include <xo/alloc2/GCObjectVisitor.hpp>
|
||||
#include <xo/alloc2/dp.hpp>
|
||||
#include <xo/arena/DArenaHashMap.hpp>
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
class DUniqueString;
|
||||
|
||||
/** @class DGlobalSymtab
|
||||
* @brief symbol table for toplevel environment
|
||||
*
|
||||
* We're using DArenaHashMap to store <key,binding> pairs.
|
||||
* Both of these are outside GC-space, so we don't need collector
|
||||
* to traverse these.
|
||||
**/
|
||||
class DGlobalSymtab {
|
||||
public:
|
||||
using key_type = const DUniqueString *;
|
||||
using value_type = Binding;
|
||||
using ArenaHashMapConfig = xo::map::ArenaHashMapConfig;
|
||||
using repr_type = xo::map::DArenaHashMap<key_type, Binding::slot_type>;
|
||||
using AGCObject = xo::mm::AGCObject;
|
||||
using AGCObjectVisitor = xo::mm::AGCObjectVisitor;
|
||||
using VisitReason = xo::mm::VisitReason;
|
||||
using AAllocator = xo::mm::AAllocator;
|
||||
using MemorySizeVisitor = xo::mm::MemorySizeVisitor;
|
||||
using ppindentinfo = xo::print::ppindentinfo;
|
||||
using size_type = std::uint32_t;
|
||||
|
||||
public:
|
||||
/** @defgroup scm-globalsymtab-ctors constructors **/
|
||||
///@{
|
||||
|
||||
DGlobalSymtab(dp<repr_type> var_map, DArray * vars,
|
||||
dp<repr_type> type_map, DArray * types);
|
||||
|
||||
/** move constructor (needed because dp<> deletes copy ctor) **/
|
||||
DGlobalSymtab(DGlobalSymtab && other);
|
||||
|
||||
/** create instance.
|
||||
* Use memory from @p fixed_mm for @ref map_.
|
||||
* Use memory from @p mm for DGlobalSymtab instance.
|
||||
* Hashmap for variables per @p var_cfg; for types per @p type_cfg.
|
||||
**/
|
||||
static DGlobalSymtab * _make(obj<AAllocator> mm,
|
||||
obj<AAllocator> fixed_mm,
|
||||
const ArenaHashMapConfig & var_cfg,
|
||||
const ArenaHashMapConfig & type_cfg);
|
||||
|
||||
/** like _make(..), but create fop **/
|
||||
static obj<AGCObject,DGlobalSymtab> make(obj<AAllocator> mm,
|
||||
obj<AAllocator> fixed_mm,
|
||||
const ArenaHashMapConfig & var_cfg,
|
||||
const ArenaHashMapConfig & type_cfg);
|
||||
|
||||
/** non-trivial destructor for @ref map_ **/
|
||||
~DGlobalSymtab() = default;
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-globalsymtab-access-methods access methods **/
|
||||
///@{
|
||||
|
||||
size_type n_vars() const noexcept { return var_map_->size(); }
|
||||
size_type var_capacity() const noexcept { return var_map_->capacity(); }
|
||||
|
||||
/** visit symtab-owned memory pools; call visitor(info) for each **/
|
||||
void visit_pools(const MemorySizeVisitor & visitor) const;
|
||||
|
||||
/** lookup global symbol with name @p sym **/
|
||||
DVariable * lookup_variable(const DUniqueString * sym) const noexcept;
|
||||
|
||||
/** lookup global typename with name @p sym **/
|
||||
DTypename * lookup_typename(const DUniqueString * sym) const noexcept;
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-globalsymtab-general-methods general methods **/
|
||||
///@{
|
||||
|
||||
/** update this symtab to associate @p var with @c var->name().
|
||||
* If there was a previous variable with the same name,
|
||||
* replace it with @p var.
|
||||
**/
|
||||
void upsert_variable(obj<AAllocator> mm,
|
||||
DVariable * var);
|
||||
|
||||
/** update this symtab to associate typename @p type with @c type->name().
|
||||
* If there was a previous type with the same name, replace it with
|
||||
* @p type.
|
||||
**/
|
||||
void upsert_typename(obj<AAllocator> mm,
|
||||
DTypename * type);
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-globalsymtab-symboltable-facet symboltable facet **/
|
||||
///@{
|
||||
|
||||
/** true for global symbol table **/
|
||||
bool is_global_symtab() const noexcept { return true; }
|
||||
|
||||
/** lookup binding for variable @p sym **/
|
||||
Binding lookup_binding(const DUniqueString * sym) const noexcept;
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-globalsymtab-gcobject-facet gcobject facet **/
|
||||
///@{
|
||||
|
||||
DGlobalSymtab * gco_shallow_move(obj<AGCObjectVisitor> gc) noexcept;
|
||||
void visit_gco_children(VisitReason reason, obj<AGCObjectVisitor> gc) noexcept;
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-globalsymtab-printable-facet printable facet **/
|
||||
///@{
|
||||
|
||||
/** pretty-printing support **/
|
||||
bool pretty(const ppindentinfo & ppii) const;
|
||||
|
||||
///@}
|
||||
|
||||
private:
|
||||
/** map variable symbol -> index into @ref vars_.
|
||||
* Minor point: storing offsets instead of Variables allows us to:
|
||||
* omit hash-map iteration during GC.
|
||||
* Savings when map_ slots sparsely populated.
|
||||
**/
|
||||
dp<repr_type> var_map_;
|
||||
|
||||
/** array of variables.
|
||||
* When S is a unique-string for a global symbol, then:
|
||||
* 1. var_map_[S] is unique global index i(S) for S.
|
||||
* 2. vars_[i(S)] is variable-expr var(S) for S
|
||||
* 3. var(S)->name == S
|
||||
**/
|
||||
DArray * vars_ = nullptr;
|
||||
|
||||
/** map type name -> index values into @ref types_ **/
|
||||
dp<repr_type> type_map_;
|
||||
|
||||
/** array of types.
|
||||
* When T is a unique-string for a globally-defined type, then:
|
||||
* 1. type_map_[T] is unique global index i(T) for T.
|
||||
* 2. types_[i(T)] is type type(T) for T
|
||||
* 3. type(T)->name == T
|
||||
**/
|
||||
DArray * types_ = nullptr;
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end DGlobalSymtab.hpp */
|
||||
248
include/xo/expression2/DIfElseExpr.hpp
Normal file
248
include/xo/expression2/DIfElseExpr.hpp
Normal file
|
|
@ -0,0 +1,248 @@
|
|||
/** @file DIfElseExpr.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Jan 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Expression.hpp"
|
||||
#include "TypeRef.hpp"
|
||||
#include "exprtype.hpp"
|
||||
#include <xo/alloc2/GCObjectVisitor.hpp>
|
||||
#include <xo/alloc2/Allocator.hpp>
|
||||
#include <string>
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
|
||||
/** @class DIfExpr
|
||||
* @brief abstract syntax tree for a function definition
|
||||
**/
|
||||
class DIfElseExpr {
|
||||
public:
|
||||
using AGCObjectVisitor = xo::mm::AGCObjectVisitor;
|
||||
using VisitReason = xo::mm::VisitReason;
|
||||
using AAllocator = xo::mm::AAllocator;
|
||||
using TypeDescr = xo::reflect::TypeDescr;
|
||||
using ppindentinfo = xo::print::ppindentinfo;
|
||||
|
||||
public:
|
||||
/** @defgroup scm-ifelseexpr-constructors **/
|
||||
///@{
|
||||
|
||||
/**
|
||||
* @p ifexpr_type type for value produced by if-expression.
|
||||
* same as both when_true->valuetype() and
|
||||
* when_false->valuetype().
|
||||
* @p test test-expression; always execute
|
||||
* @p when_true then-branch; executes only when test succeeds
|
||||
* @p when_false else-branch; executes only when test fails
|
||||
**/
|
||||
DIfElseExpr(TypeRef ifexpr_type,
|
||||
obj<AExpression> test_expr,
|
||||
obj<AExpression> when_true,
|
||||
obj<AExpression> when_false);
|
||||
|
||||
/** create if-else expression using memory from @p mm.
|
||||
* @p when_false can be null
|
||||
**/
|
||||
static obj<AExpression,DIfElseExpr> make(obj<AAllocator> mm,
|
||||
obj<AExpression> test,
|
||||
obj<AExpression> when_true,
|
||||
obj<AExpression> when_false);
|
||||
|
||||
/** create expression for conditional execution of
|
||||
* @p when_true or @p when_false, depending on result
|
||||
* of evaluating expression @p test
|
||||
**/
|
||||
static DIfElseExpr * _make(obj<AAllocator> mm,
|
||||
obj<AExpression> test,
|
||||
obj<AExpression> when_true,
|
||||
obj<AExpression> when_false);
|
||||
|
||||
/** create empty if-else expression using memory from @p mm **/
|
||||
static obj<AExpression,DIfElseExpr> make_empty(obj<AAllocator> mm);
|
||||
|
||||
/** create empty if-else expression using memory from @p mm **/
|
||||
static DIfElseExpr * _make_empty(obj<AAllocator> mm);
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-ifelseexpr-access-methods **/
|
||||
///@{
|
||||
|
||||
obj<AExpression> test() const noexcept { return test_; }
|
||||
obj<AExpression> when_true() const noexcept { return when_true_; }
|
||||
obj<AExpression> when_false() const noexcept { return when_false_; }
|
||||
|
||||
void assign_test(obj<AExpression> x) { this->test_ = x; }
|
||||
void assign_when_true(obj<AExpression> x) { this->when_true_ = x; }
|
||||
void assign_when_false(obj<AExpression> x) { this->when_false_ = x; }
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-ifelseexpr-expression-facet **/
|
||||
///@{
|
||||
|
||||
exprtype extype() const noexcept { return exprtype::ifexpr; }
|
||||
TypeRef typeref() const noexcept { return typeref_; }
|
||||
TypeDescr valuetype() const noexcept { return typeref_.td(); }
|
||||
void assign_valuetype(TypeDescr td) noexcept;
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-ifelseexpr-printable-facet **/
|
||||
///@{
|
||||
|
||||
bool pretty(const ppindentinfo & ppii) const;
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-ifelseexpr-gcobject-facet **/
|
||||
///@{
|
||||
|
||||
DIfElseExpr * gco_shallow_move(obj<AGCObjectVisitor> gc) noexcept;
|
||||
void visit_gco_children(VisitReason reason, obj<AGCObjectVisitor> gc) noexcept;
|
||||
|
||||
///@}
|
||||
|
||||
#ifdef NOT_YET
|
||||
virtual std::set<std::string> get_free_variables() const override {
|
||||
std::set<std::string> retval = test_->get_free_variables();
|
||||
|
||||
std::set<std::string> free_vars;
|
||||
free_vars = when_true_->get_free_variables();
|
||||
for (const auto & s : free_vars)
|
||||
retval.insert(s);
|
||||
|
||||
free_vars = when_false_->get_free_variables();
|
||||
for (const auto & s : free_vars)
|
||||
retval.insert(s);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
virtual std::size_t visit_preorder(VisitFn visitor_fn) override {
|
||||
std::size_t n = 1;
|
||||
|
||||
visitor_fn(this);
|
||||
|
||||
n += this->test_->visit_preorder(visitor_fn);
|
||||
n += this->when_true_->visit_preorder(visitor_fn);
|
||||
n += this->when_false_->visit_preorder(visitor_fn);
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
virtual std::size_t visit_layer(VisitFn visitor_fn) override {
|
||||
std::size_t n = 1;
|
||||
|
||||
visitor_fn(this);
|
||||
|
||||
n += this->test_->visit_layer(visitor_fn);
|
||||
n += this->when_true_->visit_layer(visitor_fn);
|
||||
n += this->when_false_->visit_layer(visitor_fn);
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
virtual rp<Expression> xform_layer(TransformFn xform_fn) override {
|
||||
this->test_ = this->test_->xform_layer(xform_fn);
|
||||
this->when_true_ = this->when_true_->xform_layer(xform_fn);
|
||||
this->when_false_= this->when_false_->xform_layer(xform_fn);
|
||||
|
||||
return xform_fn(this);
|
||||
}
|
||||
|
||||
virtual void attach_envs(bp<SymbolTable> p) override {
|
||||
test_->attach_envs(p);
|
||||
when_true_->attach_envs(p);
|
||||
when_false_->attach_envs(p);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef NOT_USING
|
||||
virtual std::int32_t find_free_vars(std::set<bp<Variable>> * p_set) override {
|
||||
return (test_->find_free_vars(p_set)
|
||||
+ when_true_->find_free_vars(p_set)
|
||||
+ when_false_->find_free_vars(p_set));
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef NOPE
|
||||
virtual void display(std::ostream & os) const override;
|
||||
virtual std::uint32_t pretty_print(const ppindentinfo & ppi) const override;
|
||||
#endif
|
||||
|
||||
protected:
|
||||
#ifdef NOT_YET
|
||||
/**
|
||||
* @p ifexpr_type type for value produced by if-expression.
|
||||
* same as both when_true->valuetype() and
|
||||
* when_false->valuetype().
|
||||
* @p test test-expression; always execute
|
||||
* @p when_true then-branch; executes only when test succeeds
|
||||
* @p when_false else-branch; executes only when test fails
|
||||
**/
|
||||
IfExpr(TypeDescr ifexpr_type,
|
||||
rp<Expression> test,
|
||||
rp<Expression> when_true,
|
||||
rp<Expression> when_false)
|
||||
: Expression(exprtype::ifexpr, ifexpr_type),
|
||||
test_{std::move(test)},
|
||||
when_true_{std::move(when_true)},
|
||||
when_false_{std::move(when_false)} {}
|
||||
|
||||
static TypeDescr check_consistent_valuetype(const rp<Expression> & when_true,
|
||||
const rp<Expression> & when_false);
|
||||
|
||||
/** determine if-expr valuetype **/
|
||||
void establish_valuetype();
|
||||
#endif
|
||||
|
||||
private:
|
||||
/** expression value always has type consistent
|
||||
* with this description
|
||||
**/
|
||||
TypeRef typeref_;
|
||||
/** if:
|
||||
* (if x y z)
|
||||
*
|
||||
* executes x; if true execute y; otherwise execute z
|
||||
**/
|
||||
obj<AExpression> test_;
|
||||
obj<AExpression> when_true_;
|
||||
obj<AExpression> when_false_;
|
||||
}; /*IfExpr*/
|
||||
|
||||
#ifdef NOPE
|
||||
inline rp<IfExpr>
|
||||
make_ifexpr(const rp<Expression> & test,
|
||||
const rp<Expression> & when_true,
|
||||
const rp<Expression> & when_false)
|
||||
{
|
||||
return IfExpr::make(test, when_true, when_false);
|
||||
}
|
||||
|
||||
class IfExprAccess : public IfExpr {
|
||||
public:
|
||||
static rp<IfExprAccess> make(rp<Expression> test,
|
||||
rp<Expression> when_true,
|
||||
rp<Expression> when_false);
|
||||
static rp<IfExprAccess> make_empty();
|
||||
|
||||
void assign_test(rp<Expression> x) { test_ = std::move(x); }
|
||||
void assign_when_true(rp<Expression> x);
|
||||
void assign_when_false(rp<Expression> x);
|
||||
|
||||
private:
|
||||
IfExprAccess(TypeDescr ifexpr_type,
|
||||
rp<Expression> test,
|
||||
rp<Expression> when_true,
|
||||
rp<Expression> when_false)
|
||||
: IfExpr(ifexpr_type,
|
||||
std::move(test),
|
||||
std::move(when_true),
|
||||
std::move(when_false)) {}
|
||||
};
|
||||
#endif
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end DIfElseExpr.hpp */
|
||||
133
include/xo/expression2/DLambdaExpr.hpp
Normal file
133
include/xo/expression2/DLambdaExpr.hpp
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
/** @file DLambdaExpr.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Jan 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Expression.hpp"
|
||||
#include "TypeRef.hpp"
|
||||
#include "exprtype.hpp"
|
||||
#include "DLocalSymtab.hpp"
|
||||
#include "DString.hpp"
|
||||
#include <xo/alloc2/GCObjectVisitor.hpp>
|
||||
#include <xo/facet/obj.hpp>
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class DLambdaExpr
|
||||
* @brief syntax tree for a function/procedure definition
|
||||
*
|
||||
**/
|
||||
class DLambdaExpr {
|
||||
public:
|
||||
using AGCObjectVisitor = xo::mm::AGCObjectVisitor;
|
||||
using VisitReason = xo::mm::VisitReason;
|
||||
using AAllocator = xo::mm::AAllocator;
|
||||
using TypeDescr = xo::reflect::TypeDescr;
|
||||
using ppindentinfo = xo::print::ppindentinfo;
|
||||
using size_type = DLocalSymtab::size_type;
|
||||
|
||||
public:
|
||||
|
||||
/** @defgroup scm-lambdaexpr-ctors **/
|
||||
///@{
|
||||
|
||||
DLambdaExpr(TypeRef typeref,
|
||||
const DUniqueString * name,
|
||||
DLocalSymtab * local_symtab,
|
||||
obj<AExpression> body);
|
||||
|
||||
/** create instance using memory from @p mm **/
|
||||
static obj<AExpression,DLambdaExpr> make(obj<AAllocator> mm,
|
||||
TypeRef typeref,
|
||||
const DUniqueString * name,
|
||||
DLocalSymtab * local_symtab,
|
||||
obj<AExpression> body);
|
||||
|
||||
/** create instance, using memory from @p mm **/
|
||||
static DLambdaExpr * _make(obj<AAllocator> mm,
|
||||
TypeRef typeref,
|
||||
const DUniqueString * name,
|
||||
DLocalSymtab * local_symtab,
|
||||
obj<AExpression> body);
|
||||
|
||||
/** create type description for lambda with arguments described by @p symtab
|
||||
* and return type @p return_td.
|
||||
* Load-bearing for DLambdaSsm in xo-reader2/
|
||||
**/
|
||||
static TypeDescr assemble_lambda_td(DLocalSymtab * symtab,
|
||||
TypeDescr return_td);
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-lambdaexpr-methods **/
|
||||
///@{
|
||||
|
||||
DLocalSymtab * local_symtab() const noexcept { return local_symtab_; }
|
||||
size_type n_args() const noexcept { return local_symtab_->n_vars(); }
|
||||
obj<AExpression> body_expr() const noexcept { return body_expr_; }
|
||||
|
||||
// get_free_variables()
|
||||
// visit_preorder()
|
||||
// visit_layer()
|
||||
// xform_layer()
|
||||
// attach_envs(SymbolTable*)
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-lambdaexpr-expression-facet **/
|
||||
///@{
|
||||
|
||||
exprtype extype() const noexcept;
|
||||
TypeRef typeref() const noexcept;
|
||||
TypeDescr valuetype() const noexcept;
|
||||
void assign_valuetype(TypeDescr td) noexcept;
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-lambdaexpr-gcobject-facet **/
|
||||
///@{
|
||||
|
||||
std::size_t shallow_size() const noexcept;
|
||||
DLambdaExpr * gco_shallow_move(obj<AGCObjectVisitor> gc) noexcept;
|
||||
void visit_gco_children(VisitReason reason, obj<AGCObjectVisitor> gc) noexcept;
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-lambdaexpr-printable-facet **/
|
||||
///@{
|
||||
|
||||
bool pretty(const ppindentinfo & ppii) const;
|
||||
|
||||
///@}
|
||||
|
||||
private:
|
||||
/** expression value always has type consistent
|
||||
* with description here
|
||||
**/
|
||||
TypeRef typeref_;
|
||||
|
||||
/** name for this lambda (generated if necessary) **/
|
||||
const DUniqueString * name_ = nullptr;
|
||||
|
||||
#ifdef NOT_YET // when enabled, need to visit forward_children()
|
||||
/** e.g.
|
||||
* i64(f64,string)
|
||||
* for function of two arguments with types (f64, string) respectively,
|
||||
* that returns an i64.
|
||||
**/
|
||||
const DUniqueString * type_name_str_ = nullptr;
|
||||
#endif
|
||||
|
||||
/** symbol table for lambda arguments **/
|
||||
DLocalSymtab * local_symtab_ = nullptr;;
|
||||
|
||||
/** expression for function body **/
|
||||
obj<AExpression> body_expr_;
|
||||
|
||||
// free_var_set
|
||||
// captured_var_set
|
||||
// layer_var_map
|
||||
// nested_lambda_map
|
||||
};
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end DLambdaExpr.hpp */
|
||||
128
include/xo/expression2/DLocalSymtab.hpp
Normal file
128
include/xo/expression2/DLocalSymtab.hpp
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
/** @file DLocalSymtab.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Jan 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Binding.hpp"
|
||||
#include "DVariable.hpp"
|
||||
#include "DUniqueString.hpp"
|
||||
#include <xo/object2/DArray.hpp>
|
||||
#include <xo/alloc2/GCObjectVisitor.hpp>
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class DLocalSymtab
|
||||
* @brief symbol table for a local stack frame
|
||||
**/
|
||||
struct DLocalSymtab {
|
||||
public:
|
||||
using DArray = xo::scm::DArray;
|
||||
using ppindentinfo = xo::print::ppindentinfo;
|
||||
using AGCObject = xo::mm::AGCObject;
|
||||
using VisitReason = xo::mm::VisitReason;
|
||||
using AGCObjectVisitor = xo::mm::AGCObjectVisitor;
|
||||
using AAllocator = xo::mm::AAllocator;
|
||||
/* note: uint16_t would be fine too */
|
||||
using size_type = std::uint32_t;
|
||||
|
||||
struct Slot {
|
||||
Slot() = default;
|
||||
explicit Slot(DVariable * var) : var_{var} {}
|
||||
|
||||
/** variable representing a formal argument.
|
||||
* binding will be correct only within the same layer
|
||||
* as top-level lambda body
|
||||
* (i.e. up to the doorstep of each and every nested lambda)
|
||||
**/
|
||||
DVariable * var_ = nullptr;
|
||||
};
|
||||
|
||||
public:
|
||||
/** @defgroup scm-lambdaexpr-constructors **/
|
||||
///@{
|
||||
|
||||
/** empty instance with parent @p p, using arrays @p vars for variables
|
||||
* and @p types for type definitions.
|
||||
**/
|
||||
DLocalSymtab(DLocalSymtab * p, DArray * nv, DArray * nt);
|
||||
|
||||
/** scaffold empty symtab instance,
|
||||
* capacity for @p nv vars and @p nt types,
|
||||
* using memory from allocator @p mm.
|
||||
* Symtab chains to parent @p p.
|
||||
**/
|
||||
static DLocalSymtab * _make_empty(obj<AAllocator> mm,
|
||||
DLocalSymtab * p,
|
||||
size_type nv,
|
||||
size_type nt);
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-lambdaexpr-methods **/
|
||||
///@{
|
||||
|
||||
DLocalSymtab * parent() const noexcept { return parent_; }
|
||||
//size_type capacity() const noexcept { return capacity_; }
|
||||
size_type n_vars() const noexcept { return vars_->size(); }
|
||||
size_type n_types() const noexcept { return types_->size(); }
|
||||
|
||||
DVariable * lookup_var(Binding ix) noexcept;
|
||||
|
||||
/** increase slot size (provided below capacity) to append
|
||||
* binding for one local variable. Local variable will be allocated
|
||||
* from @p mm, named @p name, with type described by @p typeref.
|
||||
**/
|
||||
Binding append_var(obj<AAllocator> mm,
|
||||
const DUniqueString * name,
|
||||
TypeRef typeref);
|
||||
|
||||
/** increase slot size (provided below capacity) to append
|
||||
* binding for one local type. Local type will be allocated
|
||||
* from @p mm, named @p name, with type described by @p type.
|
||||
**/
|
||||
void append_type(obj<AAllocator> mm,
|
||||
const DUniqueString * name,
|
||||
obj<AType> type);
|
||||
|
||||
///@}
|
||||
/** @defgroup xo-localsymtab-symboltable-facet symboltable facet**/
|
||||
///@{
|
||||
|
||||
/** true for global symbol table **/
|
||||
bool is_global_symtab() const noexcept { return false; }
|
||||
|
||||
/** lookup binding for variable @p sym **/
|
||||
Binding lookup_binding(const DUniqueString * sym) const noexcept;
|
||||
|
||||
///@}
|
||||
/** @defgroup xo-localsymtab-gcobject-facet gcobject facet **/
|
||||
///@{
|
||||
|
||||
DLocalSymtab * gco_shallow_move(obj<AGCObjectVisitor> gc) noexcept;
|
||||
void visit_gco_children(VisitReason reason, obj<AGCObjectVisitor> gc) noexcept;
|
||||
|
||||
///@}
|
||||
/** @defgroup xo-localsymtab-printable-facet printable facet **/
|
||||
///@{
|
||||
|
||||
bool pretty(const ppindentinfo & ppii) const;
|
||||
|
||||
///@}
|
||||
|
||||
private:
|
||||
/** parent symbol table from scoping surrounding this one **/
|
||||
DLocalSymtab * parent_ = nullptr;
|
||||
/** variables owned by (declared in) this symbol table
|
||||
* vars_[i] is convertible to obj<AGCObject>
|
||||
**/
|
||||
DArray * vars_ = nullptr;
|
||||
/** types owned by (defined in) this symbol table
|
||||
* types_[i] is convertible to obj<AType>
|
||||
**/
|
||||
DArray * types_ = nullptr;
|
||||
};
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end DLocalSymtab.hpp */
|
||||
93
include/xo/expression2/DSequenceExpr.hpp
Normal file
93
include/xo/expression2/DSequenceExpr.hpp
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
/** @file DSequenceExpr.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Jan 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Expression.hpp"
|
||||
#include "TypeRef.hpp"
|
||||
#include <xo/object2/DArray.hpp>
|
||||
#include <xo/alloc2/GCObjectVisitor.hpp>
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
|
||||
/** syntax for a sequence of expressions
|
||||
* {
|
||||
* expr(1);
|
||||
* expr(2);
|
||||
* ...
|
||||
* expr(n);
|
||||
* }
|
||||
**/
|
||||
class DSequenceExpr {
|
||||
public:
|
||||
using AGCObjectVisitor = xo::mm::AGCObjectVisitor;
|
||||
using VisitReason = xo::mm::VisitReason;
|
||||
using AAllocator = xo::mm::AAllocator;
|
||||
using TypeDescr = xo::reflect::TypeDescr;
|
||||
using size_type = DArray::size_type;
|
||||
using ppindentinfo = xo::print::ppindentinfo;
|
||||
|
||||
public:
|
||||
DSequenceExpr() ;
|
||||
DSequenceExpr(DArray * xv);
|
||||
|
||||
/** create empty sequence using memory from @p mm **/
|
||||
static obj<AExpression,DSequenceExpr> make_empty(obj<AAllocator> mm);
|
||||
|
||||
/** create empty sequence expression using mmeory from @p mm **/
|
||||
static DSequenceExpr * _make_empty(obj<AAllocator> mm);
|
||||
|
||||
size_type size() const noexcept;
|
||||
obj<AExpression> operator[](std::size_t i) const;
|
||||
|
||||
/** append @p expr to the end of this sequence;
|
||||
* use memory from @p mm if need to expand storage
|
||||
**/
|
||||
void push_back(obj<AAllocator> mm,
|
||||
obj<AExpression> expr);
|
||||
|
||||
// get_free_variables();
|
||||
// visit_preorder();
|
||||
// visit_layer();
|
||||
// xform_layer()
|
||||
// attach_envs()
|
||||
|
||||
/** @defgroup scm-ifelseexpr-expression-facets **/
|
||||
///@{
|
||||
|
||||
exprtype extype() const noexcept { return exprtype::sequence; }
|
||||
TypeRef typeref() const noexcept { return typeref_; }
|
||||
TypeDescr valuetype() const noexcept { return typeref_.td(); }
|
||||
void assign_valuetype(TypeDescr td) noexcept;
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-sequenceexpr-printable-facet printable facet methods **/
|
||||
///@{
|
||||
|
||||
/** pretty-printing driver; combine layout+printing **/
|
||||
bool pretty(const ppindentinfo & ppii) const;
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-sequenceexpr-gcobject-facet gcobject facet methods **/
|
||||
///@{
|
||||
|
||||
DSequenceExpr * gco_shallow_move(obj<AGCObjectVisitor> gc) noexcept;
|
||||
void visit_gco_children(VisitReason reason, obj<AGCObjectVisitor> gc) noexcept;
|
||||
|
||||
///@}
|
||||
|
||||
private:
|
||||
/** expression value always has type consistent with this description
|
||||
**/
|
||||
TypeRef typeref_;
|
||||
/** array of expressions **/
|
||||
DArray * expr_v_ = nullptr;
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end DSequenceExpr.hpp */
|
||||
78
include/xo/expression2/DTypename.hpp
Normal file
78
include/xo/expression2/DTypename.hpp
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
/** @file DTypename.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Mar 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "DUniqueString.hpp"
|
||||
#include <xo/type/Type.hpp>
|
||||
#include <xo/alloc2/GCObjectVisitor.hpp>
|
||||
#include <xo/printable2/Printable.hpp>
|
||||
#include <xo/indentlog/print/pretty.hpp>
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
|
||||
/** @class DTypename
|
||||
* @brief Container for a named type
|
||||
*
|
||||
* Represents the result of syntax like
|
||||
* 1. deftype Foo :: i64;
|
||||
* 2. deftype FooAlias :: Foo;
|
||||
**/
|
||||
class DTypename {
|
||||
public:
|
||||
using ppindentinfo = xo::print::ppindentinfo;
|
||||
using AGCObjectVisitor = xo::mm::AGCObjectVisitor;
|
||||
using VisitReason = xo::mm::VisitReason;
|
||||
using AGCObject = xo::mm::AGCObject;
|
||||
using AAllocator = xo::mm::AAllocator;
|
||||
|
||||
public:
|
||||
DTypename(const DUniqueString * name,
|
||||
obj<AType> type);
|
||||
|
||||
/** create instance
|
||||
* @p mm memory allocator
|
||||
* @p name type name
|
||||
* @p type type definition
|
||||
**/
|
||||
static DTypename * _make(obj<AAllocator> mm,
|
||||
const DUniqueString * name,
|
||||
obj<AType> type);
|
||||
/** create fop for new instance **/
|
||||
static obj<AGCObject,DTypename> make(obj<AAllocator> mm,
|
||||
const DUniqueString * name,
|
||||
obj<AType> type);
|
||||
|
||||
const DUniqueString * name() const noexcept { return name_; }
|
||||
obj<AType> type() const noexcept { return type_; }
|
||||
|
||||
void assign_name(const DUniqueString * name) { this->name_ = name; }
|
||||
|
||||
|
||||
/** @defgroup scm-typename-gcobject-facet **/
|
||||
///@{
|
||||
|
||||
DTypename * gco_shallow_move(obj<AGCObjectVisitor> gc) noexcept;
|
||||
void visit_gco_children(VisitReason reason, obj<AGCObjectVisitor> gc) noexcept;
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-typename-printable-facet **/
|
||||
///@{
|
||||
|
||||
bool pretty(const ppindentinfo & ppii) const;
|
||||
|
||||
///@}
|
||||
|
||||
private:
|
||||
/** symbol name **/
|
||||
const DUniqueString * name_ = nullptr;
|
||||
/** type defintion. Everything but the name **/
|
||||
obj<AType> type_;
|
||||
};
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end DTypename.hpp */
|
||||
85
include/xo/expression2/DVarRef.hpp
Normal file
85
include/xo/expression2/DVarRef.hpp
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
/** @file DVarRef.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Feb 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Variable.hpp"
|
||||
#include <xo/alloc2/GCObjectVisitor.hpp>
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
|
||||
/** @class DVarRef
|
||||
* @brief syntax for a variable reference
|
||||
*
|
||||
* Reference to a known variable possibly
|
||||
* defined in another scope.
|
||||
* For non-local non-global variables,
|
||||
**/
|
||||
class DVarRef {
|
||||
public:
|
||||
using ppindentinfo = xo::print::ppindentinfo;
|
||||
using AGCObjectVisitor = xo::mm::AGCObjectVisitor;
|
||||
using VisitReason = xo::mm::VisitReason;
|
||||
using AAllocator = xo::mm::AAllocator;
|
||||
using TypeDescr = xo::reflect::TypeDescr;
|
||||
|
||||
public:
|
||||
DVarRef(DVariable * vardef,
|
||||
Binding path);
|
||||
|
||||
/** create instance
|
||||
* @p mm memory allocator
|
||||
* @p vardef variable definition (name, typeref, binding)
|
||||
* @p link number of lexical scope boundaries we must cross
|
||||
* to reach scope containing @p vardef.
|
||||
* Only relevant for non-global vardef
|
||||
**/
|
||||
static DVarRef * make(obj<AAllocator> mm,
|
||||
DVariable * vardef,
|
||||
int32_t link);
|
||||
|
||||
const DUniqueString * name() const;
|
||||
Binding path() const { return path_; }
|
||||
|
||||
/** @defgroup scm-variable-expression-facet **/
|
||||
///@{
|
||||
|
||||
exprtype extype() const noexcept { return exprtype::varref; }
|
||||
TypeRef typeref() const noexcept;
|
||||
TypeDescr valuetype() const noexcept;
|
||||
void assign_valuetype(TypeDescr td) noexcept;
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-variable-gcobject-facet **/
|
||||
///@{
|
||||
|
||||
DVarRef * gco_shallow_move(obj<AGCObjectVisitor> gc) noexcept;
|
||||
void visit_gco_children(VisitReason reason, obj<AGCObjectVisitor> gc) noexcept;
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-variable-printable-facet **/
|
||||
///@{
|
||||
|
||||
bool pretty(const ppindentinfo & ppii) const;
|
||||
|
||||
///@}
|
||||
|
||||
private:
|
||||
/** variable definition. Created in the sccope where variable introduced.
|
||||
* Has an associated @ref Binding, but that binding is only correct
|
||||
* around any nested scopes.
|
||||
**/
|
||||
DVariable * vardef_ = nullptr;
|
||||
|
||||
/** at runtime: navigate environemnt via this path to get
|
||||
* runtime memory location for this variable
|
||||
**/
|
||||
Binding path_;
|
||||
};
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end DVarRef.hpp */
|
||||
93
include/xo/expression2/DVariable.hpp
Normal file
93
include/xo/expression2/DVariable.hpp
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
/** @file DVariable.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Jan 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "DUniqueString.hpp"
|
||||
#include "Binding.hpp"
|
||||
#include "TypeRef.hpp"
|
||||
#include "exprtype.hpp"
|
||||
#include <xo/alloc2/GCObjectVisitor.hpp>
|
||||
#include <xo/reflect/TypeDescr.hpp>
|
||||
#include <xo/indentlog/print/pretty.hpp>
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
|
||||
/** @class DVariable
|
||||
* @brief syntax for a variable reference
|
||||
**/
|
||||
class DVariable {
|
||||
public:
|
||||
using ppindentinfo = xo::print::ppindentinfo;
|
||||
using AGCObjectVisitor = xo::mm::AGCObjectVisitor;
|
||||
using VisitReason = xo::mm::VisitReason;
|
||||
using AAllocator = xo::mm::AAllocator;
|
||||
using TypeDescr = xo::reflect::TypeDescr;
|
||||
|
||||
public:
|
||||
/** create instance
|
||||
* @p mm memory allocator
|
||||
* @p name variable name
|
||||
* @p typeref type information for legal values
|
||||
* (possibly just placeholder when relying on inference)
|
||||
* @p path binding path to runtime value.
|
||||
* This may be computed after parsing;
|
||||
* mnust be resolved before execution.
|
||||
**/
|
||||
static DVariable * make(obj<AAllocator> mm,
|
||||
const DUniqueString * name,
|
||||
const TypeRef & typeref,
|
||||
Binding path = Binding());
|
||||
|
||||
DVariable(const DUniqueString * name,
|
||||
const TypeRef & typeref,
|
||||
Binding path);
|
||||
|
||||
const DUniqueString * name() const { return name_; }
|
||||
Binding path() const { return path_; }
|
||||
|
||||
void assign_name(const DUniqueString * name) { this->name_ = name; }
|
||||
void assign_path(Binding b) { this->path_ = b; }
|
||||
|
||||
/** @defgroup scm-variable-expression-facet **/
|
||||
///@{
|
||||
|
||||
exprtype extype() const noexcept { return exprtype::variable; }
|
||||
TypeRef typeref() const noexcept { return typeref_; }
|
||||
TypeDescr valuetype() const noexcept { return typeref_.td(); };
|
||||
void assign_valuetype(TypeDescr td) noexcept;
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-variable-gcobject-facet **/
|
||||
///@{
|
||||
|
||||
DVariable * gco_shallow_move(obj<AGCObjectVisitor> gc) noexcept;
|
||||
void visit_gco_children(VisitReason reason, obj<AGCObjectVisitor> gc) noexcept;
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-variable-printable-facet **/
|
||||
///@{
|
||||
|
||||
bool pretty(const ppindentinfo & ppii) const;
|
||||
|
||||
///@}
|
||||
|
||||
private:
|
||||
/** symbol name **/
|
||||
const DUniqueString * name_ = nullptr;
|
||||
/** variable value always has type consistent
|
||||
* with this description
|
||||
**/
|
||||
TypeRef typeref_;
|
||||
/** at runtime: navigate environemnt via this path to get
|
||||
* runtime memory location for this variable
|
||||
**/
|
||||
Binding path_;
|
||||
};
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end DVariable.hpp */
|
||||
13
include/xo/expression2/DefineExpr.hpp
Normal file
13
include/xo/expression2/DefineExpr.hpp
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
/** @file DefineExpr.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Feb 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "DDefineExpr.hpp"
|
||||
#include "detail/IExpression_DDefineExpr.hpp"
|
||||
#include "define/IGCObject_DDefineExpr.hpp"
|
||||
#include "detail/IPrintable_DDefineExpr.hpp"
|
||||
|
||||
/* end DefineExpr.hpp */
|
||||
22
include/xo/expression2/Expression.hpp
Normal file
22
include/xo/expression2/Expression.hpp
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
/** @file Expression.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/Expression.json5]
|
||||
* 2. jinja2 template for facet .hpp file:
|
||||
* [facet.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/Expression.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "detail/AExpression.hpp"
|
||||
#include "detail/IExpression_Any.hpp"
|
||||
#include "detail/IExpression_Xfer.hpp"
|
||||
#include "detail/RExpression.hpp"
|
||||
|
||||
|
||||
/* end Expression.hpp */
|
||||
13
include/xo/expression2/GlobalSymtab.hpp
Normal file
13
include/xo/expression2/GlobalSymtab.hpp
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
/** @file GlobalSymtab.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Feb 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "DGlobalSymtab.hpp"
|
||||
#include "symtab/ISymbolTable_DGlobalSymtab.hpp"
|
||||
#include "symtab/IGCObject_DGlobalSymtab.hpp"
|
||||
#include "symtab/IPrintable_DGlobalSymtab.hpp"
|
||||
|
||||
/* end GlobalSymtab.hpp */
|
||||
13
include/xo/expression2/IfElseExpr.hpp
Normal file
13
include/xo/expression2/IfElseExpr.hpp
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
/** @file IfElseExpr.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Feb 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "DIfElseExpr.hpp"
|
||||
#include "detail/IExpression_DIfElseExpr.hpp"
|
||||
#include "detail/IGCObject_DIfElseExpr.hpp"
|
||||
#include "detail/IPrintable_DIfElseExpr.hpp"
|
||||
|
||||
/* end IfElseExpr.hpp */
|
||||
13
include/xo/expression2/LambdaExpr.hpp
Normal file
13
include/xo/expression2/LambdaExpr.hpp
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
/** @file LambdaExpr.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Feb 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "DLambdaExpr.hpp"
|
||||
#include "detail/IExpression_DLambdaExpr.hpp"
|
||||
#include "detail/IGCObject_DLambdaExpr.hpp"
|
||||
#include "detail/IPrintable_DLambdaExpr.hpp"
|
||||
|
||||
/* end LambdaExpr.hpp */
|
||||
13
include/xo/expression2/LocalSymtab.hpp
Normal file
13
include/xo/expression2/LocalSymtab.hpp
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
/** @file LocalSymtab.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Feb 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "DLocalSymtab.hpp"
|
||||
#include "symtab/ISymbolTable_DLocalSymtab.hpp"
|
||||
#include "symtab/IGCObject_DLocalSymtab.hpp"
|
||||
#include "symtab/IPrintable_DLocalSymtab.hpp"
|
||||
|
||||
/* end LocalSymtab.hpp */
|
||||
14
include/xo/expression2/SequenceExpr.hpp
Normal file
14
include/xo/expression2/SequenceExpr.hpp
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
/** @file SequenceExpr.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Feb 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "DSequenceExpr.hpp"
|
||||
#include "detail/IExpression_DSequenceExpr.hpp"
|
||||
#include "detail/IGCObject_DSequenceExpr.hpp"
|
||||
#include "detail/IPrintable_DSequenceExpr.hpp"
|
||||
|
||||
/* end SequenceExpr.hpp */
|
||||
|
||||
25
include/xo/expression2/SetupExpression2.hpp
Normal file
25
include/xo/expression2/SetupExpression2.hpp
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
/** @file SetupExpression2.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Jan 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <xo/alloc2/Collector.hpp>
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
class SetupExpression2 {
|
||||
public:
|
||||
using ACollector = xo::mm::ACollector;
|
||||
|
||||
public:
|
||||
/** Register expression2 (facet,impl) combinations with FacetRegistry **/
|
||||
static bool register_facets();
|
||||
/** Register expression2 (facet,impl) combinations with FacetRegistry **/
|
||||
static bool register_types(obj<ACollector> gc);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/* end SetupExpression2.hpp */
|
||||
22
include/xo/expression2/SymbolTable.hpp
Normal file
22
include/xo/expression2/SymbolTable.hpp
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
/** @file SymbolTable.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/SymbolTable.json5]
|
||||
* 2. jinja2 template for facet .hpp file:
|
||||
* [facet.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/SymbolTable.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "symtab/ASymbolTable.hpp"
|
||||
#include "symtab/ISymbolTable_Any.hpp"
|
||||
#include "symtab/ISymbolTable_Xfer.hpp"
|
||||
#include "symtab/RSymbolTable.hpp"
|
||||
|
||||
|
||||
/* end SymbolTable.hpp */
|
||||
111
include/xo/expression2/TypeRef.hpp
Normal file
111
include/xo/expression2/TypeRef.hpp
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
/** @file TypeRef.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Jan 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <xo/type/Type.hpp>
|
||||
#include <xo/reflect/TypeDescr.hpp>
|
||||
#include <xo/alloc2/Collector.hpp>
|
||||
#include <xo/alloc2/GCObjectVisitor.hpp>
|
||||
#include <xo/flatstring/flatstring.hpp>
|
||||
#include <xo/indentlog/print/pretty.hpp>
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class TypeRef
|
||||
* @brief name and (when established) resolution for type
|
||||
* associated with an expression
|
||||
*
|
||||
* Type inference / unification operates on
|
||||
* @ref xo::scm::TypeBlueprint instances. See also!
|
||||
**/
|
||||
class TypeRef {
|
||||
public:
|
||||
using TypeDescr = xo::reflect::TypeDescr;
|
||||
using type_var = flatstring<20>;
|
||||
using prefix_type = flatstring<8>;
|
||||
using AGCObjectVisitor = xo::mm::AGCObjectVisitor;
|
||||
using VisitReason = xo::mm::VisitReason;
|
||||
using ppindentinfo = xo::print::ppindentinfo;
|
||||
|
||||
public:
|
||||
TypeRef() = default;
|
||||
TypeRef(const type_var & id, obj<AType> type);
|
||||
|
||||
/** trivial typeref, where already resolved.
|
||||
* Require: @p td non-null
|
||||
**/
|
||||
static TypeRef resolved(TypeDescr td);
|
||||
|
||||
/** trivial typeref, where already resolved **/
|
||||
static TypeRef resolved(obj<AType> type);
|
||||
|
||||
/** if @p type is non-null
|
||||
* -> type already resolved
|
||||
* else
|
||||
* -> generate unique typevar name, starting with @p prefix
|
||||
**/
|
||||
static TypeRef dwim(prefix_type prefix, obj<AType> type);
|
||||
|
||||
/** if @p td is non-null
|
||||
* -> type is already resolved
|
||||
*
|
||||
* if type is not determined (i.e. @p td is nullptr):
|
||||
* -> generate and store type variable name.
|
||||
**/
|
||||
static TypeRef dwim(prefix_type prefix, TypeDescr td);
|
||||
|
||||
/** generate a unique type-variable name,
|
||||
* that begins with @p prefix
|
||||
**/
|
||||
static type_var generate_unique(prefix_type prefix);
|
||||
|
||||
const type_var & id() const noexcept { return id_; }
|
||||
TypeDescr td() const noexcept { return td_; }
|
||||
|
||||
/** true iff type at this location has been resolved **/
|
||||
bool is_resolved() const noexcept;
|
||||
|
||||
/** resolve TypeRef by supplying final type-description **/
|
||||
void resolve(TypeDescr td) noexcept { td_ = td; }
|
||||
|
||||
/** pretty-printer support **/
|
||||
bool pretty(const ppindentinfo & ppii) const;
|
||||
|
||||
/** gc support **/
|
||||
void visit_gco_children(VisitReason reason, obj<AGCObjectVisitor> gc) noexcept;
|
||||
|
||||
private:
|
||||
TypeRef(const type_var & id, TypeDescr td);
|
||||
|
||||
private:
|
||||
/** unique (probably generated) name for type at this location **/
|
||||
type_var id_;
|
||||
|
||||
/** Type, when resolved **/
|
||||
obj<AType> type_;
|
||||
|
||||
/** Description for concrete type, once resolved.
|
||||
* May be null when this TypeRef created,
|
||||
* but expected to be immutable once established.
|
||||
**/
|
||||
TypeDescr td_ = nullptr;
|
||||
};
|
||||
} /*namespace scm*/
|
||||
|
||||
namespace print {
|
||||
/** pretty printer in <xo/indentlog/print/pretty.hpp> relies on this specialization
|
||||
* to handle TypeRef instances
|
||||
**/
|
||||
template <>
|
||||
struct ppdetail<xo::scm::TypeRef> {
|
||||
static inline bool print_pretty(const ppindentinfo & ppii, const xo::scm::TypeRef x) {
|
||||
return x.pretty(ppii);
|
||||
}
|
||||
};
|
||||
}
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end TypeRef.hpp */
|
||||
12
include/xo/expression2/Typename.hpp
Normal file
12
include/xo/expression2/Typename.hpp
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
/** @file Typename.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Mar 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "DTypename.hpp"
|
||||
#include "typename/IGCObject_DTypename.hpp"
|
||||
#include "typename/IPrintable_DTypename.hpp"
|
||||
|
||||
/* end Typename.hpp */
|
||||
13
include/xo/expression2/VarRef.hpp
Normal file
13
include/xo/expression2/VarRef.hpp
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
/** @file VarRef.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Feb 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "DVarRef.hpp"
|
||||
#include "detail/IExpression_DVarRef.hpp"
|
||||
#include "detail/IGCObject_DVarRef.hpp"
|
||||
#include "detail/IPrintable_DVarRef.hpp"
|
||||
|
||||
/* end VarRef.hpp */
|
||||
13
include/xo/expression2/Variable.hpp
Normal file
13
include/xo/expression2/Variable.hpp
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
/** @file Variable.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Feb 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "DVariable.hpp"
|
||||
#include "variable/IExpression_DVariable.hpp"
|
||||
#include "variable/IGCObject_DVariable.hpp"
|
||||
#include "variable/IPrintable_DVariable.hpp"
|
||||
|
||||
/* end Variable.hpp */
|
||||
69
include/xo/expression2/define/IGCObject_DDefineExpr.hpp
Normal file
69
include/xo/expression2/define/IGCObject_DDefineExpr.hpp
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
/** @file IGCObject_DDefineExpr.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IGCObject_DDefineExpr.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IGCObject_DDefineExpr.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "GCObject.hpp"
|
||||
#include <xo/alloc2/GCObject.hpp>
|
||||
#include <xo/alloc2/Allocator.hpp>
|
||||
#include "DDefineExpr.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IGCObject_DDefineExpr; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::mm::AGCObject,
|
||||
xo::scm::DDefineExpr>
|
||||
{
|
||||
using ImplType = xo::mm::IGCObject_Xfer
|
||||
<xo::scm::DDefineExpr,
|
||||
xo::scm::IGCObject_DDefineExpr>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IGCObject_DDefineExpr
|
||||
**/
|
||||
class IGCObject_DDefineExpr {
|
||||
public:
|
||||
/** @defgroup scm-gcobject-ddefineexpr-type-traits **/
|
||||
///@{
|
||||
using size_type = xo::mm::AGCObject::size_type;
|
||||
using AAllocator = xo::mm::AGCObject::AAllocator;
|
||||
using AGCObjectVisitor = xo::mm::AGCObject::AGCObjectVisitor;
|
||||
using VisitReason = xo::mm::AGCObject::VisitReason;
|
||||
using Copaque = xo::mm::AGCObject::Copaque;
|
||||
using Opaque = xo::mm::AGCObject::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-gcobject-ddefineexpr-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
|
||||
// non-const methods
|
||||
/** move instance using object visitor.
|
||||
Arguably abusing the word 'visitor' here **/
|
||||
static Opaque gco_shallow_move(DDefineExpr & self, obj<AGCObjectVisitor> gc) noexcept;
|
||||
/** Invoke fn.visit_child(iface,data) for each child GCObject pointer.
|
||||
Context: provides address of data pointer so it can be updated in place
|
||||
when @p fn invokes garbage collector reentry point **/
|
||||
static void visit_gco_children(DDefineExpr & self, VisitReason reason, obj<AGCObjectVisitor> fn) noexcept;
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
89
include/xo/expression2/detail/AExpression.hpp
Normal file
89
include/xo/expression2/detail/AExpression.hpp
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
/** @file AExpression.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/Expression.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [abstract_facet.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/Expression.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
// includes (via {facet_includes})
|
||||
#include "TypeRef.hpp"
|
||||
#include "exprtype.hpp"
|
||||
#include <xo/reflect/TypeDescr.hpp>
|
||||
#include <xo/facet/obj.hpp>
|
||||
#include <xo/facet/facet_implementation.hpp>
|
||||
#include <xo/facet/typeseq.hpp>
|
||||
|
||||
// {pretext} here
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
|
||||
using Copaque = const void *;
|
||||
using Opaque = void *;
|
||||
|
||||
/**
|
||||
Representation for executable Schematika expressions
|
||||
**/
|
||||
class AExpression {
|
||||
public:
|
||||
/** @defgroup scm-expression-type-traits **/
|
||||
///@{
|
||||
// types
|
||||
/** integer identifying a type **/
|
||||
using typeseq = xo::facet::typeseq;
|
||||
using Copaque = const void *;
|
||||
using Opaque = void *;
|
||||
/** struct describing a type **/
|
||||
using TypeDescr = xo::reflect::TypeDescr;
|
||||
///@}
|
||||
|
||||
/** @defgroup scm-expression-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
/** An uninitialized AExpression instance will have zero vtable pointer (per {linux,osx} abi).
|
||||
* Use case for this is narrow. We go to some lengths to avoid null vtable pointers. For example
|
||||
* obj<AFacet> will have non-null vtable (via IFacet_Any) with all methods terminating.
|
||||
**/
|
||||
bool _has_null_vptr() const noexcept { return *reinterpret_cast<const void * const *>(this) == nullptr; }
|
||||
/** RTTI: unique id# for actual runtime data representation **/
|
||||
virtual typeseq _typeseq() const noexcept = 0;
|
||||
/** destroy instance @p d; calls c++ dtor only for actual runtime type; does not recover memory **/
|
||||
virtual void _drop(Opaque d) const noexcept = 0;
|
||||
/** expression type (constant | apply | ..) **/
|
||||
virtual exprtype extype(Copaque data) const noexcept = 0;
|
||||
/** placeholder for type giving possible values for this expression **/
|
||||
virtual TypeRef typeref(Copaque data) const noexcept = 0;
|
||||
/** type giving possible values for this expression. Maybe null before typecheck **/
|
||||
virtual TypeDescr valuetype(Copaque data) const noexcept = 0;
|
||||
|
||||
// nonconst methods
|
||||
/** assing to valuetype member. Useful when scaffolding expressions **/
|
||||
virtual void assign_valuetype(Opaque data, TypeDescr td) noexcept = 0;
|
||||
///@}
|
||||
}; /*AExpression*/
|
||||
|
||||
/** Implementation IExpression_DRepr of AExpression for state DRepr
|
||||
* should provide a specialization:
|
||||
*
|
||||
* template <>
|
||||
* struct xo::facet::FacetImplementation<AExpression, DRepr> {
|
||||
* using Impltype = IExpression_DRepr;
|
||||
* };
|
||||
*
|
||||
* then IExpression_ImplType<DRepr> --> IExpression_DRepr
|
||||
**/
|
||||
template <typename DRepr>
|
||||
using IExpression_ImplType = xo::facet::FacetImplType<AExpression, DRepr>;
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* AExpression.hpp */
|
||||
92
include/xo/expression2/detail/IExpression_Any.hpp
Normal file
92
include/xo/expression2/detail/IExpression_Any.hpp
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
/** @file IExpression_Any.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/Expression.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_any.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/Expression.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "AExpression.hpp"
|
||||
#include <xo/facet/obj.hpp>
|
||||
|
||||
namespace xo { namespace scm { class IExpression_Any; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
|
||||
template <>
|
||||
struct FacetImplementation<xo::scm::AExpression,
|
||||
DVariantPlaceholder>
|
||||
{
|
||||
using ImplType = xo::scm::IExpression_Any;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
|
||||
/** @class IExpression_Any
|
||||
* @brief AExpression implementation for empty variant instance
|
||||
**/
|
||||
class IExpression_Any : public AExpression {
|
||||
public:
|
||||
/** @defgroup scm-expression-any-type-traits **/
|
||||
///@{
|
||||
|
||||
/** integer identifying a type **/
|
||||
using typeseq = xo::facet::typeseq;
|
||||
using TypeDescr = AExpression::TypeDescr;
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-expression-any-methods **/
|
||||
///@{
|
||||
|
||||
const AExpression * iface() const { return std::launder(this); }
|
||||
|
||||
// from AExpression
|
||||
|
||||
// builtin methods
|
||||
typeseq _typeseq() const noexcept override { return s_typeseq; }
|
||||
[[noreturn]] void _drop(Opaque) const noexcept override { _fatal(); }
|
||||
|
||||
// const methods
|
||||
[[noreturn]] exprtype extype(Copaque) const noexcept override { _fatal(); }
|
||||
[[noreturn]] TypeRef typeref(Copaque) const noexcept override { _fatal(); }
|
||||
[[noreturn]] TypeDescr valuetype(Copaque) const noexcept override { _fatal(); }
|
||||
|
||||
// nonconst methods
|
||||
[[noreturn]] void assign_valuetype(Opaque, TypeDescr) noexcept override;
|
||||
|
||||
///@}
|
||||
|
||||
private:
|
||||
/** @defgraoup scm-expression-any-private-methods **/
|
||||
///@{
|
||||
|
||||
[[noreturn]] static void _fatal();
|
||||
|
||||
///@}
|
||||
|
||||
public:
|
||||
/** @defgroup scm-expression-any-member-vars **/
|
||||
///@{
|
||||
|
||||
static typeseq s_typeseq;
|
||||
static bool _valid;
|
||||
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm */
|
||||
} /*namespace xo */
|
||||
|
||||
/* IExpression_Any.hpp */
|
||||
66
include/xo/expression2/detail/IExpression_DApplyExpr.hpp
Normal file
66
include/xo/expression2/detail/IExpression_DApplyExpr.hpp
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
/** @file IExpression_DApplyExpr.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IExpression_DApplyExpr.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IExpression_DApplyExpr.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Expression.hpp"
|
||||
#include "Expression.hpp"
|
||||
#include "DApplyExpr.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IExpression_DApplyExpr; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::scm::AExpression,
|
||||
xo::scm::DApplyExpr>
|
||||
{
|
||||
using ImplType = xo::scm::IExpression_Xfer
|
||||
<xo::scm::DApplyExpr,
|
||||
xo::scm::IExpression_DApplyExpr>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IExpression_DApplyExpr
|
||||
**/
|
||||
class IExpression_DApplyExpr {
|
||||
public:
|
||||
/** @defgroup scm-expression-dapplyexpr-type-traits **/
|
||||
///@{
|
||||
using TypeDescr = xo::scm::AExpression::TypeDescr;
|
||||
using Copaque = xo::scm::AExpression::Copaque;
|
||||
using Opaque = xo::scm::AExpression::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-expression-dapplyexpr-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
/** expression type (constant | apply | ..) **/
|
||||
static exprtype extype(const DApplyExpr & self) noexcept;
|
||||
/** placeholder for type giving possible values for this expression **/
|
||||
static TypeRef typeref(const DApplyExpr & self) noexcept;
|
||||
/** type giving possible values for this expression. Maybe null before typecheck **/
|
||||
static TypeDescr valuetype(const DApplyExpr & self) noexcept;
|
||||
|
||||
// non-const methods
|
||||
/** assing to valuetype member. Useful when scaffolding expressions **/
|
||||
static void assign_valuetype(DApplyExpr & self, TypeDescr td) noexcept;
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
66
include/xo/expression2/detail/IExpression_DConstant.hpp
Normal file
66
include/xo/expression2/detail/IExpression_DConstant.hpp
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
/** @file IExpression_DConstant.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IExpression_DConstant.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IExpression_DConstant.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Expression.hpp"
|
||||
#include "Expression.hpp"
|
||||
#include "DConstant.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IExpression_DConstant; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::scm::AExpression,
|
||||
xo::scm::DConstant>
|
||||
{
|
||||
using ImplType = xo::scm::IExpression_Xfer
|
||||
<xo::scm::DConstant,
|
||||
xo::scm::IExpression_DConstant>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IExpression_DConstant
|
||||
**/
|
||||
class IExpression_DConstant {
|
||||
public:
|
||||
/** @defgroup scm-expression-dconstant-type-traits **/
|
||||
///@{
|
||||
using TypeDescr = xo::scm::AExpression::TypeDescr;
|
||||
using Copaque = xo::scm::AExpression::Copaque;
|
||||
using Opaque = xo::scm::AExpression::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-expression-dconstant-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
/** expression type (constant | apply | ..) **/
|
||||
static exprtype extype(const DConstant & self) noexcept;
|
||||
/** placeholder for type giving possible values for this expression **/
|
||||
static TypeRef typeref(const DConstant & self) noexcept;
|
||||
/** type giving possible values for this expression. Maybe null before typecheck **/
|
||||
static TypeDescr valuetype(const DConstant & self) noexcept;
|
||||
|
||||
// non-const methods
|
||||
/** assing to valuetype member. Useful when scaffolding expressions **/
|
||||
static void assign_valuetype(DConstant & self, TypeDescr td) noexcept;
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
66
include/xo/expression2/detail/IExpression_DDefineExpr.hpp
Normal file
66
include/xo/expression2/detail/IExpression_DDefineExpr.hpp
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
/** @file IExpression_DDefineExpr.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IExpression_DDefineExpr.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IExpression_DDefineExpr.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Expression.hpp"
|
||||
#include "Expression.hpp"
|
||||
#include "DDefineExpr.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IExpression_DDefineExpr; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::scm::AExpression,
|
||||
xo::scm::DDefineExpr>
|
||||
{
|
||||
using ImplType = xo::scm::IExpression_Xfer
|
||||
<xo::scm::DDefineExpr,
|
||||
xo::scm::IExpression_DDefineExpr>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IExpression_DDefineExpr
|
||||
**/
|
||||
class IExpression_DDefineExpr {
|
||||
public:
|
||||
/** @defgroup scm-expression-ddefineexpr-type-traits **/
|
||||
///@{
|
||||
using TypeDescr = xo::scm::AExpression::TypeDescr;
|
||||
using Copaque = xo::scm::AExpression::Copaque;
|
||||
using Opaque = xo::scm::AExpression::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-expression-ddefineexpr-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
/** expression type (constant | apply | ..) **/
|
||||
static exprtype extype(const DDefineExpr & self) noexcept;
|
||||
/** placeholder for type giving possible values for this expression **/
|
||||
static TypeRef typeref(const DDefineExpr & self) noexcept;
|
||||
/** type giving possible values for this expression. Maybe null before typecheck **/
|
||||
static TypeDescr valuetype(const DDefineExpr & self) noexcept;
|
||||
|
||||
// non-const methods
|
||||
/** assing to valuetype member. Useful when scaffolding expressions **/
|
||||
static void assign_valuetype(DDefineExpr & self, TypeDescr td) noexcept;
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
66
include/xo/expression2/detail/IExpression_DIfElseExpr.hpp
Normal file
66
include/xo/expression2/detail/IExpression_DIfElseExpr.hpp
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
/** @file IExpression_DIfElseExpr.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IExpression_DIfElseExpr.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IExpression_DIfElseExpr.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Expression.hpp"
|
||||
#include "Expression.hpp"
|
||||
#include "DIfElseExpr.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IExpression_DIfElseExpr; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::scm::AExpression,
|
||||
xo::scm::DIfElseExpr>
|
||||
{
|
||||
using ImplType = xo::scm::IExpression_Xfer
|
||||
<xo::scm::DIfElseExpr,
|
||||
xo::scm::IExpression_DIfElseExpr>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IExpression_DIfElseExpr
|
||||
**/
|
||||
class IExpression_DIfElseExpr {
|
||||
public:
|
||||
/** @defgroup scm-expression-difelseexpr-type-traits **/
|
||||
///@{
|
||||
using TypeDescr = xo::scm::AExpression::TypeDescr;
|
||||
using Copaque = xo::scm::AExpression::Copaque;
|
||||
using Opaque = xo::scm::AExpression::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-expression-difelseexpr-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
/** expression type (constant | apply | ..) **/
|
||||
static exprtype extype(const DIfElseExpr & self) noexcept;
|
||||
/** placeholder for type giving possible values for this expression **/
|
||||
static TypeRef typeref(const DIfElseExpr & self) noexcept;
|
||||
/** type giving possible values for this expression. Maybe null before typecheck **/
|
||||
static TypeDescr valuetype(const DIfElseExpr & self) noexcept;
|
||||
|
||||
// non-const methods
|
||||
/** assing to valuetype member. Useful when scaffolding expressions **/
|
||||
static void assign_valuetype(DIfElseExpr & self, TypeDescr td) noexcept;
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
66
include/xo/expression2/detail/IExpression_DLambdaExpr.hpp
Normal file
66
include/xo/expression2/detail/IExpression_DLambdaExpr.hpp
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
/** @file IExpression_DLambdaExpr.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IExpression_DLambdaExpr.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IExpression_DLambdaExpr.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Expression.hpp"
|
||||
#include "Expression.hpp"
|
||||
#include "DLambdaExpr.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IExpression_DLambdaExpr; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::scm::AExpression,
|
||||
xo::scm::DLambdaExpr>
|
||||
{
|
||||
using ImplType = xo::scm::IExpression_Xfer
|
||||
<xo::scm::DLambdaExpr,
|
||||
xo::scm::IExpression_DLambdaExpr>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IExpression_DLambdaExpr
|
||||
**/
|
||||
class IExpression_DLambdaExpr {
|
||||
public:
|
||||
/** @defgroup scm-expression-dlambdaexpr-type-traits **/
|
||||
///@{
|
||||
using TypeDescr = xo::scm::AExpression::TypeDescr;
|
||||
using Copaque = xo::scm::AExpression::Copaque;
|
||||
using Opaque = xo::scm::AExpression::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-expression-dlambdaexpr-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
/** expression type (constant | apply | ..) **/
|
||||
static exprtype extype(const DLambdaExpr & self) noexcept;
|
||||
/** placeholder for type giving possible values for this expression **/
|
||||
static TypeRef typeref(const DLambdaExpr & self) noexcept;
|
||||
/** type giving possible values for this expression. Maybe null before typecheck **/
|
||||
static TypeDescr valuetype(const DLambdaExpr & self) noexcept;
|
||||
|
||||
// non-const methods
|
||||
/** assing to valuetype member. Useful when scaffolding expressions **/
|
||||
static void assign_valuetype(DLambdaExpr & self, TypeDescr td) noexcept;
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
66
include/xo/expression2/detail/IExpression_DSequenceExpr.hpp
Normal file
66
include/xo/expression2/detail/IExpression_DSequenceExpr.hpp
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
/** @file IExpression_DSequenceExpr.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IExpression_DSequenceExpr.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IExpression_DSequenceExpr.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Expression.hpp"
|
||||
#include "Expression.hpp"
|
||||
#include "DSequenceExpr.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IExpression_DSequenceExpr; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::scm::AExpression,
|
||||
xo::scm::DSequenceExpr>
|
||||
{
|
||||
using ImplType = xo::scm::IExpression_Xfer
|
||||
<xo::scm::DSequenceExpr,
|
||||
xo::scm::IExpression_DSequenceExpr>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IExpression_DSequenceExpr
|
||||
**/
|
||||
class IExpression_DSequenceExpr {
|
||||
public:
|
||||
/** @defgroup scm-expression-dsequenceexpr-type-traits **/
|
||||
///@{
|
||||
using TypeDescr = xo::scm::AExpression::TypeDescr;
|
||||
using Copaque = xo::scm::AExpression::Copaque;
|
||||
using Opaque = xo::scm::AExpression::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-expression-dsequenceexpr-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
/** expression type (constant | apply | ..) **/
|
||||
static exprtype extype(const DSequenceExpr & self) noexcept;
|
||||
/** placeholder for type giving possible values for this expression **/
|
||||
static TypeRef typeref(const DSequenceExpr & self) noexcept;
|
||||
/** type giving possible values for this expression. Maybe null before typecheck **/
|
||||
static TypeDescr valuetype(const DSequenceExpr & self) noexcept;
|
||||
|
||||
// non-const methods
|
||||
/** assing to valuetype member. Useful when scaffolding expressions **/
|
||||
static void assign_valuetype(DSequenceExpr & self, TypeDescr td) noexcept;
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
66
include/xo/expression2/detail/IExpression_DVarRef.hpp
Normal file
66
include/xo/expression2/detail/IExpression_DVarRef.hpp
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
/** @file IExpression_DVarRef.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IExpression_DVarRef.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IExpression_DVarRef.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Expression.hpp"
|
||||
#include "Expression.hpp"
|
||||
#include "DVarRef.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IExpression_DVarRef; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::scm::AExpression,
|
||||
xo::scm::DVarRef>
|
||||
{
|
||||
using ImplType = xo::scm::IExpression_Xfer
|
||||
<xo::scm::DVarRef,
|
||||
xo::scm::IExpression_DVarRef>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IExpression_DVarRef
|
||||
**/
|
||||
class IExpression_DVarRef {
|
||||
public:
|
||||
/** @defgroup scm-expression-dvarref-type-traits **/
|
||||
///@{
|
||||
using TypeDescr = xo::scm::AExpression::TypeDescr;
|
||||
using Copaque = xo::scm::AExpression::Copaque;
|
||||
using Opaque = xo::scm::AExpression::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-expression-dvarref-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
/** expression type (constant | apply | ..) **/
|
||||
static exprtype extype(const DVarRef & self) noexcept;
|
||||
/** placeholder for type giving possible values for this expression **/
|
||||
static TypeRef typeref(const DVarRef & self) noexcept;
|
||||
/** type giving possible values for this expression. Maybe null before typecheck **/
|
||||
static TypeDescr valuetype(const DVarRef & self) noexcept;
|
||||
|
||||
// non-const methods
|
||||
/** assing to valuetype member. Useful when scaffolding expressions **/
|
||||
static void assign_valuetype(DVarRef & self, TypeDescr td) noexcept;
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
103
include/xo/expression2/detail/IExpression_Xfer.hpp
Normal file
103
include/xo/expression2/detail/IExpression_Xfer.hpp
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
/** @file IExpression_Xfer.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/Expression.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_any.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/Expression.json5]
|
||||
*
|
||||
* variables:
|
||||
* {facet_hpp_fname} -> Expression.hpp
|
||||
* {impl_hpp_subdir} -> detail
|
||||
* {facet_ns1} -> xo
|
||||
* {facet_detail_subdir} -> detail
|
||||
* {abstract_facet_fname} -> AExpression.hpp
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "AExpression.hpp"
|
||||
#include "TypeRef.hpp"
|
||||
#include "exprtype.hpp"
|
||||
#include <xo/reflect/TypeDescr.hpp>
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IExpression_Xfer
|
||||
**/
|
||||
template <typename DRepr, typename IExpression_DRepr>
|
||||
class IExpression_Xfer : public AExpression {
|
||||
public:
|
||||
/** @defgroup scm-expression-xfer-type-traits **/
|
||||
///@{
|
||||
/** actual implementation (not generated; often delegates to DRepr) **/
|
||||
using Impl = IExpression_DRepr;
|
||||
/** integer identifying a type **/
|
||||
using typeseq = AExpression::typeseq;
|
||||
using TypeDescr = AExpression::TypeDescr;
|
||||
///@}
|
||||
|
||||
/** @defgroup scm-expression-xfer-methods **/
|
||||
///@{
|
||||
|
||||
static const DRepr & _dcast(Copaque d) { return *(const DRepr *)d; }
|
||||
static DRepr & _dcast(Opaque d) { return *(DRepr *)d; }
|
||||
|
||||
// from AExpression
|
||||
|
||||
// builtin methods
|
||||
typeseq _typeseq() const noexcept override { return s_typeseq; }
|
||||
void _drop(Opaque d) const noexcept override { _dcast(d).~DRepr(); }
|
||||
|
||||
// const methods
|
||||
exprtype extype(Copaque data) const noexcept override {
|
||||
return I::extype(_dcast(data));
|
||||
}
|
||||
TypeRef typeref(Copaque data) const noexcept override {
|
||||
return I::typeref(_dcast(data));
|
||||
}
|
||||
TypeDescr valuetype(Copaque data) const noexcept override {
|
||||
return I::valuetype(_dcast(data));
|
||||
}
|
||||
|
||||
// non-const methods
|
||||
void assign_valuetype(Opaque data, TypeDescr td) noexcept override {
|
||||
return I::assign_valuetype(_dcast(data), td);
|
||||
}
|
||||
|
||||
///@}
|
||||
|
||||
private:
|
||||
using I = Impl;
|
||||
|
||||
public:
|
||||
/** @defgroup scm-expression-xfer-member-vars **/
|
||||
///@{
|
||||
|
||||
/** typeseq for template parameter DRepr **/
|
||||
static typeseq s_typeseq;
|
||||
/** true iff satisfies facet implementation **/
|
||||
static bool _valid;
|
||||
|
||||
///@}
|
||||
};
|
||||
|
||||
template <typename DRepr, typename IExpression_DRepr>
|
||||
xo::facet::typeseq
|
||||
IExpression_Xfer<DRepr, IExpression_DRepr>::s_typeseq
|
||||
= xo::facet::typeseq::id<DRepr>();
|
||||
|
||||
template <typename DRepr, typename IExpression_DRepr>
|
||||
bool
|
||||
IExpression_Xfer<DRepr, IExpression_DRepr>::_valid
|
||||
= xo::facet::valid_facet_implementation<AExpression,
|
||||
IExpression_Xfer>();
|
||||
|
||||
} /*namespace scm */
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end IExpression_Xfer.hpp */
|
||||
69
include/xo/expression2/detail/IGCObject_DApplyExpr.hpp
Normal file
69
include/xo/expression2/detail/IGCObject_DApplyExpr.hpp
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
/** @file IGCObject_DApplyExpr.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IGCObject_DApplyExpr.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IGCObject_DApplyExpr.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "GCObject.hpp"
|
||||
#include <xo/alloc2/GCObject.hpp>
|
||||
#include <xo/alloc2/Allocator.hpp>
|
||||
#include "DApplyExpr.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IGCObject_DApplyExpr; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::mm::AGCObject,
|
||||
xo::scm::DApplyExpr>
|
||||
{
|
||||
using ImplType = xo::mm::IGCObject_Xfer
|
||||
<xo::scm::DApplyExpr,
|
||||
xo::scm::IGCObject_DApplyExpr>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IGCObject_DApplyExpr
|
||||
**/
|
||||
class IGCObject_DApplyExpr {
|
||||
public:
|
||||
/** @defgroup scm-gcobject-dapplyexpr-type-traits **/
|
||||
///@{
|
||||
using size_type = xo::mm::AGCObject::size_type;
|
||||
using AAllocator = xo::mm::AGCObject::AAllocator;
|
||||
using AGCObjectVisitor = xo::mm::AGCObject::AGCObjectVisitor;
|
||||
using VisitReason = xo::mm::AGCObject::VisitReason;
|
||||
using Copaque = xo::mm::AGCObject::Copaque;
|
||||
using Opaque = xo::mm::AGCObject::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-gcobject-dapplyexpr-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
|
||||
// non-const methods
|
||||
/** move instance using object visitor.
|
||||
Arguably abusing the word 'visitor' here **/
|
||||
static Opaque gco_shallow_move(DApplyExpr & self, obj<AGCObjectVisitor> gc) noexcept;
|
||||
/** Invoke fn.visit_child(iface,data) for each child GCObject pointer.
|
||||
Context: provides address of data pointer so it can be updated in place
|
||||
when @p fn invokes garbage collector reentry point **/
|
||||
static void visit_gco_children(DApplyExpr & self, VisitReason reason, obj<AGCObjectVisitor> fn) noexcept;
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
69
include/xo/expression2/detail/IGCObject_DConstant.hpp
Normal file
69
include/xo/expression2/detail/IGCObject_DConstant.hpp
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
/** @file IGCObject_DConstant.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IGCObject_DConstant.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IGCObject_DConstant.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "GCObject.hpp"
|
||||
#include <xo/alloc2/GCObject.hpp>
|
||||
#include <xo/alloc2/Allocator.hpp>
|
||||
#include "DConstant.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IGCObject_DConstant; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::mm::AGCObject,
|
||||
xo::scm::DConstant>
|
||||
{
|
||||
using ImplType = xo::mm::IGCObject_Xfer
|
||||
<xo::scm::DConstant,
|
||||
xo::scm::IGCObject_DConstant>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IGCObject_DConstant
|
||||
**/
|
||||
class IGCObject_DConstant {
|
||||
public:
|
||||
/** @defgroup scm-gcobject-dconstant-type-traits **/
|
||||
///@{
|
||||
using size_type = xo::mm::AGCObject::size_type;
|
||||
using AAllocator = xo::mm::AGCObject::AAllocator;
|
||||
using AGCObjectVisitor = xo::mm::AGCObject::AGCObjectVisitor;
|
||||
using VisitReason = xo::mm::AGCObject::VisitReason;
|
||||
using Copaque = xo::mm::AGCObject::Copaque;
|
||||
using Opaque = xo::mm::AGCObject::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-gcobject-dconstant-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
|
||||
// non-const methods
|
||||
/** move instance using object visitor.
|
||||
Arguably abusing the word 'visitor' here **/
|
||||
static Opaque gco_shallow_move(DConstant & self, obj<AGCObjectVisitor> gc) noexcept;
|
||||
/** Invoke fn.visit_child(iface,data) for each child GCObject pointer.
|
||||
Context: provides address of data pointer so it can be updated in place
|
||||
when @p fn invokes garbage collector reentry point **/
|
||||
static void visit_gco_children(DConstant & self, VisitReason reason, obj<AGCObjectVisitor> fn) noexcept;
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
69
include/xo/expression2/detail/IGCObject_DIfElseExpr.hpp
Normal file
69
include/xo/expression2/detail/IGCObject_DIfElseExpr.hpp
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
/** @file IGCObject_DIfElseExpr.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IGCObject_DIfElseExpr.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IGCObject_DIfElseExpr.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "GCObject.hpp"
|
||||
#include <xo/alloc2/GCObject.hpp>
|
||||
#include <xo/alloc2/Allocator.hpp>
|
||||
#include "DIfElseExpr.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IGCObject_DIfElseExpr; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::mm::AGCObject,
|
||||
xo::scm::DIfElseExpr>
|
||||
{
|
||||
using ImplType = xo::mm::IGCObject_Xfer
|
||||
<xo::scm::DIfElseExpr,
|
||||
xo::scm::IGCObject_DIfElseExpr>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IGCObject_DIfElseExpr
|
||||
**/
|
||||
class IGCObject_DIfElseExpr {
|
||||
public:
|
||||
/** @defgroup scm-gcobject-difelseexpr-type-traits **/
|
||||
///@{
|
||||
using size_type = xo::mm::AGCObject::size_type;
|
||||
using AAllocator = xo::mm::AGCObject::AAllocator;
|
||||
using AGCObjectVisitor = xo::mm::AGCObject::AGCObjectVisitor;
|
||||
using VisitReason = xo::mm::AGCObject::VisitReason;
|
||||
using Copaque = xo::mm::AGCObject::Copaque;
|
||||
using Opaque = xo::mm::AGCObject::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-gcobject-difelseexpr-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
|
||||
// non-const methods
|
||||
/** move instance using object visitor.
|
||||
Arguably abusing the word 'visitor' here **/
|
||||
static Opaque gco_shallow_move(DIfElseExpr & self, obj<AGCObjectVisitor> gc) noexcept;
|
||||
/** Invoke fn.visit_child(iface,data) for each child GCObject pointer.
|
||||
Context: provides address of data pointer so it can be updated in place
|
||||
when @p fn invokes garbage collector reentry point **/
|
||||
static void visit_gco_children(DIfElseExpr & self, VisitReason reason, obj<AGCObjectVisitor> fn) noexcept;
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
69
include/xo/expression2/detail/IGCObject_DLambdaExpr.hpp
Normal file
69
include/xo/expression2/detail/IGCObject_DLambdaExpr.hpp
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
/** @file IGCObject_DLambdaExpr.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IGCObject_DLambdaExpr.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IGCObject_DLambdaExpr.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "GCObject.hpp"
|
||||
#include <xo/alloc2/GCObject.hpp>
|
||||
#include <xo/alloc2/Allocator.hpp>
|
||||
#include "DLambdaExpr.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IGCObject_DLambdaExpr; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::mm::AGCObject,
|
||||
xo::scm::DLambdaExpr>
|
||||
{
|
||||
using ImplType = xo::mm::IGCObject_Xfer
|
||||
<xo::scm::DLambdaExpr,
|
||||
xo::scm::IGCObject_DLambdaExpr>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IGCObject_DLambdaExpr
|
||||
**/
|
||||
class IGCObject_DLambdaExpr {
|
||||
public:
|
||||
/** @defgroup scm-gcobject-dlambdaexpr-type-traits **/
|
||||
///@{
|
||||
using size_type = xo::mm::AGCObject::size_type;
|
||||
using AAllocator = xo::mm::AGCObject::AAllocator;
|
||||
using AGCObjectVisitor = xo::mm::AGCObject::AGCObjectVisitor;
|
||||
using VisitReason = xo::mm::AGCObject::VisitReason;
|
||||
using Copaque = xo::mm::AGCObject::Copaque;
|
||||
using Opaque = xo::mm::AGCObject::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-gcobject-dlambdaexpr-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
|
||||
// non-const methods
|
||||
/** move instance using object visitor.
|
||||
Arguably abusing the word 'visitor' here **/
|
||||
static Opaque gco_shallow_move(DLambdaExpr & self, obj<AGCObjectVisitor> gc) noexcept;
|
||||
/** Invoke fn.visit_child(iface,data) for each child GCObject pointer.
|
||||
Context: provides address of data pointer so it can be updated in place
|
||||
when @p fn invokes garbage collector reentry point **/
|
||||
static void visit_gco_children(DLambdaExpr & self, VisitReason reason, obj<AGCObjectVisitor> fn) noexcept;
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
69
include/xo/expression2/detail/IGCObject_DSequenceExpr.hpp
Normal file
69
include/xo/expression2/detail/IGCObject_DSequenceExpr.hpp
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
/** @file IGCObject_DSequenceExpr.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IGCObject_DSequenceExpr.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IGCObject_DSequenceExpr.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "GCObject.hpp"
|
||||
#include <xo/alloc2/GCObject.hpp>
|
||||
#include <xo/alloc2/Allocator.hpp>
|
||||
#include "DSequenceExpr.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IGCObject_DSequenceExpr; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::mm::AGCObject,
|
||||
xo::scm::DSequenceExpr>
|
||||
{
|
||||
using ImplType = xo::mm::IGCObject_Xfer
|
||||
<xo::scm::DSequenceExpr,
|
||||
xo::scm::IGCObject_DSequenceExpr>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IGCObject_DSequenceExpr
|
||||
**/
|
||||
class IGCObject_DSequenceExpr {
|
||||
public:
|
||||
/** @defgroup scm-gcobject-dsequenceexpr-type-traits **/
|
||||
///@{
|
||||
using size_type = xo::mm::AGCObject::size_type;
|
||||
using AAllocator = xo::mm::AGCObject::AAllocator;
|
||||
using AGCObjectVisitor = xo::mm::AGCObject::AGCObjectVisitor;
|
||||
using VisitReason = xo::mm::AGCObject::VisitReason;
|
||||
using Copaque = xo::mm::AGCObject::Copaque;
|
||||
using Opaque = xo::mm::AGCObject::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-gcobject-dsequenceexpr-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
|
||||
// non-const methods
|
||||
/** move instance using object visitor.
|
||||
Arguably abusing the word 'visitor' here **/
|
||||
static Opaque gco_shallow_move(DSequenceExpr & self, obj<AGCObjectVisitor> gc) noexcept;
|
||||
/** Invoke fn.visit_child(iface,data) for each child GCObject pointer.
|
||||
Context: provides address of data pointer so it can be updated in place
|
||||
when @p fn invokes garbage collector reentry point **/
|
||||
static void visit_gco_children(DSequenceExpr & self, VisitReason reason, obj<AGCObjectVisitor> fn) noexcept;
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
69
include/xo/expression2/detail/IGCObject_DVarRef.hpp
Normal file
69
include/xo/expression2/detail/IGCObject_DVarRef.hpp
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
/** @file IGCObject_DVarRef.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IGCObject_DVarRef.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IGCObject_DVarRef.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "GCObject.hpp"
|
||||
#include <xo/alloc2/GCObject.hpp>
|
||||
#include <xo/alloc2/Allocator.hpp>
|
||||
#include "DVarRef.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IGCObject_DVarRef; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::mm::AGCObject,
|
||||
xo::scm::DVarRef>
|
||||
{
|
||||
using ImplType = xo::mm::IGCObject_Xfer
|
||||
<xo::scm::DVarRef,
|
||||
xo::scm::IGCObject_DVarRef>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IGCObject_DVarRef
|
||||
**/
|
||||
class IGCObject_DVarRef {
|
||||
public:
|
||||
/** @defgroup scm-gcobject-dvarref-type-traits **/
|
||||
///@{
|
||||
using size_type = xo::mm::AGCObject::size_type;
|
||||
using AAllocator = xo::mm::AGCObject::AAllocator;
|
||||
using AGCObjectVisitor = xo::mm::AGCObject::AGCObjectVisitor;
|
||||
using VisitReason = xo::mm::AGCObject::VisitReason;
|
||||
using Copaque = xo::mm::AGCObject::Copaque;
|
||||
using Opaque = xo::mm::AGCObject::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-gcobject-dvarref-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
|
||||
// non-const methods
|
||||
/** move instance using object visitor.
|
||||
Arguably abusing the word 'visitor' here **/
|
||||
static Opaque gco_shallow_move(DVarRef & self, obj<AGCObjectVisitor> gc) noexcept;
|
||||
/** Invoke fn.visit_child(iface,data) for each child GCObject pointer.
|
||||
Context: provides address of data pointer so it can be updated in place
|
||||
when @p fn invokes garbage collector reentry point **/
|
||||
static void visit_gco_children(DVarRef & self, VisitReason reason, obj<AGCObjectVisitor> fn) noexcept;
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
62
include/xo/expression2/detail/IPrintable_DApplyExpr.hpp
Normal file
62
include/xo/expression2/detail/IPrintable_DApplyExpr.hpp
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
/** @file IPrintable_DApplyExpr.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IPrintable_DApplyExpr.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IPrintable_DApplyExpr.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Printable.hpp"
|
||||
#include <xo/printable2/Printable.hpp>
|
||||
#include <xo/printable2/detail/IPrintable_Xfer.hpp>
|
||||
#include "DApplyExpr.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IPrintable_DApplyExpr; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::print::APrintable,
|
||||
xo::scm::DApplyExpr>
|
||||
{
|
||||
using ImplType = xo::print::IPrintable_Xfer
|
||||
<xo::scm::DApplyExpr,
|
||||
xo::scm::IPrintable_DApplyExpr>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IPrintable_DApplyExpr
|
||||
**/
|
||||
class IPrintable_DApplyExpr {
|
||||
public:
|
||||
/** @defgroup scm-printable-dapplyexpr-type-traits **/
|
||||
///@{
|
||||
using ppindentinfo = xo::print::APrintable::ppindentinfo;
|
||||
using Copaque = xo::print::APrintable::Copaque;
|
||||
using Opaque = xo::print::APrintable::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-printable-dapplyexpr-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
/** Pretty-printing support for this object.
|
||||
See [xo-indentlog/xo/indentlog/pretty.hpp] **/
|
||||
static bool pretty(const DApplyExpr & self, const ppindentinfo & ppii);
|
||||
|
||||
// non-const methods
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
62
include/xo/expression2/detail/IPrintable_DConstant.hpp
Normal file
62
include/xo/expression2/detail/IPrintable_DConstant.hpp
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
/** @file IPrintable_DConstant.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IPrintable_DConstant.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IPrintable_DConstant.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Printable.hpp"
|
||||
#include <xo/printable2/Printable.hpp>
|
||||
#include <xo/printable2/detail/IPrintable_Xfer.hpp>
|
||||
#include "DConstant.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IPrintable_DConstant; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::print::APrintable,
|
||||
xo::scm::DConstant>
|
||||
{
|
||||
using ImplType = xo::print::IPrintable_Xfer
|
||||
<xo::scm::DConstant,
|
||||
xo::scm::IPrintable_DConstant>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IPrintable_DConstant
|
||||
**/
|
||||
class IPrintable_DConstant {
|
||||
public:
|
||||
/** @defgroup scm-printable-dconstant-type-traits **/
|
||||
///@{
|
||||
using ppindentinfo = xo::print::APrintable::ppindentinfo;
|
||||
using Copaque = xo::print::APrintable::Copaque;
|
||||
using Opaque = xo::print::APrintable::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-printable-dconstant-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
/** Pretty-printing support for this object.
|
||||
See [xo-indentlog/xo/indentlog/pretty.hpp] **/
|
||||
static bool pretty(const DConstant & self, const ppindentinfo & ppii);
|
||||
|
||||
// non-const methods
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
62
include/xo/expression2/detail/IPrintable_DDefineExpr.hpp
Normal file
62
include/xo/expression2/detail/IPrintable_DDefineExpr.hpp
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
/** @file IPrintable_DDefineExpr.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IPrintable_DDefineExpr.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IPrintable_DDefineExpr.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Printable.hpp"
|
||||
#include <xo/printable2/Printable.hpp>
|
||||
#include <xo/printable2/detail/IPrintable_Xfer.hpp>
|
||||
#include "DDefineExpr.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IPrintable_DDefineExpr; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::print::APrintable,
|
||||
xo::scm::DDefineExpr>
|
||||
{
|
||||
using ImplType = xo::print::IPrintable_Xfer
|
||||
<xo::scm::DDefineExpr,
|
||||
xo::scm::IPrintable_DDefineExpr>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IPrintable_DDefineExpr
|
||||
**/
|
||||
class IPrintable_DDefineExpr {
|
||||
public:
|
||||
/** @defgroup scm-printable-ddefineexpr-type-traits **/
|
||||
///@{
|
||||
using ppindentinfo = xo::print::APrintable::ppindentinfo;
|
||||
using Copaque = xo::print::APrintable::Copaque;
|
||||
using Opaque = xo::print::APrintable::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-printable-ddefineexpr-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
/** Pretty-printing support for this object.
|
||||
See [xo-indentlog/xo/indentlog/pretty.hpp] **/
|
||||
static bool pretty(const DDefineExpr & self, const ppindentinfo & ppii);
|
||||
|
||||
// non-const methods
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
62
include/xo/expression2/detail/IPrintable_DIfElseExpr.hpp
Normal file
62
include/xo/expression2/detail/IPrintable_DIfElseExpr.hpp
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
/** @file IPrintable_DIfElseExpr.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IPrintable_DIfElseExpr.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IPrintable_DIfElseExpr.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Printable.hpp"
|
||||
#include <xo/printable2/Printable.hpp>
|
||||
#include <xo/printable2/detail/IPrintable_Xfer.hpp>
|
||||
#include "DIfElseExpr.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IPrintable_DIfElseExpr; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::print::APrintable,
|
||||
xo::scm::DIfElseExpr>
|
||||
{
|
||||
using ImplType = xo::print::IPrintable_Xfer
|
||||
<xo::scm::DIfElseExpr,
|
||||
xo::scm::IPrintable_DIfElseExpr>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IPrintable_DIfElseExpr
|
||||
**/
|
||||
class IPrintable_DIfElseExpr {
|
||||
public:
|
||||
/** @defgroup scm-printable-difelseexpr-type-traits **/
|
||||
///@{
|
||||
using ppindentinfo = xo::print::APrintable::ppindentinfo;
|
||||
using Copaque = xo::print::APrintable::Copaque;
|
||||
using Opaque = xo::print::APrintable::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-printable-difelseexpr-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
/** Pretty-printing support for this object.
|
||||
See [xo-indentlog/xo/indentlog/pretty.hpp] **/
|
||||
static bool pretty(const DIfElseExpr & self, const ppindentinfo & ppii);
|
||||
|
||||
// non-const methods
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
62
include/xo/expression2/detail/IPrintable_DLambdaExpr.hpp
Normal file
62
include/xo/expression2/detail/IPrintable_DLambdaExpr.hpp
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
/** @file IPrintable_DLambdaExpr.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IPrintable_DLambdaExpr.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IPrintable_DLambdaExpr.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Printable.hpp"
|
||||
#include <xo/printable2/Printable.hpp>
|
||||
#include <xo/printable2/detail/IPrintable_Xfer.hpp>
|
||||
#include "DLambdaExpr.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IPrintable_DLambdaExpr; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::print::APrintable,
|
||||
xo::scm::DLambdaExpr>
|
||||
{
|
||||
using ImplType = xo::print::IPrintable_Xfer
|
||||
<xo::scm::DLambdaExpr,
|
||||
xo::scm::IPrintable_DLambdaExpr>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IPrintable_DLambdaExpr
|
||||
**/
|
||||
class IPrintable_DLambdaExpr {
|
||||
public:
|
||||
/** @defgroup scm-printable-dlambdaexpr-type-traits **/
|
||||
///@{
|
||||
using ppindentinfo = xo::print::APrintable::ppindentinfo;
|
||||
using Copaque = xo::print::APrintable::Copaque;
|
||||
using Opaque = xo::print::APrintable::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-printable-dlambdaexpr-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
/** Pretty-printing support for this object.
|
||||
See [xo-indentlog/xo/indentlog/pretty.hpp] **/
|
||||
static bool pretty(const DLambdaExpr & self, const ppindentinfo & ppii);
|
||||
|
||||
// non-const methods
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
62
include/xo/expression2/detail/IPrintable_DSequenceExpr.hpp
Normal file
62
include/xo/expression2/detail/IPrintable_DSequenceExpr.hpp
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
/** @file IPrintable_DSequenceExpr.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IPrintable_DSequenceExpr.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IPrintable_DSequenceExpr.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Printable.hpp"
|
||||
#include <xo/printable2/Printable.hpp>
|
||||
#include <xo/printable2/detail/IPrintable_Xfer.hpp>
|
||||
#include "DSequenceExpr.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IPrintable_DSequenceExpr; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::print::APrintable,
|
||||
xo::scm::DSequenceExpr>
|
||||
{
|
||||
using ImplType = xo::print::IPrintable_Xfer
|
||||
<xo::scm::DSequenceExpr,
|
||||
xo::scm::IPrintable_DSequenceExpr>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IPrintable_DSequenceExpr
|
||||
**/
|
||||
class IPrintable_DSequenceExpr {
|
||||
public:
|
||||
/** @defgroup scm-printable-dsequenceexpr-type-traits **/
|
||||
///@{
|
||||
using ppindentinfo = xo::print::APrintable::ppindentinfo;
|
||||
using Copaque = xo::print::APrintable::Copaque;
|
||||
using Opaque = xo::print::APrintable::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-printable-dsequenceexpr-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
/** Pretty-printing support for this object.
|
||||
See [xo-indentlog/xo/indentlog/pretty.hpp] **/
|
||||
static bool pretty(const DSequenceExpr & self, const ppindentinfo & ppii);
|
||||
|
||||
// non-const methods
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
62
include/xo/expression2/detail/IPrintable_DVarRef.hpp
Normal file
62
include/xo/expression2/detail/IPrintable_DVarRef.hpp
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
/** @file IPrintable_DVarRef.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IPrintable_DVarRef.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IPrintable_DVarRef.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Printable.hpp"
|
||||
#include <xo/printable2/Printable.hpp>
|
||||
#include <xo/printable2/detail/IPrintable_Xfer.hpp>
|
||||
#include "DVarRef.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IPrintable_DVarRef; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::print::APrintable,
|
||||
xo::scm::DVarRef>
|
||||
{
|
||||
using ImplType = xo::print::IPrintable_Xfer
|
||||
<xo::scm::DVarRef,
|
||||
xo::scm::IPrintable_DVarRef>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IPrintable_DVarRef
|
||||
**/
|
||||
class IPrintable_DVarRef {
|
||||
public:
|
||||
/** @defgroup scm-printable-dvarref-type-traits **/
|
||||
///@{
|
||||
using ppindentinfo = xo::print::APrintable::ppindentinfo;
|
||||
using Copaque = xo::print::APrintable::Copaque;
|
||||
using Opaque = xo::print::APrintable::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-printable-dvarref-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
/** Pretty-printing support for this object.
|
||||
See [xo-indentlog/xo/indentlog/pretty.hpp] **/
|
||||
static bool pretty(const DVarRef & self, const ppindentinfo & ppii);
|
||||
|
||||
// non-const methods
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
94
include/xo/expression2/detail/RExpression.hpp
Normal file
94
include/xo/expression2/detail/RExpression.hpp
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
/** @file RExpression.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/Expression.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_any.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/Expression.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "AExpression.hpp"
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
|
||||
/** @class RExpression
|
||||
**/
|
||||
template <typename Object>
|
||||
class RExpression : public Object {
|
||||
private:
|
||||
using O = Object;
|
||||
|
||||
public:
|
||||
/** @defgroup scm-expression-router-type-traits **/
|
||||
///@{
|
||||
using ObjectType = Object;
|
||||
using DataPtr = Object::DataPtr;
|
||||
using typeseq = xo::reflect::typeseq;
|
||||
using TypeDescr = AExpression::TypeDescr;
|
||||
///@}
|
||||
|
||||
/** @defgroup scm-expression-router-ctors **/
|
||||
///@{
|
||||
RExpression() {}
|
||||
RExpression(Object::DataPtr data) : Object{std::move(data)} {}
|
||||
RExpression(const AExpression * iface, void * data)
|
||||
requires std::is_same_v<typename Object::DataType, xo::facet::DVariantPlaceholder>
|
||||
: Object(iface, data) {}
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-expression-router-methods **/
|
||||
///@{
|
||||
|
||||
// explicit injected content
|
||||
|
||||
// builtin methods
|
||||
typeseq _typeseq() const noexcept { return O::iface()->_typeseq(); }
|
||||
void _drop() const noexcept { O::iface()->_drop(O::data()); }
|
||||
|
||||
// const methods
|
||||
exprtype extype() const noexcept {
|
||||
return O::iface()->extype(O::data());
|
||||
}
|
||||
TypeRef typeref() const noexcept {
|
||||
return O::iface()->typeref(O::data());
|
||||
}
|
||||
TypeDescr valuetype() const noexcept {
|
||||
return O::iface()->valuetype(O::data());
|
||||
}
|
||||
|
||||
// non-const methods (still const in router!)
|
||||
void assign_valuetype(TypeDescr td) noexcept {
|
||||
return O::iface()->assign_valuetype(O::data(), td);
|
||||
}
|
||||
|
||||
///@}
|
||||
/** @defgroup scm-expression-member-vars **/
|
||||
///@{
|
||||
|
||||
static bool _valid;
|
||||
|
||||
///@}
|
||||
};
|
||||
|
||||
template <typename Object>
|
||||
bool
|
||||
RExpression<Object>::_valid = xo::facet::valid_object_router<Object>();
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
namespace xo { namespace facet {
|
||||
template <typename Object>
|
||||
struct RoutingFor<xo::scm::AExpression, Object> {
|
||||
using RoutingType = xo::scm::RExpression<Object>;
|
||||
};
|
||||
} }
|
||||
|
||||
/* end RExpression.hpp */
|
||||
15
include/xo/expression2/expression2_register_types.hpp
Normal file
15
include/xo/expression2/expression2_register_types.hpp
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
/** @file expression2_register_types.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Dec 2025
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <xo/alloc2/Collector.hpp>
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
}
|
||||
}
|
||||
|
||||
/* end expression2_register_types.hpp */
|
||||
98
include/xo/expression2/exprtype.hpp
Normal file
98
include/xo/expression2/exprtype.hpp
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
/** @file exprtype.hpp
|
||||
*
|
||||
* Author: Roland Conybeare
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <ostream>
|
||||
//#include <cstdint>
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @enum exprtype
|
||||
* @brief enum to identify subclasses of xo::scm::Expression.
|
||||
*
|
||||
**/
|
||||
enum class exprtype {
|
||||
/** sentinel value **/
|
||||
invalid = -1,
|
||||
|
||||
/** literal constant. must satisfy both standard_layout_type + trivial **/
|
||||
constant,
|
||||
#ifdef NOT_YET
|
||||
/** a literal constant that refers to a linkable named function **/
|
||||
primitive,
|
||||
#endif
|
||||
/** variable/function definition **/
|
||||
define,
|
||||
#ifdef NOT_YET
|
||||
/** variable assignment **/
|
||||
assign,
|
||||
#endif
|
||||
/** function call **/
|
||||
apply,
|
||||
|
||||
/** function definition **/
|
||||
lambda,
|
||||
|
||||
/** variable definition **/
|
||||
variable,
|
||||
/** variabele reference (possibly non-local) **/
|
||||
varref,
|
||||
/** if-then-else **/
|
||||
ifexpr,
|
||||
/** sequence **/
|
||||
sequence,
|
||||
#ifdef NOT_YET
|
||||
) /** type conversion **/
|
||||
convert,
|
||||
#endif
|
||||
|
||||
/** not an expression. comes last, counts entries **/
|
||||
N
|
||||
};
|
||||
|
||||
inline const char *
|
||||
expr2str(exprtype x)
|
||||
{
|
||||
switch(x) {
|
||||
case exprtype::invalid: return "?exprtype";
|
||||
case exprtype::constant: return "constant";
|
||||
#ifdef NOT_YET
|
||||
case exprtype::primitive: return "primitive";
|
||||
#endif
|
||||
case exprtype::define: return "define";
|
||||
#ifdef NOT_YET
|
||||
case exprtype::assign: return "assign";
|
||||
#endif
|
||||
case exprtype::apply: return "apply";
|
||||
case exprtype::lambda: return "lambda";
|
||||
case exprtype::variable: return "variable";
|
||||
case exprtype::varref: return "varref";
|
||||
case exprtype::ifexpr: return "if_expr";
|
||||
case exprtype::sequence: return "sequence";
|
||||
#ifdef NOT_YET
|
||||
case exprtype::convert: return "convert";
|
||||
#endif
|
||||
case exprtype::N: break;
|
||||
//default: break;
|
||||
}
|
||||
|
||||
return "???exprtype???";
|
||||
}
|
||||
|
||||
/** @brief number of built-in expression types, repr convenient for array sizing **/
|
||||
static constexpr std::size_t n_exprtype = static_cast<std::size_t>(exprtype::N);
|
||||
|
||||
inline std::ostream &
|
||||
operator<<(std::ostream & os,
|
||||
exprtype x)
|
||||
{
|
||||
os << expr2str(x);
|
||||
return os;
|
||||
}
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end exprtype.hpp */
|
||||
21
include/xo/expression2/init_expression2.hpp
Normal file
21
include/xo/expression2/init_expression2.hpp
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
/** @file init_expression2.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Jan 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <xo/subsys/Subsystem.hpp>
|
||||
|
||||
namespace xo {
|
||||
/* tag to represent the xo-expression2/ subsystem within ordered initialization */
|
||||
enum S_expression2_tag {};
|
||||
|
||||
template <>
|
||||
struct InitSubsys<S_expression2_tag> {
|
||||
static void init();
|
||||
static InitEvidence require();
|
||||
};
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end init_expression2.hpp */
|
||||
82
include/xo/expression2/symtab/ASymbolTable.hpp
Normal file
82
include/xo/expression2/symtab/ASymbolTable.hpp
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
/** @file ASymbolTable.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/SymbolTable.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [abstract_facet.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/SymbolTable.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
// includes (via {facet_includes})
|
||||
#include "Binding.hpp"
|
||||
#include "DUniqueString.hpp"
|
||||
#include <xo/facet/obj.hpp>
|
||||
#include <xo/facet/facet_implementation.hpp>
|
||||
#include <xo/facet/typeseq.hpp>
|
||||
|
||||
// {pretext} here
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
|
||||
using Copaque = const void *;
|
||||
using Opaque = void *;
|
||||
|
||||
/**
|
||||
Map symbols to schematika expressions. Output of schematika parser
|
||||
**/
|
||||
class ASymbolTable {
|
||||
public:
|
||||
/** @defgroup scm-symboltable-type-traits **/
|
||||
///@{
|
||||
// types
|
||||
/** integer identifying a type **/
|
||||
using typeseq = xo::facet::typeseq;
|
||||
using Copaque = const void *;
|
||||
using Opaque = void *;
|
||||
///@}
|
||||
|
||||
/** @defgroup scm-symboltable-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
/** An uninitialized ASymbolTable instance will have zero vtable pointer (per {linux,osx} abi).
|
||||
* Use case for this is narrow. We go to some lengths to avoid null vtable pointers. For example
|
||||
* obj<AFacet> will have non-null vtable (via IFacet_Any) with all methods terminating.
|
||||
**/
|
||||
bool _has_null_vptr() const noexcept { return *reinterpret_cast<const void * const *>(this) == nullptr; }
|
||||
/** RTTI: unique id# for actual runtime data representation **/
|
||||
virtual typeseq _typeseq() const noexcept = 0;
|
||||
/** destroy instance @p d; calls c++ dtor only for actual runtime type; does not recover memory **/
|
||||
virtual void _drop(Opaque d) const noexcept = 0;
|
||||
/** true iff this is toplevel (global) symbol table. **/
|
||||
virtual bool is_global_symtab(Copaque data) const noexcept = 0;
|
||||
/** report ingredients needed to address variable at runtime. **/
|
||||
virtual Binding lookup_binding(Copaque data, const DUniqueString * sym) const noexcept = 0;
|
||||
|
||||
// nonconst methods
|
||||
///@}
|
||||
}; /*ASymbolTable*/
|
||||
|
||||
/** Implementation ISymbolTable_DRepr of ASymbolTable for state DRepr
|
||||
* should provide a specialization:
|
||||
*
|
||||
* template <>
|
||||
* struct xo::facet::FacetImplementation<ASymbolTable, DRepr> {
|
||||
* using Impltype = ISymbolTable_DRepr;
|
||||
* };
|
||||
*
|
||||
* then ISymbolTable_ImplType<DRepr> --> ISymbolTable_DRepr
|
||||
**/
|
||||
template <typename DRepr>
|
||||
using ISymbolTable_ImplType = xo::facet::FacetImplType<ASymbolTable, DRepr>;
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* ASymbolTable.hpp */
|
||||
69
include/xo/expression2/symtab/IGCObject_DGlobalSymtab.hpp
Normal file
69
include/xo/expression2/symtab/IGCObject_DGlobalSymtab.hpp
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
/** @file IGCObject_DGlobalSymtab.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IGCObject_DGlobalSymtab.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IGCObject_DGlobalSymtab.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "GCObject.hpp"
|
||||
#include <xo/alloc2/GCObject.hpp>
|
||||
#include <xo/alloc2/Allocator.hpp>
|
||||
#include "DGlobalSymtab.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IGCObject_DGlobalSymtab; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::mm::AGCObject,
|
||||
xo::scm::DGlobalSymtab>
|
||||
{
|
||||
using ImplType = xo::mm::IGCObject_Xfer
|
||||
<xo::scm::DGlobalSymtab,
|
||||
xo::scm::IGCObject_DGlobalSymtab>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IGCObject_DGlobalSymtab
|
||||
**/
|
||||
class IGCObject_DGlobalSymtab {
|
||||
public:
|
||||
/** @defgroup scm-gcobject-dglobalsymtab-type-traits **/
|
||||
///@{
|
||||
using size_type = xo::mm::AGCObject::size_type;
|
||||
using AAllocator = xo::mm::AGCObject::AAllocator;
|
||||
using AGCObjectVisitor = xo::mm::AGCObject::AGCObjectVisitor;
|
||||
using VisitReason = xo::mm::AGCObject::VisitReason;
|
||||
using Copaque = xo::mm::AGCObject::Copaque;
|
||||
using Opaque = xo::mm::AGCObject::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-gcobject-dglobalsymtab-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
|
||||
// non-const methods
|
||||
/** move instance using object visitor.
|
||||
Arguably abusing the word 'visitor' here **/
|
||||
static Opaque gco_shallow_move(DGlobalSymtab & self, obj<AGCObjectVisitor> gc) noexcept;
|
||||
/** Invoke fn.visit_child(iface,data) for each child GCObject pointer.
|
||||
Context: provides address of data pointer so it can be updated in place
|
||||
when @p fn invokes garbage collector reentry point **/
|
||||
static void visit_gco_children(DGlobalSymtab & self, VisitReason reason, obj<AGCObjectVisitor> fn) noexcept;
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
69
include/xo/expression2/symtab/IGCObject_DLocalSymtab.hpp
Normal file
69
include/xo/expression2/symtab/IGCObject_DLocalSymtab.hpp
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
/** @file IGCObject_DLocalSymtab.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IGCObject_DLocalSymtab.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IGCObject_DLocalSymtab.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "GCObject.hpp"
|
||||
#include <xo/alloc2/GCObject.hpp>
|
||||
#include <xo/alloc2/Allocator.hpp>
|
||||
#include "DLocalSymtab.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IGCObject_DLocalSymtab; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::mm::AGCObject,
|
||||
xo::scm::DLocalSymtab>
|
||||
{
|
||||
using ImplType = xo::mm::IGCObject_Xfer
|
||||
<xo::scm::DLocalSymtab,
|
||||
xo::scm::IGCObject_DLocalSymtab>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IGCObject_DLocalSymtab
|
||||
**/
|
||||
class IGCObject_DLocalSymtab {
|
||||
public:
|
||||
/** @defgroup scm-gcobject-dlocalsymtab-type-traits **/
|
||||
///@{
|
||||
using size_type = xo::mm::AGCObject::size_type;
|
||||
using AAllocator = xo::mm::AGCObject::AAllocator;
|
||||
using AGCObjectVisitor = xo::mm::AGCObject::AGCObjectVisitor;
|
||||
using VisitReason = xo::mm::AGCObject::VisitReason;
|
||||
using Copaque = xo::mm::AGCObject::Copaque;
|
||||
using Opaque = xo::mm::AGCObject::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-gcobject-dlocalsymtab-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
|
||||
// non-const methods
|
||||
/** move instance using object visitor.
|
||||
Arguably abusing the word 'visitor' here **/
|
||||
static Opaque gco_shallow_move(DLocalSymtab & self, obj<AGCObjectVisitor> gc) noexcept;
|
||||
/** Invoke fn.visit_child(iface,data) for each child GCObject pointer.
|
||||
Context: provides address of data pointer so it can be updated in place
|
||||
when @p fn invokes garbage collector reentry point **/
|
||||
static void visit_gco_children(DLocalSymtab & self, VisitReason reason, obj<AGCObjectVisitor> fn) noexcept;
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
62
include/xo/expression2/symtab/IPrintable_DGlobalSymtab.hpp
Normal file
62
include/xo/expression2/symtab/IPrintable_DGlobalSymtab.hpp
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
/** @file IPrintable_DGlobalSymtab.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IPrintable_DGlobalSymtab.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IPrintable_DGlobalSymtab.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Printable.hpp"
|
||||
#include <xo/printable2/Printable.hpp>
|
||||
#include <xo/printable2/detail/IPrintable_Xfer.hpp>
|
||||
#include "DGlobalSymtab.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IPrintable_DGlobalSymtab; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::print::APrintable,
|
||||
xo::scm::DGlobalSymtab>
|
||||
{
|
||||
using ImplType = xo::print::IPrintable_Xfer
|
||||
<xo::scm::DGlobalSymtab,
|
||||
xo::scm::IPrintable_DGlobalSymtab>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IPrintable_DGlobalSymtab
|
||||
**/
|
||||
class IPrintable_DGlobalSymtab {
|
||||
public:
|
||||
/** @defgroup scm-printable-dglobalsymtab-type-traits **/
|
||||
///@{
|
||||
using ppindentinfo = xo::print::APrintable::ppindentinfo;
|
||||
using Copaque = xo::print::APrintable::Copaque;
|
||||
using Opaque = xo::print::APrintable::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-printable-dglobalsymtab-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
/** Pretty-printing support for this object.
|
||||
See [xo-indentlog/xo/indentlog/pretty.hpp] **/
|
||||
static bool pretty(const DGlobalSymtab & self, const ppindentinfo & ppii);
|
||||
|
||||
// non-const methods
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
62
include/xo/expression2/symtab/IPrintable_DLocalSymtab.hpp
Normal file
62
include/xo/expression2/symtab/IPrintable_DLocalSymtab.hpp
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
/** @file IPrintable_DLocalSymtab.hpp
|
||||
*
|
||||
* Generated automagically from ingredients:
|
||||
* 1. code generator:
|
||||
* [xo-facet/codegen/genfacet]
|
||||
* arguments:
|
||||
* --input [idl/IPrintable_DLocalSymtab.json5]
|
||||
* 2. jinja2 template for abstract facet .hpp file:
|
||||
* [iface_facet_repr.hpp.j2]
|
||||
* 3. idl for facet methods
|
||||
* [idl/IPrintable_DLocalSymtab.json5]
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Printable.hpp"
|
||||
#include <xo/printable2/Printable.hpp>
|
||||
#include <xo/printable2/detail/IPrintable_Xfer.hpp>
|
||||
#include "DLocalSymtab.hpp"
|
||||
|
||||
namespace xo { namespace scm { class IPrintable_DLocalSymtab; } }
|
||||
|
||||
namespace xo {
|
||||
namespace facet {
|
||||
template <>
|
||||
struct FacetImplementation<xo::print::APrintable,
|
||||
xo::scm::DLocalSymtab>
|
||||
{
|
||||
using ImplType = xo::print::IPrintable_Xfer
|
||||
<xo::scm::DLocalSymtab,
|
||||
xo::scm::IPrintable_DLocalSymtab>;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @class IPrintable_DLocalSymtab
|
||||
**/
|
||||
class IPrintable_DLocalSymtab {
|
||||
public:
|
||||
/** @defgroup scm-printable-dlocalsymtab-type-traits **/
|
||||
///@{
|
||||
using ppindentinfo = xo::print::APrintable::ppindentinfo;
|
||||
using Copaque = xo::print::APrintable::Copaque;
|
||||
using Opaque = xo::print::APrintable::Opaque;
|
||||
///@}
|
||||
/** @defgroup scm-printable-dlocalsymtab-methods **/
|
||||
///@{
|
||||
// const methods
|
||||
/** Pretty-printing support for this object.
|
||||
See [xo-indentlog/xo/indentlog/pretty.hpp] **/
|
||||
static bool pretty(const DLocalSymtab & self, const ppindentinfo & ppii);
|
||||
|
||||
// non-const methods
|
||||
///@}
|
||||
};
|
||||
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
/* end */
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue