From 422b6c976e28445d2a6e14586fa416b0f16c093f Mon Sep 17 00:00:00 2001 From: Kimplul Date: Sat, 24 Jun 2023 20:48:32 +0300 Subject: initial commit --- .gitignore | 11 + Makefile | 76 + README.md | 20 + docs/doxygen-kmi.css | 2137 +++++++++++ docs/doxygen.conf | 2738 ++++++++++++++ lib/decls.h | 1300 +++++++ lib/defns.h | 9082 +++++++++++++++++++++++++++++++++++++++++++++ lib/empty.c | 6 + lib/gen/.gitkeep | 0 lib/gen_lib | 30 + lib/ops.h | 5180 ++++++++++++++++++++++++++ lib/prune.c | 82 + lib/source.mk | 14 + ops/add.c | 7 + ops/addao.c | 6 + ops/addi/addi0.c | 4 + ops/addi/addi1.c | 4 + ops/addi/addi10.c | 4 + ops/addi/addi100.c | 4 + ops/addi/addi101.c | 4 + ops/addi/addi102.c | 4 + ops/addi/addi103.c | 4 + ops/addi/addi104.c | 4 + ops/addi/addi105.c | 4 + ops/addi/addi106.c | 4 + ops/addi/addi107.c | 4 + ops/addi/addi108.c | 4 + ops/addi/addi109.c | 4 + ops/addi/addi11.c | 4 + ops/addi/addi110.c | 4 + ops/addi/addi111.c | 4 + ops/addi/addi112.c | 4 + ops/addi/addi113.c | 4 + ops/addi/addi114.c | 4 + ops/addi/addi115.c | 4 + ops/addi/addi116.c | 4 + ops/addi/addi117.c | 4 + ops/addi/addi118.c | 4 + ops/addi/addi119.c | 4 + ops/addi/addi12.c | 4 + ops/addi/addi120.c | 4 + ops/addi/addi121.c | 4 + ops/addi/addi122.c | 4 + ops/addi/addi123.c | 4 + ops/addi/addi124.c | 4 + ops/addi/addi125.c | 4 + ops/addi/addi126.c | 4 + ops/addi/addi127.c | 4 + ops/addi/addi128.c | 4 + ops/addi/addi129.c | 4 + ops/addi/addi13.c | 4 + ops/addi/addi130.c | 4 + ops/addi/addi131.c | 4 + ops/addi/addi132.c | 4 + ops/addi/addi133.c | 4 + ops/addi/addi134.c | 4 + ops/addi/addi135.c | 4 + ops/addi/addi136.c | 4 + ops/addi/addi137.c | 4 + ops/addi/addi138.c | 4 + ops/addi/addi139.c | 4 + ops/addi/addi14.c | 4 + ops/addi/addi140.c | 4 + ops/addi/addi141.c | 4 + ops/addi/addi142.c | 4 + ops/addi/addi143.c | 4 + ops/addi/addi144.c | 4 + ops/addi/addi145.c | 4 + ops/addi/addi146.c | 4 + ops/addi/addi147.c | 4 + ops/addi/addi148.c | 4 + ops/addi/addi149.c | 4 + ops/addi/addi15.c | 4 + ops/addi/addi150.c | 4 + ops/addi/addi151.c | 4 + ops/addi/addi152.c | 4 + ops/addi/addi153.c | 4 + ops/addi/addi154.c | 4 + ops/addi/addi155.c | 4 + ops/addi/addi156.c | 4 + ops/addi/addi157.c | 4 + ops/addi/addi158.c | 4 + ops/addi/addi159.c | 4 + ops/addi/addi16.c | 4 + ops/addi/addi160.c | 4 + ops/addi/addi161.c | 4 + ops/addi/addi162.c | 4 + ops/addi/addi163.c | 4 + ops/addi/addi164.c | 4 + ops/addi/addi165.c | 4 + ops/addi/addi166.c | 4 + ops/addi/addi167.c | 4 + ops/addi/addi168.c | 4 + ops/addi/addi169.c | 4 + ops/addi/addi17.c | 4 + ops/addi/addi170.c | 4 + ops/addi/addi171.c | 4 + ops/addi/addi172.c | 4 + ops/addi/addi173.c | 4 + ops/addi/addi174.c | 4 + ops/addi/addi175.c | 4 + ops/addi/addi176.c | 4 + ops/addi/addi177.c | 4 + ops/addi/addi178.c | 4 + ops/addi/addi179.c | 4 + ops/addi/addi18.c | 4 + ops/addi/addi180.c | 4 + ops/addi/addi181.c | 4 + ops/addi/addi182.c | 4 + ops/addi/addi183.c | 4 + ops/addi/addi184.c | 4 + ops/addi/addi185.c | 4 + ops/addi/addi186.c | 4 + ops/addi/addi187.c | 4 + ops/addi/addi188.c | 4 + ops/addi/addi189.c | 4 + ops/addi/addi19.c | 4 + ops/addi/addi190.c | 4 + ops/addi/addi191.c | 4 + ops/addi/addi192.c | 4 + ops/addi/addi193.c | 4 + ops/addi/addi194.c | 4 + ops/addi/addi195.c | 4 + ops/addi/addi196.c | 4 + ops/addi/addi197.c | 4 + ops/addi/addi198.c | 4 + ops/addi/addi199.c | 4 + ops/addi/addi2.c | 4 + ops/addi/addi20.c | 4 + ops/addi/addi200.c | 4 + ops/addi/addi201.c | 4 + ops/addi/addi202.c | 4 + ops/addi/addi203.c | 4 + ops/addi/addi204.c | 4 + ops/addi/addi205.c | 4 + ops/addi/addi206.c | 4 + ops/addi/addi207.c | 4 + ops/addi/addi208.c | 4 + ops/addi/addi209.c | 4 + ops/addi/addi21.c | 4 + ops/addi/addi210.c | 4 + ops/addi/addi211.c | 4 + ops/addi/addi212.c | 4 + ops/addi/addi213.c | 4 + ops/addi/addi214.c | 4 + ops/addi/addi215.c | 4 + ops/addi/addi216.c | 4 + ops/addi/addi217.c | 4 + ops/addi/addi218.c | 4 + ops/addi/addi219.c | 4 + ops/addi/addi22.c | 4 + ops/addi/addi220.c | 4 + ops/addi/addi221.c | 4 + ops/addi/addi222.c | 4 + ops/addi/addi223.c | 4 + ops/addi/addi224.c | 4 + ops/addi/addi225.c | 4 + ops/addi/addi226.c | 4 + ops/addi/addi227.c | 4 + ops/addi/addi228.c | 4 + ops/addi/addi229.c | 4 + ops/addi/addi23.c | 4 + ops/addi/addi230.c | 4 + ops/addi/addi231.c | 4 + ops/addi/addi232.c | 4 + ops/addi/addi233.c | 4 + ops/addi/addi234.c | 4 + ops/addi/addi235.c | 4 + ops/addi/addi236.c | 4 + ops/addi/addi237.c | 4 + ops/addi/addi238.c | 4 + ops/addi/addi239.c | 4 + ops/addi/addi24.c | 4 + ops/addi/addi240.c | 4 + ops/addi/addi241.c | 4 + ops/addi/addi242.c | 4 + ops/addi/addi243.c | 4 + ops/addi/addi244.c | 4 + ops/addi/addi245.c | 4 + ops/addi/addi246.c | 4 + ops/addi/addi247.c | 4 + ops/addi/addi248.c | 4 + ops/addi/addi249.c | 4 + ops/addi/addi25.c | 4 + ops/addi/addi250.c | 4 + ops/addi/addi251.c | 4 + ops/addi/addi252.c | 4 + ops/addi/addi253.c | 4 + ops/addi/addi254.c | 4 + ops/addi/addi255.c | 4 + ops/addi/addi26.c | 4 + ops/addi/addi27.c | 4 + ops/addi/addi28.c | 4 + ops/addi/addi29.c | 4 + ops/addi/addi3.c | 4 + ops/addi/addi30.c | 4 + ops/addi/addi31.c | 4 + ops/addi/addi32.c | 4 + ops/addi/addi33.c | 4 + ops/addi/addi34.c | 4 + ops/addi/addi35.c | 4 + ops/addi/addi36.c | 4 + ops/addi/addi37.c | 4 + ops/addi/addi38.c | 4 + ops/addi/addi39.c | 4 + ops/addi/addi4.c | 4 + ops/addi/addi40.c | 4 + ops/addi/addi41.c | 4 + ops/addi/addi42.c | 4 + ops/addi/addi43.c | 4 + ops/addi/addi44.c | 4 + ops/addi/addi45.c | 4 + ops/addi/addi46.c | 4 + ops/addi/addi47.c | 4 + ops/addi/addi48.c | 4 + ops/addi/addi49.c | 4 + ops/addi/addi5.c | 4 + ops/addi/addi50.c | 4 + ops/addi/addi51.c | 4 + ops/addi/addi52.c | 4 + ops/addi/addi53.c | 4 + ops/addi/addi54.c | 4 + ops/addi/addi55.c | 4 + ops/addi/addi56.c | 4 + ops/addi/addi57.c | 4 + ops/addi/addi58.c | 4 + ops/addi/addi59.c | 4 + ops/addi/addi6.c | 4 + ops/addi/addi60.c | 4 + ops/addi/addi61.c | 4 + ops/addi/addi62.c | 4 + ops/addi/addi63.c | 4 + ops/addi/addi64.c | 4 + ops/addi/addi65.c | 4 + ops/addi/addi66.c | 4 + ops/addi/addi67.c | 4 + ops/addi/addi68.c | 4 + ops/addi/addi69.c | 4 + ops/addi/addi7.c | 4 + ops/addi/addi70.c | 4 + ops/addi/addi71.c | 4 + ops/addi/addi72.c | 4 + ops/addi/addi73.c | 4 + ops/addi/addi74.c | 4 + ops/addi/addi75.c | 4 + ops/addi/addi76.c | 4 + ops/addi/addi77.c | 4 + ops/addi/addi78.c | 4 + ops/addi/addi79.c | 4 + ops/addi/addi8.c | 4 + ops/addi/addi80.c | 4 + ops/addi/addi81.c | 4 + ops/addi/addi82.c | 4 + ops/addi/addi83.c | 4 + ops/addi/addi84.c | 4 + ops/addi/addi85.c | 4 + ops/addi/addi86.c | 4 + ops/addi/addi87.c | 4 + ops/addi/addi88.c | 4 + ops/addi/addi89.c | 4 + ops/addi/addi9.c | 4 + ops/addi/addi90.c | 4 + ops/addi/addi91.c | 4 + ops/addi/addi92.c | 4 + ops/addi/addi93.c | 4 + ops/addi/addi94.c | 4 + ops/addi/addi95.c | 4 + ops/addi/addi96.c | 4 + ops/addi/addi97.c | 4 + ops/addi/addi98.c | 4 + ops/addi/addi99.c | 4 + ops/addi/gen_addi.sh | 7 + ops/addi/source.mk | 2 + ops/addxo.c | 6 + ops/addyo.c | 6 + ops/ban.c | 6 + ops/baz.c | 11 + ops/bs/bsa0.c | 4 + ops/bs/bsa1.c | 4 + ops/bs/bsa10.c | 4 + ops/bs/bsa11.c | 4 + ops/bs/bsa12.c | 4 + ops/bs/bsa13.c | 4 + ops/bs/bsa14.c | 4 + ops/bs/bsa15.c | 4 + ops/bs/bsa16.c | 4 + ops/bs/bsa17.c | 4 + ops/bs/bsa18.c | 4 + ops/bs/bsa19.c | 4 + ops/bs/bsa2.c | 4 + ops/bs/bsa20.c | 4 + ops/bs/bsa21.c | 4 + ops/bs/bsa22.c | 4 + ops/bs/bsa23.c | 4 + ops/bs/bsa24.c | 4 + ops/bs/bsa25.c | 4 + ops/bs/bsa26.c | 4 + ops/bs/bsa27.c | 4 + ops/bs/bsa28.c | 4 + ops/bs/bsa29.c | 4 + ops/bs/bsa3.c | 4 + ops/bs/bsa30.c | 4 + ops/bs/bsa31.c | 4 + ops/bs/bsa32.c | 4 + ops/bs/bsa33.c | 4 + ops/bs/bsa34.c | 4 + ops/bs/bsa35.c | 4 + ops/bs/bsa36.c | 4 + ops/bs/bsa37.c | 4 + ops/bs/bsa38.c | 4 + ops/bs/bsa39.c | 4 + ops/bs/bsa4.c | 4 + ops/bs/bsa40.c | 4 + ops/bs/bsa41.c | 4 + ops/bs/bsa42.c | 4 + ops/bs/bsa43.c | 4 + ops/bs/bsa44.c | 4 + ops/bs/bsa45.c | 4 + ops/bs/bsa46.c | 4 + ops/bs/bsa47.c | 4 + ops/bs/bsa48.c | 4 + ops/bs/bsa49.c | 4 + ops/bs/bsa5.c | 4 + ops/bs/bsa50.c | 4 + ops/bs/bsa51.c | 4 + ops/bs/bsa52.c | 4 + ops/bs/bsa53.c | 4 + ops/bs/bsa54.c | 4 + ops/bs/bsa55.c | 4 + ops/bs/bsa56.c | 4 + ops/bs/bsa57.c | 4 + ops/bs/bsa58.c | 4 + ops/bs/bsa59.c | 4 + ops/bs/bsa6.c | 4 + ops/bs/bsa60.c | 4 + ops/bs/bsa61.c | 4 + ops/bs/bsa62.c | 4 + ops/bs/bsa63.c | 4 + ops/bs/bsa7.c | 4 + ops/bs/bsa8.c | 4 + ops/bs/bsa9.c | 4 + ops/bs/bso0.c | 4 + ops/bs/bso1.c | 4 + ops/bs/bso10.c | 4 + ops/bs/bso11.c | 4 + ops/bs/bso12.c | 4 + ops/bs/bso13.c | 4 + ops/bs/bso14.c | 4 + ops/bs/bso15.c | 4 + ops/bs/bso16.c | 4 + ops/bs/bso17.c | 4 + ops/bs/bso18.c | 4 + ops/bs/bso19.c | 4 + ops/bs/bso2.c | 4 + ops/bs/bso20.c | 4 + ops/bs/bso21.c | 4 + ops/bs/bso22.c | 4 + ops/bs/bso23.c | 4 + ops/bs/bso24.c | 4 + ops/bs/bso25.c | 4 + ops/bs/bso26.c | 4 + ops/bs/bso27.c | 4 + ops/bs/bso28.c | 4 + ops/bs/bso29.c | 4 + ops/bs/bso3.c | 4 + ops/bs/bso30.c | 4 + ops/bs/bso31.c | 4 + ops/bs/bso32.c | 4 + ops/bs/bso33.c | 4 + ops/bs/bso34.c | 4 + ops/bs/bso35.c | 4 + ops/bs/bso36.c | 4 + ops/bs/bso37.c | 4 + ops/bs/bso38.c | 4 + ops/bs/bso39.c | 4 + ops/bs/bso4.c | 4 + ops/bs/bso40.c | 4 + ops/bs/bso41.c | 4 + ops/bs/bso42.c | 4 + ops/bs/bso43.c | 4 + ops/bs/bso44.c | 4 + ops/bs/bso45.c | 4 + ops/bs/bso46.c | 4 + ops/bs/bso47.c | 4 + ops/bs/bso48.c | 4 + ops/bs/bso49.c | 4 + ops/bs/bso5.c | 4 + ops/bs/bso50.c | 4 + ops/bs/bso51.c | 4 + ops/bs/bso52.c | 4 + ops/bs/bso53.c | 4 + ops/bs/bso54.c | 4 + ops/bs/bso55.c | 4 + ops/bs/bso56.c | 4 + ops/bs/bso57.c | 4 + ops/bs/bso58.c | 4 + ops/bs/bso59.c | 4 + ops/bs/bso6.c | 4 + ops/bs/bso60.c | 4 + ops/bs/bso61.c | 4 + ops/bs/bso62.c | 4 + ops/bs/bso63.c | 4 + ops/bs/bso7.c | 4 + ops/bs/bso8.c | 4 + ops/bs/bso9.c | 4 + ops/bs/bsx0.c | 4 + ops/bs/bsx1.c | 4 + ops/bs/bsx10.c | 4 + ops/bs/bsx11.c | 4 + ops/bs/bsx12.c | 4 + ops/bs/bsx13.c | 4 + ops/bs/bsx14.c | 4 + ops/bs/bsx15.c | 4 + ops/bs/bsx16.c | 4 + ops/bs/bsx17.c | 4 + ops/bs/bsx18.c | 4 + ops/bs/bsx19.c | 4 + ops/bs/bsx2.c | 4 + ops/bs/bsx20.c | 4 + ops/bs/bsx21.c | 4 + ops/bs/bsx22.c | 4 + ops/bs/bsx23.c | 4 + ops/bs/bsx24.c | 4 + ops/bs/bsx25.c | 4 + ops/bs/bsx26.c | 4 + ops/bs/bsx27.c | 4 + ops/bs/bsx28.c | 4 + ops/bs/bsx29.c | 4 + ops/bs/bsx3.c | 4 + ops/bs/bsx30.c | 4 + ops/bs/bsx31.c | 4 + ops/bs/bsx32.c | 4 + ops/bs/bsx33.c | 4 + ops/bs/bsx34.c | 4 + ops/bs/bsx35.c | 4 + ops/bs/bsx36.c | 4 + ops/bs/bsx37.c | 4 + ops/bs/bsx38.c | 4 + ops/bs/bsx39.c | 4 + ops/bs/bsx4.c | 4 + ops/bs/bsx40.c | 4 + ops/bs/bsx41.c | 4 + ops/bs/bsx42.c | 4 + ops/bs/bsx43.c | 4 + ops/bs/bsx44.c | 4 + ops/bs/bsx45.c | 4 + ops/bs/bsx46.c | 4 + ops/bs/bsx47.c | 4 + ops/bs/bsx48.c | 4 + ops/bs/bsx49.c | 4 + ops/bs/bsx5.c | 4 + ops/bs/bsx50.c | 4 + ops/bs/bsx51.c | 4 + ops/bs/bsx52.c | 4 + ops/bs/bsx53.c | 4 + ops/bs/bsx54.c | 4 + ops/bs/bsx55.c | 4 + ops/bs/bsx56.c | 4 + ops/bs/bsx57.c | 4 + ops/bs/bsx58.c | 4 + ops/bs/bsx59.c | 4 + ops/bs/bsx6.c | 4 + ops/bs/bsx60.c | 4 + ops/bs/bsx61.c | 4 + ops/bs/bsx62.c | 4 + ops/bs/bsx63.c | 4 + ops/bs/bsx7.c | 4 + ops/bs/bsx8.c | 4 + ops/bs/bsx9.c | 4 + ops/bs/bsy0.c | 4 + ops/bs/bsy1.c | 4 + ops/bs/bsy10.c | 4 + ops/bs/bsy11.c | 4 + ops/bs/bsy12.c | 4 + ops/bs/bsy13.c | 4 + ops/bs/bsy14.c | 4 + ops/bs/bsy15.c | 4 + ops/bs/bsy16.c | 4 + ops/bs/bsy17.c | 4 + ops/bs/bsy18.c | 4 + ops/bs/bsy19.c | 4 + ops/bs/bsy2.c | 4 + ops/bs/bsy20.c | 4 + ops/bs/bsy21.c | 4 + ops/bs/bsy22.c | 4 + ops/bs/bsy23.c | 4 + ops/bs/bsy24.c | 4 + ops/bs/bsy25.c | 4 + ops/bs/bsy26.c | 4 + ops/bs/bsy27.c | 4 + ops/bs/bsy28.c | 4 + ops/bs/bsy29.c | 4 + ops/bs/bsy3.c | 4 + ops/bs/bsy30.c | 4 + ops/bs/bsy31.c | 4 + ops/bs/bsy32.c | 4 + ops/bs/bsy33.c | 4 + ops/bs/bsy34.c | 4 + ops/bs/bsy35.c | 4 + ops/bs/bsy36.c | 4 + ops/bs/bsy37.c | 4 + ops/bs/bsy38.c | 4 + ops/bs/bsy39.c | 4 + ops/bs/bsy4.c | 4 + ops/bs/bsy40.c | 4 + ops/bs/bsy41.c | 4 + ops/bs/bsy42.c | 4 + ops/bs/bsy43.c | 4 + ops/bs/bsy44.c | 4 + ops/bs/bsy45.c | 4 + ops/bs/bsy46.c | 4 + ops/bs/bsy47.c | 4 + ops/bs/bsy48.c | 4 + ops/bs/bsy49.c | 4 + ops/bs/bsy5.c | 4 + ops/bs/bsy50.c | 4 + ops/bs/bsy51.c | 4 + ops/bs/bsy52.c | 4 + ops/bs/bsy53.c | 4 + ops/bs/bsy54.c | 4 + ops/bs/bsy55.c | 4 + ops/bs/bsy56.c | 4 + ops/bs/bsy57.c | 4 + ops/bs/bsy58.c | 4 + ops/bs/bsy59.c | 4 + ops/bs/bsy6.c | 4 + ops/bs/bsy60.c | 4 + ops/bs/bsy61.c | 4 + ops/bs/bsy62.c | 4 + ops/bs/bsy63.c | 4 + ops/bs/bsy7.c | 4 + ops/bs/bsy8.c | 4 + ops/bs/bsy9.c | 4 + ops/bs/gen_bs.sh | 39 + ops/bs/source.mk | 2 + ops/common.h | 24 + ops/end.c | 11 + ops/incy.c | 6 + ops/j.c | 5 + ops/li/gen_li.sh | 10 + ops/li/li0.c | 4 + ops/li/li1.c | 4 + ops/li/li10.c | 4 + ops/li/li100.c | 4 + ops/li/li101.c | 4 + ops/li/li102.c | 4 + ops/li/li103.c | 4 + ops/li/li104.c | 4 + ops/li/li105.c | 4 + ops/li/li106.c | 4 + ops/li/li107.c | 4 + ops/li/li108.c | 4 + ops/li/li109.c | 4 + ops/li/li11.c | 4 + ops/li/li110.c | 4 + ops/li/li111.c | 4 + ops/li/li112.c | 4 + ops/li/li113.c | 4 + ops/li/li114.c | 4 + ops/li/li115.c | 4 + ops/li/li116.c | 4 + ops/li/li117.c | 4 + ops/li/li118.c | 4 + ops/li/li119.c | 4 + ops/li/li12.c | 4 + ops/li/li120.c | 4 + ops/li/li121.c | 4 + ops/li/li122.c | 4 + ops/li/li123.c | 4 + ops/li/li124.c | 4 + ops/li/li125.c | 4 + ops/li/li126.c | 4 + ops/li/li127.c | 4 + ops/li/li128.c | 4 + ops/li/li129.c | 4 + ops/li/li13.c | 4 + ops/li/li130.c | 4 + ops/li/li131.c | 4 + ops/li/li132.c | 4 + ops/li/li133.c | 4 + ops/li/li134.c | 4 + ops/li/li135.c | 4 + ops/li/li136.c | 4 + ops/li/li137.c | 4 + ops/li/li138.c | 4 + ops/li/li139.c | 4 + ops/li/li14.c | 4 + ops/li/li140.c | 4 + ops/li/li141.c | 4 + ops/li/li142.c | 4 + ops/li/li143.c | 4 + ops/li/li144.c | 4 + ops/li/li145.c | 4 + ops/li/li146.c | 4 + ops/li/li147.c | 4 + ops/li/li148.c | 4 + ops/li/li149.c | 4 + ops/li/li15.c | 4 + ops/li/li150.c | 4 + ops/li/li151.c | 4 + ops/li/li152.c | 4 + ops/li/li153.c | 4 + ops/li/li154.c | 4 + ops/li/li155.c | 4 + ops/li/li156.c | 4 + ops/li/li157.c | 4 + ops/li/li158.c | 4 + ops/li/li159.c | 4 + ops/li/li16.c | 4 + ops/li/li160.c | 4 + ops/li/li161.c | 4 + ops/li/li162.c | 4 + ops/li/li163.c | 4 + ops/li/li164.c | 4 + ops/li/li165.c | 4 + ops/li/li166.c | 4 + ops/li/li167.c | 4 + ops/li/li168.c | 4 + ops/li/li169.c | 4 + ops/li/li17.c | 4 + ops/li/li170.c | 4 + ops/li/li171.c | 4 + ops/li/li172.c | 4 + ops/li/li173.c | 4 + ops/li/li174.c | 4 + ops/li/li175.c | 4 + ops/li/li176.c | 4 + ops/li/li177.c | 4 + ops/li/li178.c | 4 + ops/li/li179.c | 4 + ops/li/li18.c | 4 + ops/li/li180.c | 4 + ops/li/li181.c | 4 + ops/li/li182.c | 4 + ops/li/li183.c | 4 + ops/li/li184.c | 4 + ops/li/li185.c | 4 + ops/li/li186.c | 4 + ops/li/li187.c | 4 + ops/li/li188.c | 4 + ops/li/li189.c | 4 + ops/li/li19.c | 4 + ops/li/li190.c | 4 + ops/li/li191.c | 4 + ops/li/li192.c | 4 + ops/li/li193.c | 4 + ops/li/li194.c | 4 + ops/li/li195.c | 4 + ops/li/li196.c | 4 + ops/li/li197.c | 4 + ops/li/li198.c | 4 + ops/li/li199.c | 4 + ops/li/li2.c | 4 + ops/li/li20.c | 4 + ops/li/li200.c | 4 + ops/li/li201.c | 4 + ops/li/li202.c | 4 + ops/li/li203.c | 4 + ops/li/li204.c | 4 + ops/li/li205.c | 4 + ops/li/li206.c | 4 + ops/li/li207.c | 4 + ops/li/li208.c | 4 + ops/li/li209.c | 4 + ops/li/li21.c | 4 + ops/li/li210.c | 4 + ops/li/li211.c | 4 + ops/li/li212.c | 4 + ops/li/li213.c | 4 + ops/li/li214.c | 4 + ops/li/li215.c | 4 + ops/li/li216.c | 4 + ops/li/li217.c | 4 + ops/li/li218.c | 4 + ops/li/li219.c | 4 + ops/li/li22.c | 4 + ops/li/li220.c | 4 + ops/li/li221.c | 4 + ops/li/li222.c | 4 + ops/li/li223.c | 4 + ops/li/li224.c | 4 + ops/li/li225.c | 4 + ops/li/li226.c | 4 + ops/li/li227.c | 4 + ops/li/li228.c | 4 + ops/li/li229.c | 4 + ops/li/li23.c | 4 + ops/li/li230.c | 4 + ops/li/li231.c | 4 + ops/li/li232.c | 4 + ops/li/li233.c | 4 + ops/li/li234.c | 4 + ops/li/li235.c | 4 + ops/li/li236.c | 4 + ops/li/li237.c | 4 + ops/li/li238.c | 4 + ops/li/li239.c | 4 + ops/li/li24.c | 4 + ops/li/li240.c | 4 + ops/li/li241.c | 4 + ops/li/li242.c | 4 + ops/li/li243.c | 4 + ops/li/li244.c | 4 + ops/li/li245.c | 4 + ops/li/li246.c | 4 + ops/li/li247.c | 4 + ops/li/li248.c | 4 + ops/li/li249.c | 4 + ops/li/li25.c | 4 + ops/li/li250.c | 4 + ops/li/li251.c | 4 + ops/li/li252.c | 4 + ops/li/li253.c | 4 + ops/li/li254.c | 4 + ops/li/li255.c | 4 + ops/li/li26.c | 4 + ops/li/li27.c | 4 + ops/li/li28.c | 4 + ops/li/li29.c | 4 + ops/li/li3.c | 4 + ops/li/li30.c | 4 + ops/li/li31.c | 4 + ops/li/li32.c | 4 + ops/li/li33.c | 4 + ops/li/li34.c | 4 + ops/li/li35.c | 4 + ops/li/li36.c | 4 + ops/li/li37.c | 4 + ops/li/li38.c | 4 + ops/li/li39.c | 4 + ops/li/li4.c | 4 + ops/li/li40.c | 4 + ops/li/li41.c | 4 + ops/li/li42.c | 4 + ops/li/li43.c | 4 + ops/li/li44.c | 4 + ops/li/li45.c | 4 + ops/li/li46.c | 4 + ops/li/li47.c | 4 + ops/li/li48.c | 4 + ops/li/li49.c | 4 + ops/li/li5.c | 4 + ops/li/li50.c | 4 + ops/li/li51.c | 4 + ops/li/li52.c | 4 + ops/li/li53.c | 4 + ops/li/li54.c | 4 + ops/li/li55.c | 4 + ops/li/li56.c | 4 + ops/li/li57.c | 4 + ops/li/li58.c | 4 + ops/li/li59.c | 4 + ops/li/li6.c | 4 + ops/li/li60.c | 4 + ops/li/li61.c | 4 + ops/li/li62.c | 4 + ops/li/li63.c | 4 + ops/li/li64.c | 4 + ops/li/li65.c | 4 + ops/li/li66.c | 4 + ops/li/li67.c | 4 + ops/li/li68.c | 4 + ops/li/li69.c | 4 + ops/li/li7.c | 4 + ops/li/li70.c | 4 + ops/li/li71.c | 4 + ops/li/li72.c | 4 + ops/li/li73.c | 4 + ops/li/li74.c | 4 + ops/li/li75.c | 4 + ops/li/li76.c | 4 + ops/li/li77.c | 4 + ops/li/li78.c | 4 + ops/li/li79.c | 4 + ops/li/li8.c | 4 + ops/li/li80.c | 4 + ops/li/li81.c | 4 + ops/li/li82.c | 4 + ops/li/li83.c | 4 + ops/li/li84.c | 4 + ops/li/li85.c | 4 + ops/li/li86.c | 4 + ops/li/li87.c | 4 + ops/li/li88.c | 4 + ops/li/li89.c | 4 + ops/li/li9.c | 4 + ops/li/li90.c | 4 + ops/li/li91.c | 4 + ops/li/li92.c | 4 + ops/li/li93.c | 4 + ops/li/li94.c | 4 + ops/li/li95.c | 4 + ops/li/li96.c | 4 + ops/li/li97.c | 4 + ops/li/li98.c | 4 + ops/li/li99.c | 4 + ops/li/source.mk | 2 + ops/movao.c | 7 + ops/movxa.c | 7 + ops/movxo.c | 6 + ops/movya.c | 7 + ops/movyo.c | 7 + ops/sl/gen_sl.sh | 41 + ops/sl/sla0.c | 4 + ops/sl/sla1.c | 4 + ops/sl/sla10.c | 4 + ops/sl/sla11.c | 4 + ops/sl/sla12.c | 4 + ops/sl/sla13.c | 4 + ops/sl/sla14.c | 4 + ops/sl/sla15.c | 4 + ops/sl/sla16.c | 4 + ops/sl/sla17.c | 4 + ops/sl/sla18.c | 4 + ops/sl/sla19.c | 4 + ops/sl/sla2.c | 4 + ops/sl/sla20.c | 4 + ops/sl/sla21.c | 4 + ops/sl/sla22.c | 4 + ops/sl/sla23.c | 4 + ops/sl/sla24.c | 4 + ops/sl/sla25.c | 4 + ops/sl/sla26.c | 4 + ops/sl/sla27.c | 4 + ops/sl/sla28.c | 4 + ops/sl/sla29.c | 4 + ops/sl/sla3.c | 4 + ops/sl/sla30.c | 4 + ops/sl/sla31.c | 4 + ops/sl/sla32.c | 4 + ops/sl/sla33.c | 4 + ops/sl/sla34.c | 4 + ops/sl/sla35.c | 4 + ops/sl/sla36.c | 4 + ops/sl/sla37.c | 4 + ops/sl/sla38.c | 4 + ops/sl/sla39.c | 4 + ops/sl/sla4.c | 4 + ops/sl/sla40.c | 4 + ops/sl/sla41.c | 4 + ops/sl/sla42.c | 4 + ops/sl/sla43.c | 4 + ops/sl/sla44.c | 4 + ops/sl/sla45.c | 4 + ops/sl/sla46.c | 4 + ops/sl/sla47.c | 4 + ops/sl/sla48.c | 4 + ops/sl/sla49.c | 4 + ops/sl/sla5.c | 4 + ops/sl/sla50.c | 4 + ops/sl/sla51.c | 4 + ops/sl/sla52.c | 4 + ops/sl/sla53.c | 4 + ops/sl/sla54.c | 4 + ops/sl/sla55.c | 4 + ops/sl/sla56.c | 4 + ops/sl/sla57.c | 4 + ops/sl/sla58.c | 4 + ops/sl/sla59.c | 4 + ops/sl/sla6.c | 4 + ops/sl/sla60.c | 4 + ops/sl/sla61.c | 4 + ops/sl/sla62.c | 4 + ops/sl/sla63.c | 4 + ops/sl/sla7.c | 4 + ops/sl/sla8.c | 4 + ops/sl/sla9.c | 4 + ops/sl/slo0.c | 4 + ops/sl/slo1.c | 4 + ops/sl/slo10.c | 4 + ops/sl/slo11.c | 4 + ops/sl/slo12.c | 4 + ops/sl/slo13.c | 4 + ops/sl/slo14.c | 4 + ops/sl/slo15.c | 4 + ops/sl/slo16.c | 4 + ops/sl/slo17.c | 4 + ops/sl/slo18.c | 4 + ops/sl/slo19.c | 4 + ops/sl/slo2.c | 4 + ops/sl/slo20.c | 4 + ops/sl/slo21.c | 4 + ops/sl/slo22.c | 4 + ops/sl/slo23.c | 4 + ops/sl/slo24.c | 4 + ops/sl/slo25.c | 4 + ops/sl/slo26.c | 4 + ops/sl/slo27.c | 4 + ops/sl/slo28.c | 4 + ops/sl/slo29.c | 4 + ops/sl/slo3.c | 4 + ops/sl/slo30.c | 4 + ops/sl/slo31.c | 4 + ops/sl/slo32.c | 4 + ops/sl/slo33.c | 4 + ops/sl/slo34.c | 4 + ops/sl/slo35.c | 4 + ops/sl/slo36.c | 4 + ops/sl/slo37.c | 4 + ops/sl/slo38.c | 4 + ops/sl/slo39.c | 4 + ops/sl/slo4.c | 4 + ops/sl/slo40.c | 4 + ops/sl/slo41.c | 4 + ops/sl/slo42.c | 4 + ops/sl/slo43.c | 4 + ops/sl/slo44.c | 4 + ops/sl/slo45.c | 4 + ops/sl/slo46.c | 4 + ops/sl/slo47.c | 4 + ops/sl/slo48.c | 4 + ops/sl/slo49.c | 4 + ops/sl/slo5.c | 4 + ops/sl/slo50.c | 4 + ops/sl/slo51.c | 4 + ops/sl/slo52.c | 4 + ops/sl/slo53.c | 4 + ops/sl/slo54.c | 4 + ops/sl/slo55.c | 4 + ops/sl/slo56.c | 4 + ops/sl/slo57.c | 4 + ops/sl/slo58.c | 4 + ops/sl/slo59.c | 4 + ops/sl/slo6.c | 4 + ops/sl/slo60.c | 4 + ops/sl/slo61.c | 4 + ops/sl/slo62.c | 4 + ops/sl/slo63.c | 4 + ops/sl/slo7.c | 4 + ops/sl/slo8.c | 4 + ops/sl/slo9.c | 4 + ops/sl/slx0.c | 4 + ops/sl/slx1.c | 4 + ops/sl/slx10.c | 4 + ops/sl/slx11.c | 4 + ops/sl/slx12.c | 4 + ops/sl/slx13.c | 4 + ops/sl/slx14.c | 4 + ops/sl/slx15.c | 4 + ops/sl/slx16.c | 4 + ops/sl/slx17.c | 4 + ops/sl/slx18.c | 4 + ops/sl/slx19.c | 4 + ops/sl/slx2.c | 4 + ops/sl/slx20.c | 4 + ops/sl/slx21.c | 4 + ops/sl/slx22.c | 4 + ops/sl/slx23.c | 4 + ops/sl/slx24.c | 4 + ops/sl/slx25.c | 4 + ops/sl/slx26.c | 4 + ops/sl/slx27.c | 4 + ops/sl/slx28.c | 4 + ops/sl/slx29.c | 4 + ops/sl/slx3.c | 4 + ops/sl/slx30.c | 4 + ops/sl/slx31.c | 4 + ops/sl/slx32.c | 4 + ops/sl/slx33.c | 4 + ops/sl/slx34.c | 4 + ops/sl/slx35.c | 4 + ops/sl/slx36.c | 4 + ops/sl/slx37.c | 4 + ops/sl/slx38.c | 4 + ops/sl/slx39.c | 4 + ops/sl/slx4.c | 4 + ops/sl/slx40.c | 4 + ops/sl/slx41.c | 4 + ops/sl/slx42.c | 4 + ops/sl/slx43.c | 4 + ops/sl/slx44.c | 4 + ops/sl/slx45.c | 4 + ops/sl/slx46.c | 4 + ops/sl/slx47.c | 4 + ops/sl/slx48.c | 4 + ops/sl/slx49.c | 4 + ops/sl/slx5.c | 4 + ops/sl/slx50.c | 4 + ops/sl/slx51.c | 4 + ops/sl/slx52.c | 4 + ops/sl/slx53.c | 4 + ops/sl/slx54.c | 4 + ops/sl/slx55.c | 4 + ops/sl/slx56.c | 4 + ops/sl/slx57.c | 4 + ops/sl/slx58.c | 4 + ops/sl/slx59.c | 4 + ops/sl/slx6.c | 4 + ops/sl/slx60.c | 4 + ops/sl/slx61.c | 4 + ops/sl/slx62.c | 4 + ops/sl/slx63.c | 4 + ops/sl/slx7.c | 4 + ops/sl/slx8.c | 4 + ops/sl/slx9.c | 4 + ops/sl/sly0.c | 4 + ops/sl/sly1.c | 4 + ops/sl/sly10.c | 4 + ops/sl/sly11.c | 4 + ops/sl/sly12.c | 4 + ops/sl/sly13.c | 4 + ops/sl/sly14.c | 4 + ops/sl/sly15.c | 4 + ops/sl/sly16.c | 4 + ops/sl/sly17.c | 4 + ops/sl/sly18.c | 4 + ops/sl/sly19.c | 4 + ops/sl/sly2.c | 4 + ops/sl/sly20.c | 4 + ops/sl/sly21.c | 4 + ops/sl/sly22.c | 4 + ops/sl/sly23.c | 4 + ops/sl/sly24.c | 4 + ops/sl/sly25.c | 4 + ops/sl/sly26.c | 4 + ops/sl/sly27.c | 4 + ops/sl/sly28.c | 4 + ops/sl/sly29.c | 4 + ops/sl/sly3.c | 4 + ops/sl/sly30.c | 4 + ops/sl/sly31.c | 4 + ops/sl/sly32.c | 4 + ops/sl/sly33.c | 4 + ops/sl/sly34.c | 4 + ops/sl/sly35.c | 4 + ops/sl/sly36.c | 4 + ops/sl/sly37.c | 4 + ops/sl/sly38.c | 4 + ops/sl/sly39.c | 4 + ops/sl/sly4.c | 4 + ops/sl/sly40.c | 4 + ops/sl/sly41.c | 4 + ops/sl/sly42.c | 4 + ops/sl/sly43.c | 4 + ops/sl/sly44.c | 4 + ops/sl/sly45.c | 4 + ops/sl/sly46.c | 4 + ops/sl/sly47.c | 4 + ops/sl/sly48.c | 4 + ops/sl/sly49.c | 4 + ops/sl/sly5.c | 4 + ops/sl/sly50.c | 4 + ops/sl/sly51.c | 4 + ops/sl/sly52.c | 4 + ops/sl/sly53.c | 4 + ops/sl/sly54.c | 4 + ops/sl/sly55.c | 4 + ops/sl/sly56.c | 4 + ops/sl/sly57.c | 4 + ops/sl/sly58.c | 4 + ops/sl/sly59.c | 4 + ops/sl/sly6.c | 4 + ops/sl/sly60.c | 4 + ops/sl/sly61.c | 4 + ops/sl/sly62.c | 4 + ops/sl/sly63.c | 4 + ops/sl/sly7.c | 4 + ops/sl/sly8.c | 4 + ops/sl/sly9.c | 4 + ops/sl/source.mk | 2 + ops/source.mk | 8 + ops/sr/gen_sr.sh | 39 + ops/sr/source.mk | 2 + ops/sr/sra0.c | 4 + ops/sr/sra1.c | 4 + ops/sr/sra10.c | 4 + ops/sr/sra11.c | 4 + ops/sr/sra12.c | 4 + ops/sr/sra13.c | 4 + ops/sr/sra14.c | 4 + ops/sr/sra15.c | 4 + ops/sr/sra16.c | 4 + ops/sr/sra17.c | 4 + ops/sr/sra18.c | 4 + ops/sr/sra19.c | 4 + ops/sr/sra2.c | 4 + ops/sr/sra20.c | 4 + ops/sr/sra21.c | 4 + ops/sr/sra22.c | 4 + ops/sr/sra23.c | 4 + ops/sr/sra24.c | 4 + ops/sr/sra25.c | 4 + ops/sr/sra26.c | 4 + ops/sr/sra27.c | 4 + ops/sr/sra28.c | 4 + ops/sr/sra29.c | 4 + ops/sr/sra3.c | 4 + ops/sr/sra30.c | 4 + ops/sr/sra31.c | 4 + ops/sr/sra32.c | 4 + ops/sr/sra33.c | 4 + ops/sr/sra34.c | 4 + ops/sr/sra35.c | 4 + ops/sr/sra36.c | 4 + ops/sr/sra37.c | 4 + ops/sr/sra38.c | 4 + ops/sr/sra39.c | 4 + ops/sr/sra4.c | 4 + ops/sr/sra40.c | 4 + ops/sr/sra41.c | 4 + ops/sr/sra42.c | 4 + ops/sr/sra43.c | 4 + ops/sr/sra44.c | 4 + ops/sr/sra45.c | 4 + ops/sr/sra46.c | 4 + ops/sr/sra47.c | 4 + ops/sr/sra48.c | 4 + ops/sr/sra49.c | 4 + ops/sr/sra5.c | 4 + ops/sr/sra50.c | 4 + ops/sr/sra51.c | 4 + ops/sr/sra52.c | 4 + ops/sr/sra53.c | 4 + ops/sr/sra54.c | 4 + ops/sr/sra55.c | 4 + ops/sr/sra56.c | 4 + ops/sr/sra57.c | 4 + ops/sr/sra58.c | 4 + ops/sr/sra59.c | 4 + ops/sr/sra6.c | 4 + ops/sr/sra60.c | 4 + ops/sr/sra61.c | 4 + ops/sr/sra62.c | 4 + ops/sr/sra63.c | 4 + ops/sr/sra7.c | 4 + ops/sr/sra8.c | 4 + ops/sr/sra9.c | 4 + ops/sr/sro0.c | 4 + ops/sr/sro1.c | 4 + ops/sr/sro10.c | 4 + ops/sr/sro11.c | 4 + ops/sr/sro12.c | 4 + ops/sr/sro13.c | 4 + ops/sr/sro14.c | 4 + ops/sr/sro15.c | 4 + ops/sr/sro16.c | 4 + ops/sr/sro17.c | 4 + ops/sr/sro18.c | 4 + ops/sr/sro19.c | 4 + ops/sr/sro2.c | 4 + ops/sr/sro20.c | 4 + ops/sr/sro21.c | 4 + ops/sr/sro22.c | 4 + ops/sr/sro23.c | 4 + ops/sr/sro24.c | 4 + ops/sr/sro25.c | 4 + ops/sr/sro26.c | 4 + ops/sr/sro27.c | 4 + ops/sr/sro28.c | 4 + ops/sr/sro29.c | 4 + ops/sr/sro3.c | 4 + ops/sr/sro30.c | 4 + ops/sr/sro31.c | 4 + ops/sr/sro32.c | 4 + ops/sr/sro33.c | 4 + ops/sr/sro34.c | 4 + ops/sr/sro35.c | 4 + ops/sr/sro36.c | 4 + ops/sr/sro37.c | 4 + ops/sr/sro38.c | 4 + ops/sr/sro39.c | 4 + ops/sr/sro4.c | 4 + ops/sr/sro40.c | 4 + ops/sr/sro41.c | 4 + ops/sr/sro42.c | 4 + ops/sr/sro43.c | 4 + ops/sr/sro44.c | 4 + ops/sr/sro45.c | 4 + ops/sr/sro46.c | 4 + ops/sr/sro47.c | 4 + ops/sr/sro48.c | 4 + ops/sr/sro49.c | 4 + ops/sr/sro5.c | 4 + ops/sr/sro50.c | 4 + ops/sr/sro51.c | 4 + ops/sr/sro52.c | 4 + ops/sr/sro53.c | 4 + ops/sr/sro54.c | 4 + ops/sr/sro55.c | 4 + ops/sr/sro56.c | 4 + ops/sr/sro57.c | 4 + ops/sr/sro58.c | 4 + ops/sr/sro59.c | 4 + ops/sr/sro6.c | 4 + ops/sr/sro60.c | 4 + ops/sr/sro61.c | 4 + ops/sr/sro62.c | 4 + ops/sr/sro63.c | 4 + ops/sr/sro7.c | 4 + ops/sr/sro8.c | 4 + ops/sr/sro9.c | 4 + ops/sr/srx0.c | 4 + ops/sr/srx1.c | 4 + ops/sr/srx10.c | 4 + ops/sr/srx11.c | 4 + ops/sr/srx12.c | 4 + ops/sr/srx13.c | 4 + ops/sr/srx14.c | 4 + ops/sr/srx15.c | 4 + ops/sr/srx16.c | 4 + ops/sr/srx17.c | 4 + ops/sr/srx18.c | 4 + ops/sr/srx19.c | 4 + ops/sr/srx2.c | 4 + ops/sr/srx20.c | 4 + ops/sr/srx21.c | 4 + ops/sr/srx22.c | 4 + ops/sr/srx23.c | 4 + ops/sr/srx24.c | 4 + ops/sr/srx25.c | 4 + ops/sr/srx26.c | 4 + ops/sr/srx27.c | 4 + ops/sr/srx28.c | 4 + ops/sr/srx29.c | 4 + ops/sr/srx3.c | 4 + ops/sr/srx30.c | 4 + ops/sr/srx31.c | 4 + ops/sr/srx32.c | 4 + ops/sr/srx33.c | 4 + ops/sr/srx34.c | 4 + ops/sr/srx35.c | 4 + ops/sr/srx36.c | 4 + ops/sr/srx37.c | 4 + ops/sr/srx38.c | 4 + ops/sr/srx39.c | 4 + ops/sr/srx4.c | 4 + ops/sr/srx40.c | 4 + ops/sr/srx41.c | 4 + ops/sr/srx42.c | 4 + ops/sr/srx43.c | 4 + ops/sr/srx44.c | 4 + ops/sr/srx45.c | 4 + ops/sr/srx46.c | 4 + ops/sr/srx47.c | 4 + ops/sr/srx48.c | 4 + ops/sr/srx49.c | 4 + ops/sr/srx5.c | 4 + ops/sr/srx50.c | 4 + ops/sr/srx51.c | 4 + ops/sr/srx52.c | 4 + ops/sr/srx53.c | 4 + ops/sr/srx54.c | 4 + ops/sr/srx55.c | 4 + ops/sr/srx56.c | 4 + ops/sr/srx57.c | 4 + ops/sr/srx58.c | 4 + ops/sr/srx59.c | 4 + ops/sr/srx6.c | 4 + ops/sr/srx60.c | 4 + ops/sr/srx61.c | 4 + ops/sr/srx62.c | 4 + ops/sr/srx63.c | 4 + ops/sr/srx7.c | 4 + ops/sr/srx8.c | 4 + ops/sr/srx9.c | 4 + ops/sr/sry0.c | 4 + ops/sr/sry1.c | 4 + ops/sr/sry10.c | 4 + ops/sr/sry11.c | 4 + ops/sr/sry12.c | 4 + ops/sr/sry13.c | 4 + ops/sr/sry14.c | 4 + ops/sr/sry15.c | 4 + ops/sr/sry16.c | 4 + ops/sr/sry17.c | 4 + ops/sr/sry18.c | 4 + ops/sr/sry19.c | 4 + ops/sr/sry2.c | 4 + ops/sr/sry20.c | 4 + ops/sr/sry21.c | 4 + ops/sr/sry22.c | 4 + ops/sr/sry23.c | 4 + ops/sr/sry24.c | 4 + ops/sr/sry25.c | 4 + ops/sr/sry26.c | 4 + ops/sr/sry27.c | 4 + ops/sr/sry28.c | 4 + ops/sr/sry29.c | 4 + ops/sr/sry3.c | 4 + ops/sr/sry30.c | 4 + ops/sr/sry31.c | 4 + ops/sr/sry32.c | 4 + ops/sr/sry33.c | 4 + ops/sr/sry34.c | 4 + ops/sr/sry35.c | 4 + ops/sr/sry36.c | 4 + ops/sr/sry37.c | 4 + ops/sr/sry38.c | 4 + ops/sr/sry39.c | 4 + ops/sr/sry4.c | 4 + ops/sr/sry40.c | 4 + ops/sr/sry41.c | 4 + ops/sr/sry42.c | 4 + ops/sr/sry43.c | 4 + ops/sr/sry44.c | 4 + ops/sr/sry45.c | 4 + ops/sr/sry46.c | 4 + ops/sr/sry47.c | 4 + ops/sr/sry48.c | 4 + ops/sr/sry49.c | 4 + ops/sr/sry5.c | 4 + ops/sr/sry50.c | 4 + ops/sr/sry51.c | 4 + ops/sr/sry52.c | 4 + ops/sr/sry53.c | 4 + ops/sr/sry54.c | 4 + ops/sr/sry55.c | 4 + ops/sr/sry56.c | 4 + ops/sr/sry57.c | 4 + ops/sr/sry58.c | 4 + ops/sr/sry59.c | 4 + ops/sr/sry6.c | 4 + ops/sr/sry60.c | 4 + ops/sr/sry61.c | 4 + ops/sr/sry62.c | 4 + ops/sr/sry63.c | 4 + ops/sr/sry7.c | 4 + ops/sr/sry8.c | 4 + ops/sr/sry9.c | 4 + ops/sub.c | 7 + ops/subxo.c | 7 + ops/subyo.c | 7 + scripts/gen-deps | 35 + scripts/gen-ops | 20 + scripts/license | 11 + scripts/warn-undocumented | 6 + src/copyjit.c | 358 ++ src/copyjit.h | 17 + src/main.c | 32 + src/source.mk | 2 + uncrustify.conf | 3133 ++++++++++++++++ 1331 files changed, 29707 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 README.md create mode 100644 docs/doxygen-kmi.css create mode 100644 docs/doxygen.conf create mode 100644 lib/decls.h create mode 100644 lib/defns.h create mode 100644 lib/empty.c create mode 100644 lib/gen/.gitkeep create mode 100755 lib/gen_lib create mode 100644 lib/ops.h create mode 100644 lib/prune.c create mode 100644 lib/source.mk create mode 100644 ops/add.c create mode 100644 ops/addao.c create mode 100644 ops/addi/addi0.c create mode 100644 ops/addi/addi1.c create mode 100644 ops/addi/addi10.c create mode 100644 ops/addi/addi100.c create mode 100644 ops/addi/addi101.c create mode 100644 ops/addi/addi102.c create mode 100644 ops/addi/addi103.c create mode 100644 ops/addi/addi104.c create mode 100644 ops/addi/addi105.c create mode 100644 ops/addi/addi106.c create mode 100644 ops/addi/addi107.c create mode 100644 ops/addi/addi108.c create mode 100644 ops/addi/addi109.c create mode 100644 ops/addi/addi11.c create mode 100644 ops/addi/addi110.c create mode 100644 ops/addi/addi111.c create mode 100644 ops/addi/addi112.c create mode 100644 ops/addi/addi113.c create mode 100644 ops/addi/addi114.c create mode 100644 ops/addi/addi115.c create mode 100644 ops/addi/addi116.c create mode 100644 ops/addi/addi117.c create mode 100644 ops/addi/addi118.c create mode 100644 ops/addi/addi119.c create mode 100644 ops/addi/addi12.c create mode 100644 ops/addi/addi120.c create mode 100644 ops/addi/addi121.c create mode 100644 ops/addi/addi122.c create mode 100644 ops/addi/addi123.c create mode 100644 ops/addi/addi124.c create mode 100644 ops/addi/addi125.c create mode 100644 ops/addi/addi126.c create mode 100644 ops/addi/addi127.c create mode 100644 ops/addi/addi128.c create mode 100644 ops/addi/addi129.c create mode 100644 ops/addi/addi13.c create mode 100644 ops/addi/addi130.c create mode 100644 ops/addi/addi131.c create mode 100644 ops/addi/addi132.c create mode 100644 ops/addi/addi133.c create mode 100644 ops/addi/addi134.c create mode 100644 ops/addi/addi135.c create mode 100644 ops/addi/addi136.c create mode 100644 ops/addi/addi137.c create mode 100644 ops/addi/addi138.c create mode 100644 ops/addi/addi139.c create mode 100644 ops/addi/addi14.c create mode 100644 ops/addi/addi140.c create mode 100644 ops/addi/addi141.c create mode 100644 ops/addi/addi142.c create mode 100644 ops/addi/addi143.c create mode 100644 ops/addi/addi144.c create mode 100644 ops/addi/addi145.c create mode 100644 ops/addi/addi146.c create mode 100644 ops/addi/addi147.c create mode 100644 ops/addi/addi148.c create mode 100644 ops/addi/addi149.c create mode 100644 ops/addi/addi15.c create mode 100644 ops/addi/addi150.c create mode 100644 ops/addi/addi151.c create mode 100644 ops/addi/addi152.c create mode 100644 ops/addi/addi153.c create mode 100644 ops/addi/addi154.c create mode 100644 ops/addi/addi155.c create mode 100644 ops/addi/addi156.c create mode 100644 ops/addi/addi157.c create mode 100644 ops/addi/addi158.c create mode 100644 ops/addi/addi159.c create mode 100644 ops/addi/addi16.c create mode 100644 ops/addi/addi160.c create mode 100644 ops/addi/addi161.c create mode 100644 ops/addi/addi162.c create mode 100644 ops/addi/addi163.c create mode 100644 ops/addi/addi164.c create mode 100644 ops/addi/addi165.c create mode 100644 ops/addi/addi166.c create mode 100644 ops/addi/addi167.c create mode 100644 ops/addi/addi168.c create mode 100644 ops/addi/addi169.c create mode 100644 ops/addi/addi17.c create mode 100644 ops/addi/addi170.c create mode 100644 ops/addi/addi171.c create mode 100644 ops/addi/addi172.c create mode 100644 ops/addi/addi173.c create mode 100644 ops/addi/addi174.c create mode 100644 ops/addi/addi175.c create mode 100644 ops/addi/addi176.c create mode 100644 ops/addi/addi177.c create mode 100644 ops/addi/addi178.c create mode 100644 ops/addi/addi179.c create mode 100644 ops/addi/addi18.c create mode 100644 ops/addi/addi180.c create mode 100644 ops/addi/addi181.c create mode 100644 ops/addi/addi182.c create mode 100644 ops/addi/addi183.c create mode 100644 ops/addi/addi184.c create mode 100644 ops/addi/addi185.c create mode 100644 ops/addi/addi186.c create mode 100644 ops/addi/addi187.c create mode 100644 ops/addi/addi188.c create mode 100644 ops/addi/addi189.c create mode 100644 ops/addi/addi19.c create mode 100644 ops/addi/addi190.c create mode 100644 ops/addi/addi191.c create mode 100644 ops/addi/addi192.c create mode 100644 ops/addi/addi193.c create mode 100644 ops/addi/addi194.c create mode 100644 ops/addi/addi195.c create mode 100644 ops/addi/addi196.c create mode 100644 ops/addi/addi197.c create mode 100644 ops/addi/addi198.c create mode 100644 ops/addi/addi199.c create mode 100644 ops/addi/addi2.c create mode 100644 ops/addi/addi20.c create mode 100644 ops/addi/addi200.c create mode 100644 ops/addi/addi201.c create mode 100644 ops/addi/addi202.c create mode 100644 ops/addi/addi203.c create mode 100644 ops/addi/addi204.c create mode 100644 ops/addi/addi205.c create mode 100644 ops/addi/addi206.c create mode 100644 ops/addi/addi207.c create mode 100644 ops/addi/addi208.c create mode 100644 ops/addi/addi209.c create mode 100644 ops/addi/addi21.c create mode 100644 ops/addi/addi210.c create mode 100644 ops/addi/addi211.c create mode 100644 ops/addi/addi212.c create mode 100644 ops/addi/addi213.c create mode 100644 ops/addi/addi214.c create mode 100644 ops/addi/addi215.c create mode 100644 ops/addi/addi216.c create mode 100644 ops/addi/addi217.c create mode 100644 ops/addi/addi218.c create mode 100644 ops/addi/addi219.c create mode 100644 ops/addi/addi22.c create mode 100644 ops/addi/addi220.c create mode 100644 ops/addi/addi221.c create mode 100644 ops/addi/addi222.c create mode 100644 ops/addi/addi223.c create mode 100644 ops/addi/addi224.c create mode 100644 ops/addi/addi225.c create mode 100644 ops/addi/addi226.c create mode 100644 ops/addi/addi227.c create mode 100644 ops/addi/addi228.c create mode 100644 ops/addi/addi229.c create mode 100644 ops/addi/addi23.c create mode 100644 ops/addi/addi230.c create mode 100644 ops/addi/addi231.c create mode 100644 ops/addi/addi232.c create mode 100644 ops/addi/addi233.c create mode 100644 ops/addi/addi234.c create mode 100644 ops/addi/addi235.c create mode 100644 ops/addi/addi236.c create mode 100644 ops/addi/addi237.c create mode 100644 ops/addi/addi238.c create mode 100644 ops/addi/addi239.c create mode 100644 ops/addi/addi24.c create mode 100644 ops/addi/addi240.c create mode 100644 ops/addi/addi241.c create mode 100644 ops/addi/addi242.c create mode 100644 ops/addi/addi243.c create mode 100644 ops/addi/addi244.c create mode 100644 ops/addi/addi245.c create mode 100644 ops/addi/addi246.c create mode 100644 ops/addi/addi247.c create mode 100644 ops/addi/addi248.c create mode 100644 ops/addi/addi249.c create mode 100644 ops/addi/addi25.c create mode 100644 ops/addi/addi250.c create mode 100644 ops/addi/addi251.c create mode 100644 ops/addi/addi252.c create mode 100644 ops/addi/addi253.c create mode 100644 ops/addi/addi254.c create mode 100644 ops/addi/addi255.c create mode 100644 ops/addi/addi26.c create mode 100644 ops/addi/addi27.c create mode 100644 ops/addi/addi28.c create mode 100644 ops/addi/addi29.c create mode 100644 ops/addi/addi3.c create mode 100644 ops/addi/addi30.c create mode 100644 ops/addi/addi31.c create mode 100644 ops/addi/addi32.c create mode 100644 ops/addi/addi33.c create mode 100644 ops/addi/addi34.c create mode 100644 ops/addi/addi35.c create mode 100644 ops/addi/addi36.c create mode 100644 ops/addi/addi37.c create mode 100644 ops/addi/addi38.c create mode 100644 ops/addi/addi39.c create mode 100644 ops/addi/addi4.c create mode 100644 ops/addi/addi40.c create mode 100644 ops/addi/addi41.c create mode 100644 ops/addi/addi42.c create mode 100644 ops/addi/addi43.c create mode 100644 ops/addi/addi44.c create mode 100644 ops/addi/addi45.c create mode 100644 ops/addi/addi46.c create mode 100644 ops/addi/addi47.c create mode 100644 ops/addi/addi48.c create mode 100644 ops/addi/addi49.c create mode 100644 ops/addi/addi5.c create mode 100644 ops/addi/addi50.c create mode 100644 ops/addi/addi51.c create mode 100644 ops/addi/addi52.c create mode 100644 ops/addi/addi53.c create mode 100644 ops/addi/addi54.c create mode 100644 ops/addi/addi55.c create mode 100644 ops/addi/addi56.c create mode 100644 ops/addi/addi57.c create mode 100644 ops/addi/addi58.c create mode 100644 ops/addi/addi59.c create mode 100644 ops/addi/addi6.c create mode 100644 ops/addi/addi60.c create mode 100644 ops/addi/addi61.c create mode 100644 ops/addi/addi62.c create mode 100644 ops/addi/addi63.c create mode 100644 ops/addi/addi64.c create mode 100644 ops/addi/addi65.c create mode 100644 ops/addi/addi66.c create mode 100644 ops/addi/addi67.c create mode 100644 ops/addi/addi68.c create mode 100644 ops/addi/addi69.c create mode 100644 ops/addi/addi7.c create mode 100644 ops/addi/addi70.c create mode 100644 ops/addi/addi71.c create mode 100644 ops/addi/addi72.c create mode 100644 ops/addi/addi73.c create mode 100644 ops/addi/addi74.c create mode 100644 ops/addi/addi75.c create mode 100644 ops/addi/addi76.c create mode 100644 ops/addi/addi77.c create mode 100644 ops/addi/addi78.c create mode 100644 ops/addi/addi79.c create mode 100644 ops/addi/addi8.c create mode 100644 ops/addi/addi80.c create mode 100644 ops/addi/addi81.c create mode 100644 ops/addi/addi82.c create mode 100644 ops/addi/addi83.c create mode 100644 ops/addi/addi84.c create mode 100644 ops/addi/addi85.c create mode 100644 ops/addi/addi86.c create mode 100644 ops/addi/addi87.c create mode 100644 ops/addi/addi88.c create mode 100644 ops/addi/addi89.c create mode 100644 ops/addi/addi9.c create mode 100644 ops/addi/addi90.c create mode 100644 ops/addi/addi91.c create mode 100644 ops/addi/addi92.c create mode 100644 ops/addi/addi93.c create mode 100644 ops/addi/addi94.c create mode 100644 ops/addi/addi95.c create mode 100644 ops/addi/addi96.c create mode 100644 ops/addi/addi97.c create mode 100644 ops/addi/addi98.c create mode 100644 ops/addi/addi99.c create mode 100755 ops/addi/gen_addi.sh create mode 100644 ops/addi/source.mk create mode 100644 ops/addxo.c create mode 100644 ops/addyo.c create mode 100644 ops/ban.c create mode 100644 ops/baz.c create mode 100644 ops/bs/bsa0.c create mode 100644 ops/bs/bsa1.c create mode 100644 ops/bs/bsa10.c create mode 100644 ops/bs/bsa11.c create mode 100644 ops/bs/bsa12.c create mode 100644 ops/bs/bsa13.c create mode 100644 ops/bs/bsa14.c create mode 100644 ops/bs/bsa15.c create mode 100644 ops/bs/bsa16.c create mode 100644 ops/bs/bsa17.c create mode 100644 ops/bs/bsa18.c create mode 100644 ops/bs/bsa19.c create mode 100644 ops/bs/bsa2.c create mode 100644 ops/bs/bsa20.c create mode 100644 ops/bs/bsa21.c create mode 100644 ops/bs/bsa22.c create mode 100644 ops/bs/bsa23.c create mode 100644 ops/bs/bsa24.c create mode 100644 ops/bs/bsa25.c create mode 100644 ops/bs/bsa26.c create mode 100644 ops/bs/bsa27.c create mode 100644 ops/bs/bsa28.c create mode 100644 ops/bs/bsa29.c create mode 100644 ops/bs/bsa3.c create mode 100644 ops/bs/bsa30.c create mode 100644 ops/bs/bsa31.c create mode 100644 ops/bs/bsa32.c create mode 100644 ops/bs/bsa33.c create mode 100644 ops/bs/bsa34.c create mode 100644 ops/bs/bsa35.c create mode 100644 ops/bs/bsa36.c create mode 100644 ops/bs/bsa37.c create mode 100644 ops/bs/bsa38.c create mode 100644 ops/bs/bsa39.c create mode 100644 ops/bs/bsa4.c create mode 100644 ops/bs/bsa40.c create mode 100644 ops/bs/bsa41.c create mode 100644 ops/bs/bsa42.c create mode 100644 ops/bs/bsa43.c create mode 100644 ops/bs/bsa44.c create mode 100644 ops/bs/bsa45.c create mode 100644 ops/bs/bsa46.c create mode 100644 ops/bs/bsa47.c create mode 100644 ops/bs/bsa48.c create mode 100644 ops/bs/bsa49.c create mode 100644 ops/bs/bsa5.c create mode 100644 ops/bs/bsa50.c create mode 100644 ops/bs/bsa51.c create mode 100644 ops/bs/bsa52.c create mode 100644 ops/bs/bsa53.c create mode 100644 ops/bs/bsa54.c create mode 100644 ops/bs/bsa55.c create mode 100644 ops/bs/bsa56.c create mode 100644 ops/bs/bsa57.c create mode 100644 ops/bs/bsa58.c create mode 100644 ops/bs/bsa59.c create mode 100644 ops/bs/bsa6.c create mode 100644 ops/bs/bsa60.c create mode 100644 ops/bs/bsa61.c create mode 100644 ops/bs/bsa62.c create mode 100644 ops/bs/bsa63.c create mode 100644 ops/bs/bsa7.c create mode 100644 ops/bs/bsa8.c create mode 100644 ops/bs/bsa9.c create mode 100644 ops/bs/bso0.c create mode 100644 ops/bs/bso1.c create mode 100644 ops/bs/bso10.c create mode 100644 ops/bs/bso11.c create mode 100644 ops/bs/bso12.c create mode 100644 ops/bs/bso13.c create mode 100644 ops/bs/bso14.c create mode 100644 ops/bs/bso15.c create mode 100644 ops/bs/bso16.c create mode 100644 ops/bs/bso17.c create mode 100644 ops/bs/bso18.c create mode 100644 ops/bs/bso19.c create mode 100644 ops/bs/bso2.c create mode 100644 ops/bs/bso20.c create mode 100644 ops/bs/bso21.c create mode 100644 ops/bs/bso22.c create mode 100644 ops/bs/bso23.c create mode 100644 ops/bs/bso24.c create mode 100644 ops/bs/bso25.c create mode 100644 ops/bs/bso26.c create mode 100644 ops/bs/bso27.c create mode 100644 ops/bs/bso28.c create mode 100644 ops/bs/bso29.c create mode 100644 ops/bs/bso3.c create mode 100644 ops/bs/bso30.c create mode 100644 ops/bs/bso31.c create mode 100644 ops/bs/bso32.c create mode 100644 ops/bs/bso33.c create mode 100644 ops/bs/bso34.c create mode 100644 ops/bs/bso35.c create mode 100644 ops/bs/bso36.c create mode 100644 ops/bs/bso37.c create mode 100644 ops/bs/bso38.c create mode 100644 ops/bs/bso39.c create mode 100644 ops/bs/bso4.c create mode 100644 ops/bs/bso40.c create mode 100644 ops/bs/bso41.c create mode 100644 ops/bs/bso42.c create mode 100644 ops/bs/bso43.c create mode 100644 ops/bs/bso44.c create mode 100644 ops/bs/bso45.c create mode 100644 ops/bs/bso46.c create mode 100644 ops/bs/bso47.c create mode 100644 ops/bs/bso48.c create mode 100644 ops/bs/bso49.c create mode 100644 ops/bs/bso5.c create mode 100644 ops/bs/bso50.c create mode 100644 ops/bs/bso51.c create mode 100644 ops/bs/bso52.c create mode 100644 ops/bs/bso53.c create mode 100644 ops/bs/bso54.c create mode 100644 ops/bs/bso55.c create mode 100644 ops/bs/bso56.c create mode 100644 ops/bs/bso57.c create mode 100644 ops/bs/bso58.c create mode 100644 ops/bs/bso59.c create mode 100644 ops/bs/bso6.c create mode 100644 ops/bs/bso60.c create mode 100644 ops/bs/bso61.c create mode 100644 ops/bs/bso62.c create mode 100644 ops/bs/bso63.c create mode 100644 ops/bs/bso7.c create mode 100644 ops/bs/bso8.c create mode 100644 ops/bs/bso9.c create mode 100644 ops/bs/bsx0.c create mode 100644 ops/bs/bsx1.c create mode 100644 ops/bs/bsx10.c create mode 100644 ops/bs/bsx11.c create mode 100644 ops/bs/bsx12.c create mode 100644 ops/bs/bsx13.c create mode 100644 ops/bs/bsx14.c create mode 100644 ops/bs/bsx15.c create mode 100644 ops/bs/bsx16.c create mode 100644 ops/bs/bsx17.c create mode 100644 ops/bs/bsx18.c create mode 100644 ops/bs/bsx19.c create mode 100644 ops/bs/bsx2.c create mode 100644 ops/bs/bsx20.c create mode 100644 ops/bs/bsx21.c create mode 100644 ops/bs/bsx22.c create mode 100644 ops/bs/bsx23.c create mode 100644 ops/bs/bsx24.c create mode 100644 ops/bs/bsx25.c create mode 100644 ops/bs/bsx26.c create mode 100644 ops/bs/bsx27.c create mode 100644 ops/bs/bsx28.c create mode 100644 ops/bs/bsx29.c create mode 100644 ops/bs/bsx3.c create mode 100644 ops/bs/bsx30.c create mode 100644 ops/bs/bsx31.c create mode 100644 ops/bs/bsx32.c create mode 100644 ops/bs/bsx33.c create mode 100644 ops/bs/bsx34.c create mode 100644 ops/bs/bsx35.c create mode 100644 ops/bs/bsx36.c create mode 100644 ops/bs/bsx37.c create mode 100644 ops/bs/bsx38.c create mode 100644 ops/bs/bsx39.c create mode 100644 ops/bs/bsx4.c create mode 100644 ops/bs/bsx40.c create mode 100644 ops/bs/bsx41.c create mode 100644 ops/bs/bsx42.c create mode 100644 ops/bs/bsx43.c create mode 100644 ops/bs/bsx44.c create mode 100644 ops/bs/bsx45.c create mode 100644 ops/bs/bsx46.c create mode 100644 ops/bs/bsx47.c create mode 100644 ops/bs/bsx48.c create mode 100644 ops/bs/bsx49.c create mode 100644 ops/bs/bsx5.c create mode 100644 ops/bs/bsx50.c create mode 100644 ops/bs/bsx51.c create mode 100644 ops/bs/bsx52.c create mode 100644 ops/bs/bsx53.c create mode 100644 ops/bs/bsx54.c create mode 100644 ops/bs/bsx55.c create mode 100644 ops/bs/bsx56.c create mode 100644 ops/bs/bsx57.c create mode 100644 ops/bs/bsx58.c create mode 100644 ops/bs/bsx59.c create mode 100644 ops/bs/bsx6.c create mode 100644 ops/bs/bsx60.c create mode 100644 ops/bs/bsx61.c create mode 100644 ops/bs/bsx62.c create mode 100644 ops/bs/bsx63.c create mode 100644 ops/bs/bsx7.c create mode 100644 ops/bs/bsx8.c create mode 100644 ops/bs/bsx9.c create mode 100644 ops/bs/bsy0.c create mode 100644 ops/bs/bsy1.c create mode 100644 ops/bs/bsy10.c create mode 100644 ops/bs/bsy11.c create mode 100644 ops/bs/bsy12.c create mode 100644 ops/bs/bsy13.c create mode 100644 ops/bs/bsy14.c create mode 100644 ops/bs/bsy15.c create mode 100644 ops/bs/bsy16.c create mode 100644 ops/bs/bsy17.c create mode 100644 ops/bs/bsy18.c create mode 100644 ops/bs/bsy19.c create mode 100644 ops/bs/bsy2.c create mode 100644 ops/bs/bsy20.c create mode 100644 ops/bs/bsy21.c create mode 100644 ops/bs/bsy22.c create mode 100644 ops/bs/bsy23.c create mode 100644 ops/bs/bsy24.c create mode 100644 ops/bs/bsy25.c create mode 100644 ops/bs/bsy26.c create mode 100644 ops/bs/bsy27.c create mode 100644 ops/bs/bsy28.c create mode 100644 ops/bs/bsy29.c create mode 100644 ops/bs/bsy3.c create mode 100644 ops/bs/bsy30.c create mode 100644 ops/bs/bsy31.c create mode 100644 ops/bs/bsy32.c create mode 100644 ops/bs/bsy33.c create mode 100644 ops/bs/bsy34.c create mode 100644 ops/bs/bsy35.c create mode 100644 ops/bs/bsy36.c create mode 100644 ops/bs/bsy37.c create mode 100644 ops/bs/bsy38.c create mode 100644 ops/bs/bsy39.c create mode 100644 ops/bs/bsy4.c create mode 100644 ops/bs/bsy40.c create mode 100644 ops/bs/bsy41.c create mode 100644 ops/bs/bsy42.c create mode 100644 ops/bs/bsy43.c create mode 100644 ops/bs/bsy44.c create mode 100644 ops/bs/bsy45.c create mode 100644 ops/bs/bsy46.c create mode 100644 ops/bs/bsy47.c create mode 100644 ops/bs/bsy48.c create mode 100644 ops/bs/bsy49.c create mode 100644 ops/bs/bsy5.c create mode 100644 ops/bs/bsy50.c create mode 100644 ops/bs/bsy51.c create mode 100644 ops/bs/bsy52.c create mode 100644 ops/bs/bsy53.c create mode 100644 ops/bs/bsy54.c create mode 100644 ops/bs/bsy55.c create mode 100644 ops/bs/bsy56.c create mode 100644 ops/bs/bsy57.c create mode 100644 ops/bs/bsy58.c create mode 100644 ops/bs/bsy59.c create mode 100644 ops/bs/bsy6.c create mode 100644 ops/bs/bsy60.c create mode 100644 ops/bs/bsy61.c create mode 100644 ops/bs/bsy62.c create mode 100644 ops/bs/bsy63.c create mode 100644 ops/bs/bsy7.c create mode 100644 ops/bs/bsy8.c create mode 100644 ops/bs/bsy9.c create mode 100755 ops/bs/gen_bs.sh create mode 100644 ops/bs/source.mk create mode 100644 ops/common.h create mode 100644 ops/end.c create mode 100644 ops/incy.c create mode 100644 ops/j.c create mode 100755 ops/li/gen_li.sh create mode 100644 ops/li/li0.c create mode 100644 ops/li/li1.c create mode 100644 ops/li/li10.c create mode 100644 ops/li/li100.c create mode 100644 ops/li/li101.c create mode 100644 ops/li/li102.c create mode 100644 ops/li/li103.c create mode 100644 ops/li/li104.c create mode 100644 ops/li/li105.c create mode 100644 ops/li/li106.c create mode 100644 ops/li/li107.c create mode 100644 ops/li/li108.c create mode 100644 ops/li/li109.c create mode 100644 ops/li/li11.c create mode 100644 ops/li/li110.c create mode 100644 ops/li/li111.c create mode 100644 ops/li/li112.c create mode 100644 ops/li/li113.c create mode 100644 ops/li/li114.c create mode 100644 ops/li/li115.c create mode 100644 ops/li/li116.c create mode 100644 ops/li/li117.c create mode 100644 ops/li/li118.c create mode 100644 ops/li/li119.c create mode 100644 ops/li/li12.c create mode 100644 ops/li/li120.c create mode 100644 ops/li/li121.c create mode 100644 ops/li/li122.c create mode 100644 ops/li/li123.c create mode 100644 ops/li/li124.c create mode 100644 ops/li/li125.c create mode 100644 ops/li/li126.c create mode 100644 ops/li/li127.c create mode 100644 ops/li/li128.c create mode 100644 ops/li/li129.c create mode 100644 ops/li/li13.c create mode 100644 ops/li/li130.c create mode 100644 ops/li/li131.c create mode 100644 ops/li/li132.c create mode 100644 ops/li/li133.c create mode 100644 ops/li/li134.c create mode 100644 ops/li/li135.c create mode 100644 ops/li/li136.c create mode 100644 ops/li/li137.c create mode 100644 ops/li/li138.c create mode 100644 ops/li/li139.c create mode 100644 ops/li/li14.c create mode 100644 ops/li/li140.c create mode 100644 ops/li/li141.c create mode 100644 ops/li/li142.c create mode 100644 ops/li/li143.c create mode 100644 ops/li/li144.c create mode 100644 ops/li/li145.c create mode 100644 ops/li/li146.c create mode 100644 ops/li/li147.c create mode 100644 ops/li/li148.c create mode 100644 ops/li/li149.c create mode 100644 ops/li/li15.c create mode 100644 ops/li/li150.c create mode 100644 ops/li/li151.c create mode 100644 ops/li/li152.c create mode 100644 ops/li/li153.c create mode 100644 ops/li/li154.c create mode 100644 ops/li/li155.c create mode 100644 ops/li/li156.c create mode 100644 ops/li/li157.c create mode 100644 ops/li/li158.c create mode 100644 ops/li/li159.c create mode 100644 ops/li/li16.c create mode 100644 ops/li/li160.c create mode 100644 ops/li/li161.c create mode 100644 ops/li/li162.c create mode 100644 ops/li/li163.c create mode 100644 ops/li/li164.c create mode 100644 ops/li/li165.c create mode 100644 ops/li/li166.c create mode 100644 ops/li/li167.c create mode 100644 ops/li/li168.c create mode 100644 ops/li/li169.c create mode 100644 ops/li/li17.c create mode 100644 ops/li/li170.c create mode 100644 ops/li/li171.c create mode 100644 ops/li/li172.c create mode 100644 ops/li/li173.c create mode 100644 ops/li/li174.c create mode 100644 ops/li/li175.c create mode 100644 ops/li/li176.c create mode 100644 ops/li/li177.c create mode 100644 ops/li/li178.c create mode 100644 ops/li/li179.c create mode 100644 ops/li/li18.c create mode 100644 ops/li/li180.c create mode 100644 ops/li/li181.c create mode 100644 ops/li/li182.c create mode 100644 ops/li/li183.c create mode 100644 ops/li/li184.c create mode 100644 ops/li/li185.c create mode 100644 ops/li/li186.c create mode 100644 ops/li/li187.c create mode 100644 ops/li/li188.c create mode 100644 ops/li/li189.c create mode 100644 ops/li/li19.c create mode 100644 ops/li/li190.c create mode 100644 ops/li/li191.c create mode 100644 ops/li/li192.c create mode 100644 ops/li/li193.c create mode 100644 ops/li/li194.c create mode 100644 ops/li/li195.c create mode 100644 ops/li/li196.c create mode 100644 ops/li/li197.c create mode 100644 ops/li/li198.c create mode 100644 ops/li/li199.c create mode 100644 ops/li/li2.c create mode 100644 ops/li/li20.c create mode 100644 ops/li/li200.c create mode 100644 ops/li/li201.c create mode 100644 ops/li/li202.c create mode 100644 ops/li/li203.c create mode 100644 ops/li/li204.c create mode 100644 ops/li/li205.c create mode 100644 ops/li/li206.c create mode 100644 ops/li/li207.c create mode 100644 ops/li/li208.c create mode 100644 ops/li/li209.c create mode 100644 ops/li/li21.c create mode 100644 ops/li/li210.c create mode 100644 ops/li/li211.c create mode 100644 ops/li/li212.c create mode 100644 ops/li/li213.c create mode 100644 ops/li/li214.c create mode 100644 ops/li/li215.c create mode 100644 ops/li/li216.c create mode 100644 ops/li/li217.c create mode 100644 ops/li/li218.c create mode 100644 ops/li/li219.c create mode 100644 ops/li/li22.c create mode 100644 ops/li/li220.c create mode 100644 ops/li/li221.c create mode 100644 ops/li/li222.c create mode 100644 ops/li/li223.c create mode 100644 ops/li/li224.c create mode 100644 ops/li/li225.c create mode 100644 ops/li/li226.c create mode 100644 ops/li/li227.c create mode 100644 ops/li/li228.c create mode 100644 ops/li/li229.c create mode 100644 ops/li/li23.c create mode 100644 ops/li/li230.c create mode 100644 ops/li/li231.c create mode 100644 ops/li/li232.c create mode 100644 ops/li/li233.c create mode 100644 ops/li/li234.c create mode 100644 ops/li/li235.c create mode 100644 ops/li/li236.c create mode 100644 ops/li/li237.c create mode 100644 ops/li/li238.c create mode 100644 ops/li/li239.c create mode 100644 ops/li/li24.c create mode 100644 ops/li/li240.c create mode 100644 ops/li/li241.c create mode 100644 ops/li/li242.c create mode 100644 ops/li/li243.c create mode 100644 ops/li/li244.c create mode 100644 ops/li/li245.c create mode 100644 ops/li/li246.c create mode 100644 ops/li/li247.c create mode 100644 ops/li/li248.c create mode 100644 ops/li/li249.c create mode 100644 ops/li/li25.c create mode 100644 ops/li/li250.c create mode 100644 ops/li/li251.c create mode 100644 ops/li/li252.c create mode 100644 ops/li/li253.c create mode 100644 ops/li/li254.c create mode 100644 ops/li/li255.c create mode 100644 ops/li/li26.c create mode 100644 ops/li/li27.c create mode 100644 ops/li/li28.c create mode 100644 ops/li/li29.c create mode 100644 ops/li/li3.c create mode 100644 ops/li/li30.c create mode 100644 ops/li/li31.c create mode 100644 ops/li/li32.c create mode 100644 ops/li/li33.c create mode 100644 ops/li/li34.c create mode 100644 ops/li/li35.c create mode 100644 ops/li/li36.c create mode 100644 ops/li/li37.c create mode 100644 ops/li/li38.c create mode 100644 ops/li/li39.c create mode 100644 ops/li/li4.c create mode 100644 ops/li/li40.c create mode 100644 ops/li/li41.c create mode 100644 ops/li/li42.c create mode 100644 ops/li/li43.c create mode 100644 ops/li/li44.c create mode 100644 ops/li/li45.c create mode 100644 ops/li/li46.c create mode 100644 ops/li/li47.c create mode 100644 ops/li/li48.c create mode 100644 ops/li/li49.c create mode 100644 ops/li/li5.c create mode 100644 ops/li/li50.c create mode 100644 ops/li/li51.c create mode 100644 ops/li/li52.c create mode 100644 ops/li/li53.c create mode 100644 ops/li/li54.c create mode 100644 ops/li/li55.c create mode 100644 ops/li/li56.c create mode 100644 ops/li/li57.c create mode 100644 ops/li/li58.c create mode 100644 ops/li/li59.c create mode 100644 ops/li/li6.c create mode 100644 ops/li/li60.c create mode 100644 ops/li/li61.c create mode 100644 ops/li/li62.c create mode 100644 ops/li/li63.c create mode 100644 ops/li/li64.c create mode 100644 ops/li/li65.c create mode 100644 ops/li/li66.c create mode 100644 ops/li/li67.c create mode 100644 ops/li/li68.c create mode 100644 ops/li/li69.c create mode 100644 ops/li/li7.c create mode 100644 ops/li/li70.c create mode 100644 ops/li/li71.c create mode 100644 ops/li/li72.c create mode 100644 ops/li/li73.c create mode 100644 ops/li/li74.c create mode 100644 ops/li/li75.c create mode 100644 ops/li/li76.c create mode 100644 ops/li/li77.c create mode 100644 ops/li/li78.c create mode 100644 ops/li/li79.c create mode 100644 ops/li/li8.c create mode 100644 ops/li/li80.c create mode 100644 ops/li/li81.c create mode 100644 ops/li/li82.c create mode 100644 ops/li/li83.c create mode 100644 ops/li/li84.c create mode 100644 ops/li/li85.c create mode 100644 ops/li/li86.c create mode 100644 ops/li/li87.c create mode 100644 ops/li/li88.c create mode 100644 ops/li/li89.c create mode 100644 ops/li/li9.c create mode 100644 ops/li/li90.c create mode 100644 ops/li/li91.c create mode 100644 ops/li/li92.c create mode 100644 ops/li/li93.c create mode 100644 ops/li/li94.c create mode 100644 ops/li/li95.c create mode 100644 ops/li/li96.c create mode 100644 ops/li/li97.c create mode 100644 ops/li/li98.c create mode 100644 ops/li/li99.c create mode 100644 ops/li/source.mk create mode 100644 ops/movao.c create mode 100644 ops/movxa.c create mode 100644 ops/movxo.c create mode 100644 ops/movya.c create mode 100644 ops/movyo.c create mode 100755 ops/sl/gen_sl.sh create mode 100644 ops/sl/sla0.c create mode 100644 ops/sl/sla1.c create mode 100644 ops/sl/sla10.c create mode 100644 ops/sl/sla11.c create mode 100644 ops/sl/sla12.c create mode 100644 ops/sl/sla13.c create mode 100644 ops/sl/sla14.c create mode 100644 ops/sl/sla15.c create mode 100644 ops/sl/sla16.c create mode 100644 ops/sl/sla17.c create mode 100644 ops/sl/sla18.c create mode 100644 ops/sl/sla19.c create mode 100644 ops/sl/sla2.c create mode 100644 ops/sl/sla20.c create mode 100644 ops/sl/sla21.c create mode 100644 ops/sl/sla22.c create mode 100644 ops/sl/sla23.c create mode 100644 ops/sl/sla24.c create mode 100644 ops/sl/sla25.c create mode 100644 ops/sl/sla26.c create mode 100644 ops/sl/sla27.c create mode 100644 ops/sl/sla28.c create mode 100644 ops/sl/sla29.c create mode 100644 ops/sl/sla3.c create mode 100644 ops/sl/sla30.c create mode 100644 ops/sl/sla31.c create mode 100644 ops/sl/sla32.c create mode 100644 ops/sl/sla33.c create mode 100644 ops/sl/sla34.c create mode 100644 ops/sl/sla35.c create mode 100644 ops/sl/sla36.c create mode 100644 ops/sl/sla37.c create mode 100644 ops/sl/sla38.c create mode 100644 ops/sl/sla39.c create mode 100644 ops/sl/sla4.c create mode 100644 ops/sl/sla40.c create mode 100644 ops/sl/sla41.c create mode 100644 ops/sl/sla42.c create mode 100644 ops/sl/sla43.c create mode 100644 ops/sl/sla44.c create mode 100644 ops/sl/sla45.c create mode 100644 ops/sl/sla46.c create mode 100644 ops/sl/sla47.c create mode 100644 ops/sl/sla48.c create mode 100644 ops/sl/sla49.c create mode 100644 ops/sl/sla5.c create mode 100644 ops/sl/sla50.c create mode 100644 ops/sl/sla51.c create mode 100644 ops/sl/sla52.c create mode 100644 ops/sl/sla53.c create mode 100644 ops/sl/sla54.c create mode 100644 ops/sl/sla55.c create mode 100644 ops/sl/sla56.c create mode 100644 ops/sl/sla57.c create mode 100644 ops/sl/sla58.c create mode 100644 ops/sl/sla59.c create mode 100644 ops/sl/sla6.c create mode 100644 ops/sl/sla60.c create mode 100644 ops/sl/sla61.c create mode 100644 ops/sl/sla62.c create mode 100644 ops/sl/sla63.c create mode 100644 ops/sl/sla7.c create mode 100644 ops/sl/sla8.c create mode 100644 ops/sl/sla9.c create mode 100644 ops/sl/slo0.c create mode 100644 ops/sl/slo1.c create mode 100644 ops/sl/slo10.c create mode 100644 ops/sl/slo11.c create mode 100644 ops/sl/slo12.c create mode 100644 ops/sl/slo13.c create mode 100644 ops/sl/slo14.c create mode 100644 ops/sl/slo15.c create mode 100644 ops/sl/slo16.c create mode 100644 ops/sl/slo17.c create mode 100644 ops/sl/slo18.c create mode 100644 ops/sl/slo19.c create mode 100644 ops/sl/slo2.c create mode 100644 ops/sl/slo20.c create mode 100644 ops/sl/slo21.c create mode 100644 ops/sl/slo22.c create mode 100644 ops/sl/slo23.c create mode 100644 ops/sl/slo24.c create mode 100644 ops/sl/slo25.c create mode 100644 ops/sl/slo26.c create mode 100644 ops/sl/slo27.c create mode 100644 ops/sl/slo28.c create mode 100644 ops/sl/slo29.c create mode 100644 ops/sl/slo3.c create mode 100644 ops/sl/slo30.c create mode 100644 ops/sl/slo31.c create mode 100644 ops/sl/slo32.c create mode 100644 ops/sl/slo33.c create mode 100644 ops/sl/slo34.c create mode 100644 ops/sl/slo35.c create mode 100644 ops/sl/slo36.c create mode 100644 ops/sl/slo37.c create mode 100644 ops/sl/slo38.c create mode 100644 ops/sl/slo39.c create mode 100644 ops/sl/slo4.c create mode 100644 ops/sl/slo40.c create mode 100644 ops/sl/slo41.c create mode 100644 ops/sl/slo42.c create mode 100644 ops/sl/slo43.c create mode 100644 ops/sl/slo44.c create mode 100644 ops/sl/slo45.c create mode 100644 ops/sl/slo46.c create mode 100644 ops/sl/slo47.c create mode 100644 ops/sl/slo48.c create mode 100644 ops/sl/slo49.c create mode 100644 ops/sl/slo5.c create mode 100644 ops/sl/slo50.c create mode 100644 ops/sl/slo51.c create mode 100644 ops/sl/slo52.c create mode 100644 ops/sl/slo53.c create mode 100644 ops/sl/slo54.c create mode 100644 ops/sl/slo55.c create mode 100644 ops/sl/slo56.c create mode 100644 ops/sl/slo57.c create mode 100644 ops/sl/slo58.c create mode 100644 ops/sl/slo59.c create mode 100644 ops/sl/slo6.c create mode 100644 ops/sl/slo60.c create mode 100644 ops/sl/slo61.c create mode 100644 ops/sl/slo62.c create mode 100644 ops/sl/slo63.c create mode 100644 ops/sl/slo7.c create mode 100644 ops/sl/slo8.c create mode 100644 ops/sl/slo9.c create mode 100644 ops/sl/slx0.c create mode 100644 ops/sl/slx1.c create mode 100644 ops/sl/slx10.c create mode 100644 ops/sl/slx11.c create mode 100644 ops/sl/slx12.c create mode 100644 ops/sl/slx13.c create mode 100644 ops/sl/slx14.c create mode 100644 ops/sl/slx15.c create mode 100644 ops/sl/slx16.c create mode 100644 ops/sl/slx17.c create mode 100644 ops/sl/slx18.c create mode 100644 ops/sl/slx19.c create mode 100644 ops/sl/slx2.c create mode 100644 ops/sl/slx20.c create mode 100644 ops/sl/slx21.c create mode 100644 ops/sl/slx22.c create mode 100644 ops/sl/slx23.c create mode 100644 ops/sl/slx24.c create mode 100644 ops/sl/slx25.c create mode 100644 ops/sl/slx26.c create mode 100644 ops/sl/slx27.c create mode 100644 ops/sl/slx28.c create mode 100644 ops/sl/slx29.c create mode 100644 ops/sl/slx3.c create mode 100644 ops/sl/slx30.c create mode 100644 ops/sl/slx31.c create mode 100644 ops/sl/slx32.c create mode 100644 ops/sl/slx33.c create mode 100644 ops/sl/slx34.c create mode 100644 ops/sl/slx35.c create mode 100644 ops/sl/slx36.c create mode 100644 ops/sl/slx37.c create mode 100644 ops/sl/slx38.c create mode 100644 ops/sl/slx39.c create mode 100644 ops/sl/slx4.c create mode 100644 ops/sl/slx40.c create mode 100644 ops/sl/slx41.c create mode 100644 ops/sl/slx42.c create mode 100644 ops/sl/slx43.c create mode 100644 ops/sl/slx44.c create mode 100644 ops/sl/slx45.c create mode 100644 ops/sl/slx46.c create mode 100644 ops/sl/slx47.c create mode 100644 ops/sl/slx48.c create mode 100644 ops/sl/slx49.c create mode 100644 ops/sl/slx5.c create mode 100644 ops/sl/slx50.c create mode 100644 ops/sl/slx51.c create mode 100644 ops/sl/slx52.c create mode 100644 ops/sl/slx53.c create mode 100644 ops/sl/slx54.c create mode 100644 ops/sl/slx55.c create mode 100644 ops/sl/slx56.c create mode 100644 ops/sl/slx57.c create mode 100644 ops/sl/slx58.c create mode 100644 ops/sl/slx59.c create mode 100644 ops/sl/slx6.c create mode 100644 ops/sl/slx60.c create mode 100644 ops/sl/slx61.c create mode 100644 ops/sl/slx62.c create mode 100644 ops/sl/slx63.c create mode 100644 ops/sl/slx7.c create mode 100644 ops/sl/slx8.c create mode 100644 ops/sl/slx9.c create mode 100644 ops/sl/sly0.c create mode 100644 ops/sl/sly1.c create mode 100644 ops/sl/sly10.c create mode 100644 ops/sl/sly11.c create mode 100644 ops/sl/sly12.c create mode 100644 ops/sl/sly13.c create mode 100644 ops/sl/sly14.c create mode 100644 ops/sl/sly15.c create mode 100644 ops/sl/sly16.c create mode 100644 ops/sl/sly17.c create mode 100644 ops/sl/sly18.c create mode 100644 ops/sl/sly19.c create mode 100644 ops/sl/sly2.c create mode 100644 ops/sl/sly20.c create mode 100644 ops/sl/sly21.c create mode 100644 ops/sl/sly22.c create mode 100644 ops/sl/sly23.c create mode 100644 ops/sl/sly24.c create mode 100644 ops/sl/sly25.c create mode 100644 ops/sl/sly26.c create mode 100644 ops/sl/sly27.c create mode 100644 ops/sl/sly28.c create mode 100644 ops/sl/sly29.c create mode 100644 ops/sl/sly3.c create mode 100644 ops/sl/sly30.c create mode 100644 ops/sl/sly31.c create mode 100644 ops/sl/sly32.c create mode 100644 ops/sl/sly33.c create mode 100644 ops/sl/sly34.c create mode 100644 ops/sl/sly35.c create mode 100644 ops/sl/sly36.c create mode 100644 ops/sl/sly37.c create mode 100644 ops/sl/sly38.c create mode 100644 ops/sl/sly39.c create mode 100644 ops/sl/sly4.c create mode 100644 ops/sl/sly40.c create mode 100644 ops/sl/sly41.c create mode 100644 ops/sl/sly42.c create mode 100644 ops/sl/sly43.c create mode 100644 ops/sl/sly44.c create mode 100644 ops/sl/sly45.c create mode 100644 ops/sl/sly46.c create mode 100644 ops/sl/sly47.c create mode 100644 ops/sl/sly48.c create mode 100644 ops/sl/sly49.c create mode 100644 ops/sl/sly5.c create mode 100644 ops/sl/sly50.c create mode 100644 ops/sl/sly51.c create mode 100644 ops/sl/sly52.c create mode 100644 ops/sl/sly53.c create mode 100644 ops/sl/sly54.c create mode 100644 ops/sl/sly55.c create mode 100644 ops/sl/sly56.c create mode 100644 ops/sl/sly57.c create mode 100644 ops/sl/sly58.c create mode 100644 ops/sl/sly59.c create mode 100644 ops/sl/sly6.c create mode 100644 ops/sl/sly60.c create mode 100644 ops/sl/sly61.c create mode 100644 ops/sl/sly62.c create mode 100644 ops/sl/sly63.c create mode 100644 ops/sl/sly7.c create mode 100644 ops/sl/sly8.c create mode 100644 ops/sl/sly9.c create mode 100644 ops/sl/source.mk create mode 100644 ops/source.mk create mode 100755 ops/sr/gen_sr.sh create mode 100644 ops/sr/source.mk create mode 100644 ops/sr/sra0.c create mode 100644 ops/sr/sra1.c create mode 100644 ops/sr/sra10.c create mode 100644 ops/sr/sra11.c create mode 100644 ops/sr/sra12.c create mode 100644 ops/sr/sra13.c create mode 100644 ops/sr/sra14.c create mode 100644 ops/sr/sra15.c create mode 100644 ops/sr/sra16.c create mode 100644 ops/sr/sra17.c create mode 100644 ops/sr/sra18.c create mode 100644 ops/sr/sra19.c create mode 100644 ops/sr/sra2.c create mode 100644 ops/sr/sra20.c create mode 100644 ops/sr/sra21.c create mode 100644 ops/sr/sra22.c create mode 100644 ops/sr/sra23.c create mode 100644 ops/sr/sra24.c create mode 100644 ops/sr/sra25.c create mode 100644 ops/sr/sra26.c create mode 100644 ops/sr/sra27.c create mode 100644 ops/sr/sra28.c create mode 100644 ops/sr/sra29.c create mode 100644 ops/sr/sra3.c create mode 100644 ops/sr/sra30.c create mode 100644 ops/sr/sra31.c create mode 100644 ops/sr/sra32.c create mode 100644 ops/sr/sra33.c create mode 100644 ops/sr/sra34.c create mode 100644 ops/sr/sra35.c create mode 100644 ops/sr/sra36.c create mode 100644 ops/sr/sra37.c create mode 100644 ops/sr/sra38.c create mode 100644 ops/sr/sra39.c create mode 100644 ops/sr/sra4.c create mode 100644 ops/sr/sra40.c create mode 100644 ops/sr/sra41.c create mode 100644 ops/sr/sra42.c create mode 100644 ops/sr/sra43.c create mode 100644 ops/sr/sra44.c create mode 100644 ops/sr/sra45.c create mode 100644 ops/sr/sra46.c create mode 100644 ops/sr/sra47.c create mode 100644 ops/sr/sra48.c create mode 100644 ops/sr/sra49.c create mode 100644 ops/sr/sra5.c create mode 100644 ops/sr/sra50.c create mode 100644 ops/sr/sra51.c create mode 100644 ops/sr/sra52.c create mode 100644 ops/sr/sra53.c create mode 100644 ops/sr/sra54.c create mode 100644 ops/sr/sra55.c create mode 100644 ops/sr/sra56.c create mode 100644 ops/sr/sra57.c create mode 100644 ops/sr/sra58.c create mode 100644 ops/sr/sra59.c create mode 100644 ops/sr/sra6.c create mode 100644 ops/sr/sra60.c create mode 100644 ops/sr/sra61.c create mode 100644 ops/sr/sra62.c create mode 100644 ops/sr/sra63.c create mode 100644 ops/sr/sra7.c create mode 100644 ops/sr/sra8.c create mode 100644 ops/sr/sra9.c create mode 100644 ops/sr/sro0.c create mode 100644 ops/sr/sro1.c create mode 100644 ops/sr/sro10.c create mode 100644 ops/sr/sro11.c create mode 100644 ops/sr/sro12.c create mode 100644 ops/sr/sro13.c create mode 100644 ops/sr/sro14.c create mode 100644 ops/sr/sro15.c create mode 100644 ops/sr/sro16.c create mode 100644 ops/sr/sro17.c create mode 100644 ops/sr/sro18.c create mode 100644 ops/sr/sro19.c create mode 100644 ops/sr/sro2.c create mode 100644 ops/sr/sro20.c create mode 100644 ops/sr/sro21.c create mode 100644 ops/sr/sro22.c create mode 100644 ops/sr/sro23.c create mode 100644 ops/sr/sro24.c create mode 100644 ops/sr/sro25.c create mode 100644 ops/sr/sro26.c create mode 100644 ops/sr/sro27.c create mode 100644 ops/sr/sro28.c create mode 100644 ops/sr/sro29.c create mode 100644 ops/sr/sro3.c create mode 100644 ops/sr/sro30.c create mode 100644 ops/sr/sro31.c create mode 100644 ops/sr/sro32.c create mode 100644 ops/sr/sro33.c create mode 100644 ops/sr/sro34.c create mode 100644 ops/sr/sro35.c create mode 100644 ops/sr/sro36.c create mode 100644 ops/sr/sro37.c create mode 100644 ops/sr/sro38.c create mode 100644 ops/sr/sro39.c create mode 100644 ops/sr/sro4.c create mode 100644 ops/sr/sro40.c create mode 100644 ops/sr/sro41.c create mode 100644 ops/sr/sro42.c create mode 100644 ops/sr/sro43.c create mode 100644 ops/sr/sro44.c create mode 100644 ops/sr/sro45.c create mode 100644 ops/sr/sro46.c create mode 100644 ops/sr/sro47.c create mode 100644 ops/sr/sro48.c create mode 100644 ops/sr/sro49.c create mode 100644 ops/sr/sro5.c create mode 100644 ops/sr/sro50.c create mode 100644 ops/sr/sro51.c create mode 100644 ops/sr/sro52.c create mode 100644 ops/sr/sro53.c create mode 100644 ops/sr/sro54.c create mode 100644 ops/sr/sro55.c create mode 100644 ops/sr/sro56.c create mode 100644 ops/sr/sro57.c create mode 100644 ops/sr/sro58.c create mode 100644 ops/sr/sro59.c create mode 100644 ops/sr/sro6.c create mode 100644 ops/sr/sro60.c create mode 100644 ops/sr/sro61.c create mode 100644 ops/sr/sro62.c create mode 100644 ops/sr/sro63.c create mode 100644 ops/sr/sro7.c create mode 100644 ops/sr/sro8.c create mode 100644 ops/sr/sro9.c create mode 100644 ops/sr/srx0.c create mode 100644 ops/sr/srx1.c create mode 100644 ops/sr/srx10.c create mode 100644 ops/sr/srx11.c create mode 100644 ops/sr/srx12.c create mode 100644 ops/sr/srx13.c create mode 100644 ops/sr/srx14.c create mode 100644 ops/sr/srx15.c create mode 100644 ops/sr/srx16.c create mode 100644 ops/sr/srx17.c create mode 100644 ops/sr/srx18.c create mode 100644 ops/sr/srx19.c create mode 100644 ops/sr/srx2.c create mode 100644 ops/sr/srx20.c create mode 100644 ops/sr/srx21.c create mode 100644 ops/sr/srx22.c create mode 100644 ops/sr/srx23.c create mode 100644 ops/sr/srx24.c create mode 100644 ops/sr/srx25.c create mode 100644 ops/sr/srx26.c create mode 100644 ops/sr/srx27.c create mode 100644 ops/sr/srx28.c create mode 100644 ops/sr/srx29.c create mode 100644 ops/sr/srx3.c create mode 100644 ops/sr/srx30.c create mode 100644 ops/sr/srx31.c create mode 100644 ops/sr/srx32.c create mode 100644 ops/sr/srx33.c create mode 100644 ops/sr/srx34.c create mode 100644 ops/sr/srx35.c create mode 100644 ops/sr/srx36.c create mode 100644 ops/sr/srx37.c create mode 100644 ops/sr/srx38.c create mode 100644 ops/sr/srx39.c create mode 100644 ops/sr/srx4.c create mode 100644 ops/sr/srx40.c create mode 100644 ops/sr/srx41.c create mode 100644 ops/sr/srx42.c create mode 100644 ops/sr/srx43.c create mode 100644 ops/sr/srx44.c create mode 100644 ops/sr/srx45.c create mode 100644 ops/sr/srx46.c create mode 100644 ops/sr/srx47.c create mode 100644 ops/sr/srx48.c create mode 100644 ops/sr/srx49.c create mode 100644 ops/sr/srx5.c create mode 100644 ops/sr/srx50.c create mode 100644 ops/sr/srx51.c create mode 100644 ops/sr/srx52.c create mode 100644 ops/sr/srx53.c create mode 100644 ops/sr/srx54.c create mode 100644 ops/sr/srx55.c create mode 100644 ops/sr/srx56.c create mode 100644 ops/sr/srx57.c create mode 100644 ops/sr/srx58.c create mode 100644 ops/sr/srx59.c create mode 100644 ops/sr/srx6.c create mode 100644 ops/sr/srx60.c create mode 100644 ops/sr/srx61.c create mode 100644 ops/sr/srx62.c create mode 100644 ops/sr/srx63.c create mode 100644 ops/sr/srx7.c create mode 100644 ops/sr/srx8.c create mode 100644 ops/sr/srx9.c create mode 100644 ops/sr/sry0.c create mode 100644 ops/sr/sry1.c create mode 100644 ops/sr/sry10.c create mode 100644 ops/sr/sry11.c create mode 100644 ops/sr/sry12.c create mode 100644 ops/sr/sry13.c create mode 100644 ops/sr/sry14.c create mode 100644 ops/sr/sry15.c create mode 100644 ops/sr/sry16.c create mode 100644 ops/sr/sry17.c create mode 100644 ops/sr/sry18.c create mode 100644 ops/sr/sry19.c create mode 100644 ops/sr/sry2.c create mode 100644 ops/sr/sry20.c create mode 100644 ops/sr/sry21.c create mode 100644 ops/sr/sry22.c create mode 100644 ops/sr/sry23.c create mode 100644 ops/sr/sry24.c create mode 100644 ops/sr/sry25.c create mode 100644 ops/sr/sry26.c create mode 100644 ops/sr/sry27.c create mode 100644 ops/sr/sry28.c create mode 100644 ops/sr/sry29.c create mode 100644 ops/sr/sry3.c create mode 100644 ops/sr/sry30.c create mode 100644 ops/sr/sry31.c create mode 100644 ops/sr/sry32.c create mode 100644 ops/sr/sry33.c create mode 100644 ops/sr/sry34.c create mode 100644 ops/sr/sry35.c create mode 100644 ops/sr/sry36.c create mode 100644 ops/sr/sry37.c create mode 100644 ops/sr/sry38.c create mode 100644 ops/sr/sry39.c create mode 100644 ops/sr/sry4.c create mode 100644 ops/sr/sry40.c create mode 100644 ops/sr/sry41.c create mode 100644 ops/sr/sry42.c create mode 100644 ops/sr/sry43.c create mode 100644 ops/sr/sry44.c create mode 100644 ops/sr/sry45.c create mode 100644 ops/sr/sry46.c create mode 100644 ops/sr/sry47.c create mode 100644 ops/sr/sry48.c create mode 100644 ops/sr/sry49.c create mode 100644 ops/sr/sry5.c create mode 100644 ops/sr/sry50.c create mode 100644 ops/sr/sry51.c create mode 100644 ops/sr/sry52.c create mode 100644 ops/sr/sry53.c create mode 100644 ops/sr/sry54.c create mode 100644 ops/sr/sry55.c create mode 100644 ops/sr/sry56.c create mode 100644 ops/sr/sry57.c create mode 100644 ops/sr/sry58.c create mode 100644 ops/sr/sry59.c create mode 100644 ops/sr/sry6.c create mode 100644 ops/sr/sry60.c create mode 100644 ops/sr/sry61.c create mode 100644 ops/sr/sry62.c create mode 100644 ops/sr/sry63.c create mode 100644 ops/sr/sry7.c create mode 100644 ops/sr/sry8.c create mode 100644 ops/sr/sry9.c create mode 100644 ops/sub.c create mode 100644 ops/subxo.c create mode 100644 ops/subyo.c create mode 100755 scripts/gen-deps create mode 100755 scripts/gen-ops create mode 100755 scripts/license create mode 100755 scripts/warn-undocumented create mode 100644 src/copyjit.c create mode 100644 src/copyjit.h create mode 100644 src/main.c create mode 100644 src/source.mk create mode 100644 uncrustify.conf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3d508cd --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +deps.mk +docs/output +lib/gen/* +lib/empty.bin +lib/empty.o +lib/prune +lib/*.d +build +copyjit +!include/copyjit +!lib/gen/.gitkeep diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..213b4b9 --- /dev/null +++ b/Makefile @@ -0,0 +1,76 @@ +DO != echo -n > deps.mk + +DEBUGFLAGS != [ $(RELEASE) ] && echo "-flto=auto -O2 -DNODEBUG" || echo "-O0 -g -DDEBUG" +CFLAGS = -Wall -Wextra +DEPFLAGS = -MT $@ -MMD -MP -MF $@.d +LINTFLAGS = -fsyntax-only +INCLUDEFLAGS = -Iinclude +COMPILEFLAGS = +LINKFLAGS = + +all: copyjit + +# default values +CROSS_COMPILE ?= + +# common programs +CC = gcc +OBJCOPY = objcopy + +SOURCES := +OP_SOURCES := + +include ops/source.mk +include src/source.mk + +COMPILE = $(CROSS_COMPILE)$(CC) $(DEBUGFLAGS)\ + $(CFLAGS) $(DEPFLAGS) $(COMPILEFLAGS) $(INCLUDEFLAGS) + +OP_COMPILE = $(CROSS_COMPILE)$(CC) \ + -Wall -Wextra -O3 \ + -fno-schedule-insns -fno-schedule-insns2 + +LINT = $(COMPILE) $(LINTFLAGS) + +OBJS != ./scripts/gen-deps --sources "$(SOURCES)" +OPS != ./scripts/gen-ops "$(OP_SOURCES)" + +include deps.mk +include lib/source.mk + +.PHONY: lint +lint: $(OBJS:.o=.o.l) + +.PHONY: format +format: + @find src ops lib -iname '*.[ch]' |\ + xargs -n 10 -P 0 uncrustify -c uncrustify.conf --no-backup -F - + +.PHONY: license +license: + @find . -iname '*.[ch]' |\ + xargs -n 10 -P 0 ./scripts/license + +.PHONY: docs +docs: + @./scripts/warn-undocumented + @doxygen docs/doxygen.conf + +.PHONY: check +check: ek + ./tests/check.sh + +copyjit: $(OBJS) + $(COMPILE) $(OBJS) -o $@ + +# could probably make this a bit prettier +.PHONY: clean +clean: + @$(RM) -r build copyjit lib/gen/* lib/*.o lib/*.bin lib/*.d lib/prune deps.mk + +.PHONY: clean_docs +clean_docs: + @$(RM) -r docs/output + +.PHONY: clean_all +clean_all: clean clean_docs diff --git a/README.md b/README.md new file mode 100644 index 0000000..de187d6 --- /dev/null +++ b/README.md @@ -0,0 +1,20 @@ +Idea: try copy-and-patch, but without patching to make it 'easier' to implement. + +Essentially, build a tool that generates a bunch of operations (one per file?) +all with identical signatures, then maybe generate binary objdump of each procedure +and drop the last setup for jump (generate noop and filter all matching bytes +from other procedures?) and finally generate a header file or something with all +the function bytes. Then it should be possible to just copy them into place? + +See example what.c, which generates a noop. This noop is extracted +with `objcopy -j .text -Obinary what.o` into `what.bin` which is essentially +the 'jump to next bit' that we want to remove. + +(note that deleting the final call stuff is just opportunistic, and might not + always be possible?) +(add -fno-schedule-insns -fno-schedule-insns2 for increased chance of generating + identical epilogues) + +Additionally, it might be possible to write some data into the execution stream +with inline assembly after the jump, though that feels so hacky that I might +skip it for now... diff --git a/docs/doxygen-kmi.css b/docs/doxygen-kmi.css new file mode 100644 index 0000000..39d144e --- /dev/null +++ b/docs/doxygen-kmi.css @@ -0,0 +1,2137 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2022 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + */ + +html { + /* primary theme color. This will affect the entire websites color scheme: links, arrows, labels, ... */ + --primary-color: #1779c4; + --primary-dark-color: #335c80; + --primary-light-color: #70b1e9; + + /* page base colors */ + --page-background-color: white; + --page-foreground-color: #2f4153; + --page-secondary-foreground-color: #637485; + + /* color for all separators on the website: hr, borders, ... */ + --separator-color: #dedede; + + /* border radius for all rounded components. Will affect many components, like dropdowns, memitems, codeblocks, ... */ + --border-radius-large: 8px; + --border-radius-small: 4px; + --border-radius-medium: 6px; + + /* default spacings. Most compontest reference these values for spacing, to provide uniform spacing on the page. */ + --spacing-small: 5px; + --spacing-medium: 10px; + --spacing-large: 16px; + + /* default box shadow used for raising an element above the normal content. Used in dropdowns, Searchresult, ... */ + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.075); + + --odd-color: rgba(0,0,0,.028); + + /* font-families. will affect all text on the website + * font-family: the normal font for text, headlines, menus + * font-family-monospace: used for preformatted text in memtitle, code, fragments + */ +--font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif; +--font-family-monospace: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; + +/* font sizes */ +--page-font-size: 15.6px; +--navigation-font-size: 14.4px; +--code-font-size: 14px; /* affects code, fragment */ +--title-font-size: 22px; + +/* content text properties. These only affect the page content, not the navigation or any other ui elements */ +--content-line-height: 27px; +/* The content is centered and constraint in it's width. To make the content fill the whole page, set the variable to auto.*/ +--content-maxwidth: 1000px; + +/* colors for various content boxes: @warning, @note, @deprecated @bug */ +--warning-color: #f8d1cc; +--warning-color-dark: #b61825; +--warning-color-darker: #75070f; +--note-color: #faf3d8; +--note-color-dark: #f3a600; +--note-color-darker: #5f4204; +--todo-color: #e4f3ff; +--todo-color-dark: #1879C4; +--todo-color-darker: #274a5c; +--deprecated-color: #ecf0f3; +--deprecated-color-dark: #5b6269; +--deprecated-color-darker: #43454a; +--bug-color: #e4dafd; +--bug-color-dark: #5b2bdd; +--bug-color-darker: #2a0d72; +--invariant-color: #d8f1e3; +--invariant-color-dark: #44b86f; +--invariant-color-darker: #265532; + +/* blockquote colors */ +--blockquote-background: #f8f9fa; +--blockquote-foreground: #636568; + +/* table colors */ +--tablehead-background: #f1f1f1; +--tablehead-foreground: var(--page-foreground-color); + +/* menu-display: block | none + * Visibility of the top navigation on screens >= 768px. On smaller screen the menu is always visible. + * `GENERATE_TREEVIEW` MUST be enabled! + */ +--menu-display: block; + +--menu-focus-foreground: var(--page-background-color); +--menu-focus-background: var(--primary-color); +--menu-selected-background: rgba(0,0,0,.05); + + +--header-background: var(--page-background-color); +--header-foreground: var(--page-foreground-color); + +/* searchbar colors */ +--searchbar-background: var(--side-nav-background); +--searchbar-foreground: var(--page-foreground-color); + +/* searchbar size + * (`searchbar-width` is only applied on screens >= 768px. + * on smaller screens the searchbar will always fill the entire screen width) */ +--searchbar-height: 33px; +--searchbar-width: 210px; +--searchbar-border-radius: var(--searchbar-height); + +/* code block colors */ +--code-background: #f5f5f5; +--code-foreground: var(--page-foreground-color); + +/* fragment colors */ +--fragment-background: #F8F9FA; +--fragment-foreground: #37474F; +--fragment-keyword: #bb6bb2; +--fragment-keywordtype: #8258b3; +--fragment-keywordflow: #d67c3b; +--fragment-token: #438a59; +--fragment-comment: #969696; +--fragment-link: #5383d6; +--fragment-preprocessor: #46aaa5; +--fragment-linenumber-color: #797979; +--fragment-linenumber-background: #f4f4f5; +--fragment-linenumber-border: #e3e5e7; +--fragment-lineheight: 20px; + +/* sidebar navigation (treeview) colors */ +--side-nav-background: #fbfbfb; +--side-nav-foreground: var(--page-foreground-color); +--side-nav-arrow-opacity: 0; +--side-nav-arrow-hover-opacity: 0.9; + +--toc-background: var(--side-nav-background); +--toc-foreground: var(--side-nav-foreground); + +/* height of an item in any tree / collapsable table */ +--tree-item-height: 30px; + +--memname-font-size: var(--code-font-size); +--memtitle-font-size: 18px; + +--webkit-scrollbar-size: 7px; +--webkit-scrollbar-padding: 4px; +--webkit-scrollbar-color: var(--separator-color); +} + +@media screen and (max-width: 767px) { + html { + --page-font-size: 16px; + --navigation-font-size: 16px; + --code-font-size: 15px; /* affects code, fragment */ + --title-font-size: 22px; + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.35); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #2e1917; + --warning-color-dark: #ad2617; + --warning-color-darker: #f5b1aa; + --note-color: #3b2e04; + --note-color-dark: #f1b602; + --note-color-darker: #ceb670; + --todo-color: #163750; + --todo-color-dark: #1982D2; + --todo-color-darker: #dcf0fa; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2a2536; + --bug-color-dark: #7661b3; + --bug-color-darker: #ae9ed6; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; + } +} + +/* dark mode variables are defined twice, to support both the dark-mode without and with doxygen-awesome-darkmode-toggle.js */ +html.dark-mode { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.30); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #2e1917; + --warning-color-dark: #ad2617; + --warning-color-darker: #f5b1aa; + --note-color: #3b2e04; + --note-color-dark: #f1b602; + --note-color-darker: #ceb670; + --todo-color: #163750; + --todo-color-dark: #1982D2; + --todo-color-darker: #dcf0fa; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2a2536; + --bug-color-dark: #7661b3; + --bug-color-darker: #ae9ed6; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; +} + +body { + color: var(--page-foreground-color); + background-color: var(--page-background-color); + font-size: var(--page-font-size); +} + +body, table, div, p, dl, #nav-tree .label, .title, .sm-dox a, .sm-dox a:hover, .sm-dox a:focus, #projectname, .SelectItem, #MSearchField, .navpath li.navelem a, .navpath li.navelem a:hover { + font-family: var(--font-family); +} + +h1, h2, h3, h4, h5 { + margin-top: .9em; + font-weight: 600; + line-height: initial; +} + +p, div, table, dl { + font-size: var(--page-font-size); +} + +a:link, a:visited, a:hover, a:focus, a:active { + color: var(--primary-color) !important; + font-weight: 500; +} + +a.anchor { + scroll-margin-top: var(--spacing-large); +} + +/* +Title and top navigation + */ + +#top { + background: var(--header-background); + border-bottom: 1px solid var(--separator-color); +} + +@media screen and (min-width: 768px) { + #top { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; + } +} + +#main-nav { + flex-grow: 5; + padding: var(--spacing-small) var(--spacing-medium); +} + +#titlearea { + width: auto; + padding: var(--spacing-medium) var(--spacing-large); + background: none; + color: var(--header-foreground); + border-bottom: none; +} + +@media screen and (max-width: 767px) { + #titlearea { + padding-bottom: var(--spacing-small); + } +} + +#titlearea table tbody tr { + height: auto !important; +} + +#projectname { + font-size: var(--title-font-size); + font-weight: 600; +} + +#projectnumber { + font-family: inherit; + font-size: 60%; +} + +#projectbrief { + font-family: inherit; + font-size: 80%; +} + +#projectlogo { + vertical-align: middle; +} + +#projectlogo img { + max-height: calc(var(--title-font-size) * 2); + margin-right: var(--spacing-small); +} + +.sm-dox, .tabs, .tabs2, .tabs3 { + background: none; + padding: 0; +} + +.tabs, .tabs2, .tabs3 { + border-bottom: 1px solid var(--separator-color); + margin-bottom: -1px; +} + +@media screen and (max-width: 767px) { + .sm-dox a span.sub-arrow { + background: var(--code-background); + } + + #main-menu a.has-submenu span.sub-arrow { + color: var(--page-secondary-foreground-color); + border-radius: var(--border-radius-medium); + } + + #main-menu a.has-submenu:hover span.sub-arrow { + color: var(--page-foreground-color); + } +} + +@media screen and (min-width: 768px) { + .sm-dox li, .tablist li { + display: var(--menu-display); + } + + .sm-dox a span.sub-arrow { + border-color: var(--header-foreground) transparent transparent transparent; + } + + .sm-dox a:hover span.sub-arrow { + border-color: var(--menu-focus-foreground) transparent transparent transparent; + } + + .sm-dox ul a span.sub-arrow { + border-color: transparent transparent transparent var(--page-foreground-color); + } + + .sm-dox ul a:hover span.sub-arrow { + border-color: transparent transparent transparent var(--menu-focus-foreground); + } +} + +.sm-dox ul { + background: var(--page-background-color); + box-shadow: var(--box-shadow); + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium) !important; + padding: var(--spacing-small); + animation: ease-out 150ms slideInMenu; +} + +@keyframes slideInMenu { + from { + opacity: 0; + transform: translate(0px, -2px); + } + + to { + opacity: 1; + transform: translate(0px, 0px); + } +} + +.sm-dox ul a { + color: var(--page-foreground-color) !important; + background: var(--page-background-color); + font-size: var(--navigation-font-size); +} + +.sm-dox>li>ul:after { + border-bottom-color: var(--page-background-color) !important; +} + +.sm-dox>li>ul:before { + border-bottom-color: var(--separator-color) !important; +} + +.sm-dox ul a:hover, .sm-dox ul a:active, .sm-dox ul a:focus { + font-size: var(--navigation-font-size) !important; + color: var(--menu-focus-foreground) !important; + text-shadow: none; + background-color: var(--menu-focus-background); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a, .sm-dox a:focus, .tablist li, .tablist li a, .tablist li.current a { + text-shadow: none; + background: transparent; + background-image: none !important; + color: var(--header-foreground) !important; + font-weight: normal; + font-size: var(--navigation-font-size); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a:focus { + outline: auto; +} + +.sm-dox a:hover, .sm-dox a:active, .tablist li a:hover { + text-shadow: none; + font-weight: normal; + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; + border-radius: var(--border-radius-small) !important; + font-size: var(--navigation-font-size); +} + +.tablist li.current { + border-radius: var(--border-radius-small); + background: var(--menu-selected-background); +} + +.tablist li { + margin: var(--spacing-small) 0 var(--spacing-small) var(--spacing-small); +} + +.tablist a { + padding: 0 var(--spacing-large); +} + + +/* +Search box + */ + +#MSearchBox { + height: var(--searchbar-height); + background: var(--searchbar-background); + border-radius: var(--searchbar-border-radius); + border: 1px solid var(--separator-color); + overflow: hidden; + width: var(--searchbar-width); + position: relative; + box-shadow: none; + display: block; + margin-top: 0; +} + +.left #MSearchSelect { + left: 0; + user-select: none; + padding-left: 8px; +} + +.left #MSearchSelect[src$=".png"] { + padding-left: 0 +} + +.SelectionMark { + user-select: none; +} + +.tabs .left #MSearchSelect { + padding-left: 0; +} + +.tabs #MSearchBox { + position: absolute; + right: var(--spacing-medium); +} + +@media screen and (max-width: 767px) { + .tabs #MSearchBox { + position: relative; + right: 0; + margin-left: var(--spacing-medium); + margin-top: 0; + } +} + +#MSearchSelectWindow, #MSearchResultsWindow { + z-index: 9999; +} + +#MSearchBox.MSearchBoxActive { + border-color: var(--primary-color); + box-shadow: inset 0 0 0 1px var(--primary-color); +} + +#main-menu > li:last-child { + margin-right: 0; +} + +@media screen and (max-width: 767px) { + #main-menu > li:last-child { + height: 50px; + } +} + +#MSearchField { + font-size: var(--navigation-font-size); + height: calc(var(--searchbar-height) - 2px); + background: transparent; + width: calc(var(--searchbar-width) - 64px); +} + +.MSearchBoxActive #MSearchField { + color: var(--searchbar-foreground); +} + +#MSearchSelect { + top: calc(calc(var(--searchbar-height) / 2) - 11px); +} + +#MSearchBox span.left, #MSearchBox span.right { + background: none; + background-image: none; +} + +#MSearchBox span.right { + padding-top: calc(calc(var(--searchbar-height) / 2) - 12px); + position: absolute; + right: var(--spacing-small); +} + +.tabs #MSearchBox span.right { + top: calc(calc(var(--searchbar-height) / 2) - 12px); +} + +@keyframes slideInSearchResults { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } +} + +#MSearchResultsWindow { + left: auto !important; + right: var(--spacing-medium); + border-radius: var(--border-radius-large); + border: 1px solid var(--separator-color); + transform: translate(0, 20px); + box-shadow: var(--box-shadow); + animation: ease-out 280ms slideInSearchResults; + background: var(--page-background-color); +} + +iframe#MSearchResults { + margin: 4px; +} + +iframe { + color-scheme: normal; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) iframe#MSearchResults { + filter: invert() hue-rotate(180deg); + } +} + +html.dark-mode iframe#MSearchResults { + filter: invert() hue-rotate(180deg); +} + +#MSearchSelectWindow { + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + box-shadow: var(--box-shadow); + background: var(--page-background-color); + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); +} + +#MSearchSelectWindow a.SelectItem { + font-size: var(--navigation-font-size); + line-height: var(--content-line-height); + margin: 0 var(--spacing-small); + border-radius: var(--border-radius-small); + color: var(--page-foreground-color) !important; + font-weight: normal; +} + +#MSearchSelectWindow a.SelectItem:hover { + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; +} + +@media screen and (max-width: 767px) { + #MSearchBox { + margin-top: var(--spacing-medium); + margin-bottom: var(--spacing-medium); + width: calc(100vw - 30px); + } + + #main-menu > li:last-child { + float: none !important; + } + + #MSearchField { + width: calc(100vw - 110px); + } + + @keyframes slideInSearchResultsMobile { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } + } + + #MSearchResultsWindow { + left: var(--spacing-medium) !important; + right: var(--spacing-medium); + overflow: auto; + transform: translate(0, 20px); + animation: ease-out 280ms slideInSearchResultsMobile; + } + + /* + * Overwrites for fixing the searchbox on mobile in doxygen 1.9.2 + */ +label.main-menu-btn ~ #searchBoxPos1 { + top: 3px !important; + right: 6px !important; + left: 45px; + display: flex; +} + +label.main-menu-btn ~ #searchBoxPos1 > #MSearchBox { + margin-top: 0; + margin-bottom: 0; + flex-grow: 2; + float: left; +} +} + +/* +Tree view + */ + +#side-nav { + padding: 0 !important; + background: var(--side-nav-background); +} + +@media screen and (max-width: 767px) { + #side-nav { + display: none; + } + + #doc-content { + margin-left: 0 !important; + } +} + +#nav-tree { + background: transparent; +} + +#nav-tree .label { + font-size: var(--navigation-font-size); +} + +#nav-tree .item { + height: var(--tree-item-height); + line-height: var(--tree-item-height); +} + +#nav-sync { + bottom: 12px; + right: 12px; + top: auto !important; + user-select: none; +} + +#nav-tree .selected { + text-shadow: none; + background-image: none; + background-color: transparent; + position: relative; +} + +#nav-tree .selected::after { + content: ""; + position: absolute; + top: 1px; + bottom: 1px; + left: 0; + width: 4px; + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + background: var(--primary-color); +} + + +#nav-tree a { + color: var(--side-nav-foreground) !important; + font-weight: normal; +} + +#nav-tree a:focus { + outline-style: auto; +} + +#nav-tree .arrow { + opacity: var(--side-nav-arrow-opacity); +} + +.arrow { + color: inherit; + cursor: pointer; + font-size: 45%; + vertical-align: middle; + margin-right: 2px; + font-family: serif; + height: auto; + text-align: right; +} + +#nav-tree div.item:hover .arrow, #nav-tree a:focus .arrow { + opacity: var(--side-nav-arrow-hover-opacity); +} + +#nav-tree .selected a { + color: var(--primary-color) !important; + font-weight: bolder; + font-weight: 600; +} + +.ui-resizable-e { + background: var(--separator-color); + width: 1px; +} + +/* +Contents + */ + +div.header { + border-bottom: 1px solid var(--separator-color); + background-color: var(--page-background-color); + background-image: none; +} + +div.contents, div.header .title, div.header .summary { + max-width: var(--content-maxwidth); +} + +div.contents, div.header .title { + line-height: initial; + margin: calc(var(--spacing-medium) + .2em) auto var(--spacing-medium) auto; +} + +div.header .summary { + margin: var(--spacing-medium) auto 0 auto; +} + +div.headertitle { + padding: 0; +} + +div.header .title { + font-weight: 600; + font-size: 210%; + padding: var(--spacing-medium) var(--spacing-large); + word-break: break-word; +} + +div.header .summary { + width: auto; + display: block; + float: none; + padding: 0 var(--spacing-large); +} + +td.memSeparator { + border-color: var(--separator-color); +} + +span.mlabel { + background: var(--primary-color); + border: none; + padding: 4px 9px; + border-radius: 12px; + margin-right: var(--spacing-medium); +} + +span.mlabel:last-of-type { + margin-right: 2px; +} + +div.contents { + padding: 0 var(--spacing-large); +} + +div.contents p, div.contents li { + line-height: var(--content-line-height); +} + +div.contents div.dyncontent { + margin: var(--spacing-medium) 0; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) div.contents div.dyncontent img, + html:not(.light-mode) div.contents center img, + html:not(.light-mode) div.contents table img, + html:not(.light-mode) div.contents div.dyncontent iframe, + html:not(.light-mode) div.contents center iframe, + html:not(.light-mode) div.contents table iframe { + filter: hue-rotate(180deg) invert(); + } +} + +html.dark-mode div.contents div.dyncontent img, +html.dark-mode div.contents center img, +html.dark-mode div.contents table img, +html.dark-mode div.contents div.dyncontent iframe, +html.dark-mode div.contents center iframe, +html.dark-mode div.contents table iframe { + filter: hue-rotate(180deg) invert(); +} + +h2.groupheader { + border-bottom: 0px; + color: var(--page-foreground-color); + box-shadow: + 100px 0 var(--page-background-color), + -100px 0 var(--page-background-color), + 100px 0.75px var(--separator-color), + -100px 0.75px var(--separator-color), + 500px 0 var(--page-background-color), + -500px 0 var(--page-background-color), + 500px 0.75px var(--separator-color), + -500px 0.75px var(--separator-color), + 1500px 0 var(--page-background-color), + -1500px 0 var(--page-background-color), + 1500px 0.75px var(--separator-color), + -1500px 0.75px var(--separator-color), + 2000px 0 var(--page-background-color), + -2000px 0 var(--page-background-color), + 2000px 0.75px var(--separator-color), + -2000px 0.75px var(--separator-color); +} + +blockquote { + margin: 0 var(--spacing-medium) 0 var(--spacing-medium); + padding: var(--spacing-small) var(--spacing-large); + background: var(--blockquote-background); + color: var(--blockquote-foreground); + border-left: 0; + overflow: visible; + border-radius: var(--border-radius-medium); + overflow: visible; + position: relative; +} + +blockquote::before, blockquote::after { + font-weight: bold; + font-family: serif; + font-size: 360%; + opacity: .15; + position: absolute; +} + +blockquote::before { + content: "“"; + left: -10px; + top: 4px; +} + +blockquote::after { + content: "”"; + right: -8px; + bottom: -25px; +} + +blockquote p { + margin: var(--spacing-small) 0 var(--spacing-medium) 0; +} +.paramname { + font-weight: 600; + color: var(--primary-dark-color); +} + +.paramname > code { + border: 0; +} + +table.params .paramname { + font-weight: 600; + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + padding-right: var(--spacing-small); +} + +.glow { + text-shadow: 0 0 15px var(--primary-light-color) !important; +} + +.alphachar a { + color: var(--page-foreground-color); +} + +/* +Table of Contents + */ + +div.toc { + z-index: 10; + position: relative; + background-color: var(--toc-background); + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + box-shadow: var(--box-shadow); + padding: 0 var(--spacing-large); + margin: 0 0 var(--spacing-medium) var(--spacing-medium); +} + +div.toc h3 { + color: var(--toc-foreground); + font-size: var(--navigation-font-size); + margin: var(--spacing-large) 0; +} + +div.toc li { + font-size: var(--navigation-font-size); + padding: 0; + background: none; +} + +div.toc li:before { + content: '↓'; + font-weight: 800; + font-family: var(--font-family); + margin-right: var(--spacing-small); + color: var(--toc-foreground); + opacity: .4; +} + +div.toc ul li.level1 { + margin: 0; +} + +div.toc ul li.level2, div.toc ul li.level3 { + margin-top: 0; +} + + +@media screen and (max-width: 767px) { + div.toc { + float: none; + width: auto; + margin: 0 0 var(--spacing-medium) 0; + } +} + +/* +Code & Fragments + */ + +code, div.fragment, pre.fragment { + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + overflow: hidden; +} + +code { + display: inline; + background: var(--code-background); + color: var(--code-foreground); + padding: 2px 6px; + word-break: break-word; +} + +div.fragment, pre.fragment { + margin: var(--spacing-medium) 0; + padding: calc(var(--spacing-large) - (var(--spacing-large) / 6)) var(--spacing-large); + background: var(--fragment-background); + color: var(--fragment-foreground); + overflow-x: auto; +} + +@media screen and (max-width: 767px) { + div.fragment, pre.fragment { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-right: 0; + } + + .contents > div.fragment, + .textblock > div.fragment, + .textblock > pre.fragment, + .contents > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + border-radius: 0; + border-left: 0; + } + + .textblock li > .fragment, + .textblock li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + } + + .memdoc li > .fragment, + .memdoc li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + } + + .textblock ul, .memdoc ul { + overflow: initial; + } + + .memdoc > div.fragment, + .memdoc > pre.fragment, + dl dd > div.fragment, + dl dd pre.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > div.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > pre.fragment, + dl dd > .doxygen-awesome-fragment-wrapper > div.fragment, + dl dd .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + border-radius: 0; + border-left: 0; + } +} + +code, code a, pre.fragment, div.fragment, div.fragment .line, div.fragment span, div.fragment .line a, div.fragment .line span { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size) !important; +} + +div.line:after { + margin-right: var(--spacing-medium); +} + +div.fragment .line, pre.fragment { + white-space: pre; + word-wrap: initial; + line-height: var(--fragment-lineheight); +} + +div.fragment span.keyword { + color: var(--fragment-keyword); +} + +div.fragment span.keywordtype { + color: var(--fragment-keywordtype); +} + +div.fragment span.keywordflow { + color: var(--fragment-keywordflow); +} + +div.fragment span.stringliteral { + color: var(--fragment-token) +} + +div.fragment span.comment { + color: var(--fragment-comment); +} + +div.fragment a.code { + color: var(--fragment-link) !important; +} + +div.fragment span.preprocessor { + color: var(--fragment-preprocessor); +} + +div.fragment span.lineno { + display: inline-block; + width: 27px; + border-right: none; + background: var(--fragment-linenumber-background); + color: var(--fragment-linenumber-color); +} + +div.fragment span.lineno a { + background: none; + color: var(--fragment-link) !important; +} + +div.fragment .line:first-child .lineno { + box-shadow: -999999px 0px 0 999999px var(--fragment-linenumber-background), -999998px 0px 0 999999px var(--fragment-linenumber-border); +} + +/* +dl warning, attention, note, deprecated, bug, ... + */ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, dl.invariant, dl.pre, dl.todo, dl.remark { + padding: var(--spacing-medium); + margin: var(--spacing-medium) 0; + color: var(--page-background-color); + overflow: hidden; + margin-left: 0; + border-radius: var(--border-radius-small); +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention { + background: var(--warning-color); + border-left: 8px solid var(--warning-color-dark); + color: var(--warning-color-darker); +} + +dl.warning dt, dl.attention dt { + color: var(--warning-color-dark); +} + +dl.note, dl.remark { + background: var(--note-color); + border-left: 8px solid var(--note-color-dark); + color: var(--note-color-darker); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-dark); +} + +dl.todo { + background: var(--todo-color); + border-left: 8px solid var(--todo-color-dark); + color: var(--todo-color-darker); +} + +dl.todo dt { + color: var(--todo-color-dark); +} + +dl.bug dt a { + color: var(--todo-color-dark) !important; +} + +dl.bug { + background: var(--bug-color); + border-left: 8px solid var(--bug-color-dark); + color: var(--bug-color-darker); +} + +dl.bug dt a { + color: var(--bug-color-dark) !important; +} + +dl.deprecated { + background: var(--deprecated-color); + border-left: 8px solid var(--deprecated-color-dark); + color: var(--deprecated-color-darker); +} + +dl.deprecated dt a { + color: var(--deprecated-color-dark) !important; +} + +dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre { + background: var(--invariant-color); + border-left: 8px solid var(--invariant-color-dark); + color: var(--invariant-color-darker); +} + +dl.invariant dt, dl.pre dt { + color: var(--invariant-color-dark); +} + +/* +memitem + */ + +div.memdoc, div.memproto, h2.memtitle { + box-shadow: none; + background-image: none; + border: none; +} + +div.memdoc { + padding: 0 var(--spacing-medium); + background: var(--page-background-color); +} + +h2.memtitle, div.memitem { + border: 1px solid var(--separator-color); + box-shadow: var(--box-shadow); +} + +h2.memtitle { + box-shadow: 0px var(--spacing-medium) 0 -1px var(--fragment-background), var(--box-shadow); +} + +div.memitem { + transition: none; +} + +div.memproto, h2.memtitle { + background: var(--fragment-background); + text-shadow: none; +} + +h2.memtitle { + font-weight: 500; + font-size: var(--memtitle-font-size); + font-family: var(--font-family-monospace); + border-bottom: none; + border-top-left-radius: var(--border-radius-medium); + border-top-right-radius: var(--border-radius-medium); + word-break: break-all; + position: relative; +} + +h2.memtitle:after { + content: ""; + display: block; + background: var(--fragment-background); + height: var(--spacing-medium); + bottom: calc(0px - var(--spacing-medium)); + left: 0; + right: -14px; + position: absolute; + border-top-right-radius: var(--border-radius-medium); +} + +h2.memtitle > span.permalink { + font-size: inherit; +} + +h2.memtitle > span.permalink > a { + text-decoration: none; + padding-left: 3px; + margin-right: -4px; + user-select: none; + display: inline-block; + margin-top: -6px; +} + +h2.memtitle > span.permalink > a:hover { + color: var(--primary-dark-color) !important; +} + +a:target + h2.memtitle, a:target + h2.memtitle + div.memitem { + border-color: var(--primary-light-color); +} + +div.memitem { + border-top-right-radius: var(--border-radius-medium); + border-bottom-right-radius: var(--border-radius-medium); + border-bottom-left-radius: var(--border-radius-medium); + overflow: hidden; + display: block !important; +} + +div.memdoc { + border-radius: 0; +} + +div.memproto { + border-radius: 0 var(--border-radius-small) 0 0; + overflow: auto; + border-bottom: 1px solid var(--separator-color); + padding: var(--spacing-medium); + margin-bottom: -1px; +} + +div.memtitle { + border-top-right-radius: var(--border-radius-medium); + border-top-left-radius: var(--border-radius-medium); +} + +div.memproto table.memname { + font-family: var(--font-family-monospace); + color: var(--page-foreground-color); + font-size: var(--memname-font-size); +} + +div.memproto div.memtemplate { + font-family: var(--font-family-monospace); + color: var(--primary-dark-color); + font-size: var(--memname-font-size); + margin-left: 2px; +} + +table.mlabels, table.mlabels > tbody { + display: block; +} + +td.mlabels-left { + width: auto; +} + +td.mlabels-right { + margin-top: 3px; + position: sticky; + left: 0; +} + +table.mlabels > tbody > tr:first-child { + display: flex; + justify-content: space-between; + flex-wrap: wrap; +} + +.memname, .memitem span.mlabels { + margin: 0 +} + +/* +reflist + */ + +dl.reflist { + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-medium); + border: 1px solid var(--separator-color); + overflow: hidden; + padding: 0; +} + + +dl.reflist dt, dl.reflist dd { + box-shadow: none; + text-shadow: none; + background-image: none; + border: none; + padding: 12px; +} + + +dl.reflist dt { + font-weight: 500; + border-radius: 0; + background: var(--code-background); + border-bottom: 1px solid var(--separator-color); + color: var(--page-foreground-color) +} + + +dl.reflist dd { + background: none; +} + +/* +Table + */ + +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) { + display: inline-block; + max-width: 100%; +} + +.contents > table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname):not(.classindex) { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); +} + +table.markdownTable, table.fieldtable { + border: none; + margin: var(--spacing-medium) 0; + box-shadow: 0 0 0 1px var(--separator-color); + border-radius: var(--border-radius-small); +} + +table.fieldtable { + width: 100%; +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background: var(--tablehead-background); + color: var(--tablehead-foreground); + font-weight: 600; + font-size: var(--page-font-size); +} + +th.markdownTableHeadLeft:first-child, th.markdownTableHeadRight:first-child, th.markdownTableHeadCenter:first-child, th.markdownTableHeadNone:first-child { + border-top-left-radius: var(--border-radius-small); +} + +th.markdownTableHeadLeft:last-child, th.markdownTableHeadRight:last-child, th.markdownTableHeadCenter:last-child, th.markdownTableHeadNone:last-child { + border-top-right-radius: var(--border-radius-small); +} + +table.markdownTable td, table.markdownTable th, table.fieldtable dt { + border: none; + border-right: 1px solid var(--separator-color); + padding: var(--spacing-small) var(--spacing-medium); +} + +table.markdownTable td:last-child, table.markdownTable th:last-child, table.fieldtable dt:last-child { + border: none; +} + +table.markdownTable tr, table.markdownTable tr { + border-bottom: 1px solid var(--separator-color); +} + +table.markdownTable tr:last-child, table.markdownTable tr:last-child { + border-bottom: none; +} + +table.fieldtable th { + font-size: var(--page-font-size); + font-weight: 600; + background-image: none; + background-color: var(--tablehead-background); + color: var(--tablehead-foreground); + border-bottom: 1px solid var(--separator-color); +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + border-bottom: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--separator-color); +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--primary-light-color); + box-shadow: 0 0 15px var(--primary-light-color); +} + +table.memberdecls { + display: block; +} + +table.memberdecls tr[class^='memitem'] { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); +} + +table.memberdecls tr[class^='memitem'] .memTemplParams { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + color: var(--primary-dark-color); +} + +table.memberdecls .memItemLeft, +table.memberdecls .memItemRight, +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight, +table.memberdecls .memTemplParams { + transition: none; + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + background-color: var(--fragment-background); +} + +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight { + padding-top: 2px; +} + +table.memberdecls .memTemplParams { + border-bottom: 0; + border-left: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); + border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; + padding-bottom: 0; +} + +table.memberdecls .memTemplItemLeft { + border-radius: 0 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + border-top: 0; +} + +table.memberdecls .memTemplItemRight { + border-radius: 0 0 var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + border-top: 0; +} + +table.memberdecls .memItemLeft { + border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + padding-left: var(--spacing-medium); + padding-right: 0; +} + +table.memberdecls .memItemRight { + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + padding-right: var(--spacing-medium); + padding-left: 0; + +} + +table.memberdecls .mdescLeft, table.memberdecls .mdescRight { + background: none; + color: var(--page-foreground-color); + padding: var(--spacing-small) 0; +} + +table.memberdecls .memSeparator { + background: var(--page-background-color); + height: var(--spacing-large); + border: 0; + transition: none; +} + +table.memberdecls .groupheader { + margin-bottom: var(--spacing-large); +} + +table.memberdecls .inherit_header td { + padding: 0 0 var(--spacing-medium) 0; + text-indent: -12px; + line-height: 1.5em; + color: var(--page-secondary-foreground-color); +} + +@media screen and (max-width: 767px) { + + table.memberdecls .memItemLeft, + table.memberdecls .memItemRight, + table.memberdecls .mdescLeft, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemLeft, + table.memberdecls .memTemplItemRight, + table.memberdecls .memTemplParams { + display: block; + text-align: left; + padding-left: var(--spacing-large); + margin: 0 calc(0px - var(--spacing-large)) 0 calc(0px - var(--spacing-large)); + border-right: none; + border-left: none; + border-radius: 0; + } + + table.memberdecls .memItemLeft, + table.memberdecls .mdescLeft, + table.memberdecls .memTemplItemLeft { + border-bottom: 0; + padding-bottom: 0; + } + + table.memberdecls .memTemplItemLeft { + padding-top: 0; + } + + table.memberdecls .mdescLeft { + margin-top: calc(0px - var(--page-font-size)); + } + + table.memberdecls .memItemRight, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemRight { + border-top: 0; + padding-top: 0; + padding-right: var(--spacing-large); + overflow-x: auto; + } + + table.memberdecls tr[class^='memitem']:not(.inherit) { + display: block; + width: calc(100vw - 2 * var(--spacing-large)); + } + + table.memberdecls .mdescRight { + color: var(--page-foreground-color); + } + + table.memberdecls tr.inherit { + visibility: hidden; + } + + table.memberdecls tr[style="display: table-row;"] { + display: block !important; + visibility: visible; + width: calc(100vw - 2 * var(--spacing-large)); + animation: fade .5s; + } + + @keyframes fade { + 0% { + opacity: 0; + max-height: 0; + } + + 100% { + opacity: 1; + max-height: 200px; + } + } +} + + +/* +Horizontal Rule + */ + +hr { + margin-top: var(--spacing-large); + margin-bottom: var(--spacing-large); + height: 1px; + background-color: var(--separator-color); + border: 0; +} + +.contents hr { + box-shadow: 100px 0 0 var(--separator-color), + -100px 0 0 var(--separator-color), + 500px 0 0 var(--separator-color), + -500px 0 0 var(--separator-color), + 1500px 0 0 var(--separator-color), + -1500px 0 0 var(--separator-color), + 2000px 0 0 var(--separator-color), + -2000px 0 0 var(--separator-color); +} + +.contents img, .contents .center, .contents center, .contents div.image object { + max-width: 100%; + overflow: auto; +} + +@media screen and (max-width: 767px) { + .contents .dyncontent > .center, .contents > center { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); + } +} + +/* +Directories + */ +div.directory { + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + width: auto; +} + +table.directory { + font-family: var(--font-family); + font-size: var(--page-font-size); + font-weight: normal; + width: 100%; +} + +table.directory td.entry { + padding: var(--spacing-small); +} + +table.directory td.desc { + min-width: 250px; +} + +table.directory tr.even { + background-color: var(--odd-color); +} + +.icona { + width: auto; + height: auto; + margin: 0 var(--spacing-small); +} + +.icon { + background: var(--primary-color); + width: 18px; + height: 18px; + line-height: 18px; +} + +.iconfopen, .icondoc, .iconfclosed { + background-position: center; + margin-bottom: 0; +} + +.icondoc { + filter: saturate(0.2); +} + +@media screen and (max-width: 767px) { + div.directory { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) .iconfopen, html:not(.light-mode) .iconfclosed { + filter: hue-rotate(180deg) invert(); + } +} + +html.dark-mode .iconfopen, html.dark-mode .iconfclosed { + filter: hue-rotate(180deg) invert(); +} + +/* +Class list + */ + +.classindex dl.odd { + background: var(--odd-color); + border-radius: var(--border-radius-small); +} + +/* +Class Index Doxygen 1.8 + */ + +table.classindex { + margin-left: 0; + margin-right: 0; + width: 100%; +} + +table.classindex table div.ah { + background-image: none; + background-color: initial; + border-color: var(--separator-color); + color: var(--page-foreground-color); + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-large); + padding: var(--spacing-small); +} + +div.qindex { + background-color: var(--odd-color); + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + padding: var(--spacing-small) 0; +} + +/* +Footer and nav-path + */ + +#nav-path { + width: 100%; +} + +#nav-path ul { + background-image: none; + background: var(--page-background-color); + border: none; + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + border-bottom: 0; + box-shadow: 0 0.75px 0 var(--separator-color); + font-size: var(--navigation-font-size); +} + +img.footer { + width: 60px; +} + +.navpath li.footer { + color: var(--page-secondary-foreground-color); +} + +address.footer { + color: var(--page-secondary-foreground-color); + margin-bottom: var(--spacing-large); +} + +#nav-path li.navelem { + background-image: none; + display: flex; + align-items: center; +} + +.navpath li.navelem a { + text-shadow: none; + display: inline-block; + color: var(--primary-color) !important; +} + +.navpath li.navelem b { + color: var(--primary-dark-color); + font-weight: 500; +} + +li.navelem { + padding: 0; + margin-left: -8px; +} + +li.navelem:first-child { + margin-left: var(--spacing-large); +} + +li.navelem:first-child:before { + display: none; +} + +#nav-path li.navelem:after { + content: ''; + border: 5px solid var(--page-background-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(4.2); + z-index: 10; + margin-left: 6px; +} + +#nav-path li.navelem:before { + content: ''; + border: 5px solid var(--separator-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(3.2); + margin-right: var(--spacing-small); +} + +.navpath li.navelem a:hover { + color: var(--primary-color); +} + +/* +Scrollbars for Webkit + */ + +#nav-tree::-webkit-scrollbar, +div.fragment::-webkit-scrollbar, +pre.fragment::-webkit-scrollbar, +div.memproto::-webkit-scrollbar, +.contents center::-webkit-scrollbar, +.contents .center::-webkit-scrollbar, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname)::-webkit-scrollbar { + width: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + height: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); +} + +#nav-tree::-webkit-scrollbar-thumb, +div.fragment::-webkit-scrollbar-thumb, +pre.fragment::-webkit-scrollbar-thumb, +div.memproto::-webkit-scrollbar-thumb, +.contents center::-webkit-scrollbar-thumb, +.contents .center::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname)::-webkit-scrollbar-thumb { + background-color: transparent; + border: var(--webkit-scrollbar-padding) solid transparent; + border-radius: calc(var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + background-clip: padding-box; +} + +#nav-tree:hover::-webkit-scrollbar-thumb, +div.fragment:hover::-webkit-scrollbar-thumb, +pre.fragment:hover::-webkit-scrollbar-thumb, +div.memproto:hover::-webkit-scrollbar-thumb, +.contents center:hover::-webkit-scrollbar-thumb, +.contents .center:hover::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname):hover::-webkit-scrollbar-thumb { + background-color: var(--webkit-scrollbar-color); +} + +#nav-tree::-webkit-scrollbar-track, +div.fragment::-webkit-scrollbar-track, +pre.fragment::-webkit-scrollbar-track, +div.memproto::-webkit-scrollbar-track, +.contents center::-webkit-scrollbar-track, +.contents .center::-webkit-scrollbar-track, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname)::-webkit-scrollbar-track { + background: transparent; +} + +#nav-tree::-webkit-scrollbar-corner { + background-color: var(--side-nav-background); +} + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) { + overflow-x: auto; + overflow-x: overlay; +} + +#nav-tree { + overflow-x: auto; + overflow-y: auto; + overflow-y: overlay; +} + +/* +Scrollbars for Firefox + */ + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) { + scrollbar-width: thin; +} + +/* +Optional Dark mode toggle button + */ + +doxygen-awesome-dark-mode-toggle { + display: inline-block; + margin: 0 0 0 var(--spacing-small); + padding: 0; + width: var(--searchbar-height); + height: var(--searchbar-height); + background: none; + border: none; + border-radius: var(--searchbar-height); + vertical-align: middle; + text-align: center; + line-height: var(--searchbar-height); + font-size: 22px; + display: flex; + align-items: center; + justify-content: center; + user-select: none; + cursor: pointer; +} + +doxygen-awesome-dark-mode-toggle > svg { + transition: transform .1s ease-in-out; +} + +doxygen-awesome-dark-mode-toggle:active > svg { + transform: scale(.5); +} + +doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.03); +} + +html.dark-mode doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.18); +} + +/* +Optional fragment copy button + */ +.doxygen-awesome-fragment-wrapper { + position: relative; +} + +doxygen-awesome-fragment-copy-button { + opacity: 0; + background: var(--fragment-background); + width: 28px; + height: 28px; + position: absolute; + right: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + top: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + border: 1px solid var(--fragment-foreground); + cursor: pointer; + border-radius: var(--border-radius-small); + display: flex; + justify-content: center; + align-items: center; +} + +.doxygen-awesome-fragment-wrapper:hover doxygen-awesome-fragment-copy-button, doxygen-awesome-fragment-copy-button.success { + opacity: .28; +} + +doxygen-awesome-fragment-copy-button:hover, doxygen-awesome-fragment-copy-button.success { + opacity: 1 !important; +} + +doxygen-awesome-fragment-copy-button:active:not([class~=success]) svg { + transform: scale(.91); +} + +doxygen-awesome-fragment-copy-button svg { + fill: var(--fragment-foreground); + width: 18px; + height: 18px; +} + +doxygen-awesome-fragment-copy-button.success svg { + fill: rgb(14, 168, 14); +} + +doxygen-awesome-fragment-copy-button.success { + border-color: rgb(14, 168, 14); +} + +@media screen and (max-width: 767px) { + .textblock > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .textblock li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + dl dd > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button { + right: 0; + } +} + +/* +Optional paragraph link button + */ + +a.anchorlink { + font-size: 90%; + margin-left: var(--spacing-small); + color: var(--page-foreground-color) !important; + text-decoration: none; + opacity: .15; + display: none; + transition: opacity .1s ease-in-out, color .1s ease-in-out; +} + +a.anchorlink svg { + fill: var(--page-foreground-color); +} + +h3 a.anchorlink svg, h4 a.anchorlink svg { + margin-bottom: -3px; + margin-top: -4px; +} + +a.anchorlink:hover { + opacity: .45; +} + +h2:hover a.anchorlink, h1:hover a.anchorlink, h3:hover a.anchorlink, h4:hover a.anchorlink { + display: inline-block; +} diff --git a/docs/doxygen.conf b/docs/doxygen.conf new file mode 100644 index 0000000..1d6bf27 --- /dev/null +++ b/docs/doxygen.conf @@ -0,0 +1,2738 @@ +# Doxyfile 1.9.4 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). +# +# Note: +# +# Use doxygen to compare the used configuration file with the template +# configuration file: +# doxygen -x [configFile] +# Use doxygen to compare the used configuration file with the template +# configuration file without replacing the environment variables: +# doxygen -x_noenv [configFile] + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = copyjit + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = docs/output + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 +# sub-directories (in 2 levels) under the output directory of each output format +# and will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to +# control the number of sub-directories. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# Controls the number of sub-directories that will be created when +# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every +# level increment doubles the number of directories, resulting in 4096 +# directories at level 8 which is the default and also the maximum value. The +# sub-directories are organized in 2 levels, the first level always has a fixed +# numer of 16 directories. +# Minimum value: 0, maximum value: 8, default value: 8. +# This tag requires that the tag CREATE_SUBDIRS is set to YES. + +CREATE_SUBDIRS_LEVEL = 8 + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, +# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English +# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, +# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with +# English messages), Korean, Korean-en (Korean with English messages), Latvian, +# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, +# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, +# Swedish, Turkish, Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = YES + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = YES + +# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# By default Python docstrings are displayed as preformatted text and doxygen's +# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the +# doxygen's special commands can be used and the contents of the docstring +# documentation blocks is shown as doxygen documentation. +# The default value is: YES. + +PYTHON_DOCSTRING = YES + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:^^" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". Note that you cannot put \n's in the value part of an alias +# to insert newlines (in the resulting output). You can put ^^ in the value part +# of an alias to insert a newline as if a physical newline was in the original +# file. When you need a literal { or } or , in the value part of an alias you +# have to escape them by means of a backslash (\), this can lead to conflicts +# with the commands \{ and \} for these it is advised to use the version @{ and +# @} or use a double escape (\\{ and \\}) + +ALIASES = "global=\warning Global variable.^^" \ + "sideeffects=\warning Expression is evaluated multiple times.^^" + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, +# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files). For instance to make doxygen treat .inc files +# as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. When specifying no_extension you should add +# * to the FILE_PATTERNS. +# +# Note see also the list of default file extension mappings. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See https://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 5. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 5 + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +# The NUM_PROC_THREADS specifies the number of threads doxygen is allowed to use +# during processing. When set to 0 doxygen will based this on the number of +# cores available in the system. You can set it explicitly to a value larger +# than 0 to get more control over the balance between CPU load and processing +# speed. At this moment only the input processing can be done using multiple +# threads. Since this is still an experimental feature the default is set to 1, +# which effectively disables parallel processing. Please report any issues you +# encounter. Generating dot graphs in parallel is controlled by the +# DOT_NUM_THREADS setting. +# Minimum value: 0, maximum value: 32, default value: 1. + +NUM_PROC_THREADS = 1 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If this flag is set to YES, the name of an unnamed parameter in a declaration +# will be determined by the corresponding definition. By default unnamed +# parameters remain unnamed in the output. +# The default value is: YES. + +RESOLVE_UNNAMED_PARAMS = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# declarations. If set to NO, these declarations will be included in the +# documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# With the correct setting of option CASE_SENSE_NAMES doxygen will better be +# able to match the capabilities of the underlying filesystem. In case the +# filesystem is case sensitive (i.e. it supports files in the same directory +# whose names only differ in casing), the option must be set to YES to properly +# deal with such files in case they appear in the input. For filesystems that +# are not case sensitive the option should be set to NO to properly deal with +# output files written for symbols that only differ in casing, such as for two +# classes, one named CLASS and the other named Class, and to also support +# references to files without having to specify the exact matching casing. On +# Windows (including Cygwin) and MacOS, users should typically set this option +# to NO, whereas on Linux or other Unix flavors it should typically be set to +# YES. +# The default value is: system dependent. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class +# will show which file needs to be included to use the class. +# The default value is: YES. + +SHOW_HEADERFILE = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = NO + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. See also section "Changing the +# layout of pages" for information. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as documenting some parameters in +# a documented function twice, or documenting parameters that don't exist or +# using markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete +# function parameter documentation. If set to NO, doxygen will accept that some +# parameters have no documentation without warning. +# The default value is: YES. + +WARN_IF_INCOMPLETE_DOC = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong parameter +# documentation, but not about the absence of documentation. If EXTRACT_ALL is +# set to YES then this flag will automatically be disabled. See also +# WARN_IF_INCOMPLETE_DOC +# The default value is: NO. + +WARN_NO_PARAMDOC = YES + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS +# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the doxygen process doxygen will return with a non-zero status. +# Possible values are: NO, YES and FAIL_ON_WARNINGS. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# See also: WARN_LINE_FORMAT +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# In the $text part of the WARN_FORMAT command it is possible that a reference +# to a more specific place is given. To make it easier to jump to this place +# (outside of doxygen) the user can define a custom "cut" / "paste" string. +# Example: +# WARN_LINE_FORMAT = "'vi $file +$line'" +# See also: WARN_FORMAT +# The default value is: at line $line of file $file. + +WARN_LINE_FORMAT = "at line $line of file $file" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). In case the file specified cannot be opened for writing the +# warning and error messages are written to standard error. When as file - is +# specified the warning and error messages are written to standard output +# (stdout). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = src \ + docs \ + README.md + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: +# https://www.gnu.org/software/libiconv/) for the list of possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# Note the list of default checked file patterns might differ from the list of +# default file extension mappings. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.l, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, +# *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C +# comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, +# *.vhdl, *.ucf, *.qsf and *.ice. + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.idl \ + *.ddl \ + *.odl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.cs \ + *.d \ + *.php \ + *.php4 \ + *.php5 \ + *.phtml \ + *.inc \ + *.m \ + *.markdown \ + *.md \ + *.mm \ + *.dox \ + *.py \ + *.pyw \ + *.f90 \ + *.f95 \ + *.f03 \ + *.f08 \ + *.f18 \ + *.f \ + *.for \ + *.vhd \ + *.vhdl \ + *.ucf \ + *.qsf \ + *.ice + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = */kernel/gen/* + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# ANamespace::AClass, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# entity all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# clang parser (see: +# http://clang.llvm.org/) for more accurate parsing at the cost of reduced +# performance. This can be particularly helpful with template rich C++ code for +# which doxygen's built-in parser lacks the necessary type information. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If the CLANG_ASSISTED_PARSING tag is set to YES and the CLANG_ADD_INC_PATHS +# tag is set to YES then doxygen will add the directory of each input to the +# include path. +# The default value is: YES. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_ADD_INC_PATHS = NO + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +# If clang assisted parsing is enabled you can provide the clang parser with the +# path to the directory containing a file called compile_commands.json. This +# file is the compilation database (see: +# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the +# options used when the source files were built. This is equivalent to +# specifying the -p option to a clang tool, such as clang-check. These options +# will then be passed to the parser. Any options specified with CLANG_OPTIONS +# will be added as well. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. + +CLANG_DATABASE_PATH = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = docs/doxygen-kmi.css + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a color-wheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use gray-scales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = NO + +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: +# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To +# create a documentation set, doxygen will generate a Makefile in the HTML +# output directory. Running make will produce the docset in that directory and +# running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag determines the URL of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDURL = + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# on Windows. In the beginning of 2021 Microsoft took the original page, with +# a.o. the download links, offline the HTML help workshop was already many years +# in maintenance mode). You can download the HTML help workshop from the web +# archives at Installation executable (see: +# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo +# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the main .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location (absolute path +# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to +# run qhelpgenerator on the generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine tune the look of the index (see "Fine-tuning the output"). As an +# example, the default style sheet generated by doxygen has an example that +# shows how to put an image at the root of the tree instead of the PROJECT_NAME. +# Since the tree basically has the same information as the tab index, you could +# consider setting DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = YES + +# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the +# FULL_SIDEBAR option determines if the side bar is limited to only the treeview +# area (value NO) or if it should extend to the full height of the window (value +# YES). Setting this to YES gives a layout similar to +# https://docs.readthedocs.io with more room for contents, but less room for the +# project logo, title, and description. If either GENERATE_TREEVIEW or +# DISABLE_INDEX is set to NO, this option has no effect. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FULL_SIDEBAR = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 1 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email +# addresses. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +OBFUSCATE_EMAILS = YES + +# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg +# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see +# https://inkscape.org) to generate formulas as SVG images instead of PNGs for +# the HTML output. These images will generally look nicer at scaled resolutions. +# Possible values are: png (the default) and svg (looks nicer but requires the +# pdf2svg or inkscape tool). +# The default value is: png. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FORMULA_FORMAT = png + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANSPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + +FORMULA_MACROFILE = + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side JavaScript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# With MATHJAX_VERSION it is possible to specify the MathJax version to be used. +# Note that the different versions of MathJax have different requirements with +# regards to the different settings, so it is possible that also other MathJax +# settings have to be changed when switching between the different MathJax +# versions. +# Possible values are: MathJax_2 and MathJax_3. +# The default value is: MathJax_2. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_VERSION = MathJax_2 + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. For more details about the output format see MathJax +# version 2 (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3 +# (see: +# http://docs.mathjax.org/en/latest/web/components/output.html). +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility. This is the name for Mathjax version 2, for MathJax version 3 +# this will be translated into chtml), NativeMML (i.e. MathML. Only supported +# for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This +# is the name for Mathjax version 3, for MathJax version 2 this will be +# translated into HTML-CSS) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from https://www.mathjax.org before deployment. The default value is: +# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 +# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = https://cdn.jsdelivr.net/npm/mathjax@2 + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# for MathJax version 2 (see +# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions): +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# For example for MathJax version 3 (see +# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html): +# MATHJAX_EXTENSIONS = ams +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /