<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mike/sst/src/kv.c, branch v0.18-BETA</title>
<subtitle>Source Speedrun Tools: practice tools and handy features for Source Engine games</subtitle>
<id>https://qdb.woz.blue/mike/sst/atom?h=v0.18-BETA</id>
<link rel='self' href='https://qdb.woz.blue/mike/sst/atom?h=v0.18-BETA'/>
<link rel='alternate' type='text/html' href='https://qdb.woz.blue/mike/sst/'/>
<updated>2024-08-23T19:40:01+00:00</updated>
<entry>
<title>Rewrite the gamedata and entprops systems entirely</title>
<updated>2024-08-23T19:40:01+00:00</updated>
<author>
<name>Michael Smith</name>
<email>mikesmiffy128@gmail.com</email>
</author>
<published>2024-08-21T23:02:48+00:00</published>
<link rel='alternate' type='text/html' href='https://qdb.woz.blue/mike/sst/commit/?id=cf0354eb8e043fcd9c6c17756701972f948a16f1'/>
<id>urn:sha1:cf0354eb8e043fcd9c6c17756701972f948a16f1</id>
<content type='text'>
This removes the horrible janky old KeyValues parser and replaces it
with a couple of trivial ad-hoc text parsers. In doing so, make the
format of the actual gamedata files more human-friendly too.

We also gain support for nested SendTables in mkentprops, which are
required to get at various things like player velocity. And, the actual
string matching is made more efficient (or, at least, more scalable) by
way of a cool radix tree thing which generates a bunch of switch cases
on distinct characters.
</content>
</entry>
<entry>
<title>Revise syntax macros and add a ton of branch hints</title>
<updated>2024-08-23T19:37:37+00:00</updated>
<author>
<name>Michael Smith</name>
<email>mikesmiffy128@gmail.com</email>
</author>
<published>2024-08-03T22:40:31+00:00</published>
<link rel='alternate' type='text/html' href='https://qdb.woz.blue/mike/sst/commit/?id=83da606072ce272eb053d4e1497d77e647cfecae'/>
<id>urn:sha1:83da606072ce272eb053d4e1497d77e647cfecae</id>
<content type='text'>
My new programming style is branch hints. All non-confusing branches
must be hinted when I can be bothered. It's faster, sometimes, maybe.

Also, start trying to use more signed sizes in at least some of the
places where it makes sense. Unsigned sizes are surprisingly
error-prone!
</content>
</entry>
<entry>
<title>Move towards C23, improve events and vcall macros</title>
<updated>2022-09-13T21:50:30+00:00</updated>
<author>
<name>Michael Smith</name>
<email>mikesmiffy128@gmail.com</email>
</author>
<published>2022-09-13T20:46:21+00:00</published>
<link rel='alternate' type='text/html' href='https://qdb.woz.blue/mike/sst/commit/?id=792463cb133f65645feb48743bbc03ef8eb96bdd'/>
<id>urn:sha1:792463cb133f65645feb48743bbc03ef8eb96bdd</id>
<content type='text'>
Another big one. Here's a list of things:

- Since the upcoming C23 standardises typeof(), use it as an extension
  for the time being in order to allow passing arbitrary types as
  macro/codegen parameters. It wouldn't have been a big leap to do this
  even without standardisation since it's apparently an easy extension
  to implement - and also, to be honest, this project is essentially glued
  to Clang anyway so who cares.

- Likewise, bool, true and false are becoming pre-defined, so
  pre-pre-define them now in order to get the benefit of not having to
  remember one header everywhere.

- Really ungodly/amazing vcall macro stuff now allows us to call C++
  virtual functions like regular C functions. It's pretty cool!

- Events can now take arbitrary parameters and come in two types:
  regular events and predicates.

All this makes the base code even uglier but makes the feature
implementation nicer. In other words, it places more of the cognitive
burden on myself and less on other people who might want to contribute.
This is a good tradeoff, because I'm a genius.
</content>
</entry>
<entry>
<title>Fix slashes being skipped in unquoted KV tokens</title>
<updated>2022-05-01T20:16:11+00:00</updated>
<author>
<name>Michael Smith</name>
<email>mikesmiffy128@gmail.com</email>
</author>
<published>2022-05-01T20:16:11+00:00</published>
<link rel='alternate' type='text/html' href='https://qdb.woz.blue/mike/sst/commit/?id=19d96b65e1a840407a7280ab1f99d48d62932620'/>
<id>urn:sha1:19d96b65e1a840407a7280ab1f99d48d62932620</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Spruce up text and fix some copyright years</title>
<updated>2022-03-19T04:36:59+00:00</updated>
<author>
<name>Michael Smith</name>
<email>mikesmiffy128@gmail.com</email>
</author>
<published>2022-03-19T04:36:59+00:00</published>
<link rel='alternate' type='text/html' href='https://qdb.woz.blue/mike/sst/commit/?id=e5cd34649c09a0a31cd27fc93efb7583de48b078'/>
<id>urn:sha1:e5cd34649c09a0a31cd27fc93efb7583de48b078</id>
<content type='text'>
Sometimes, you just want to Unicode.
</content>
</entry>
<entry>
<title>Fix some old KV parser issues</title>
<updated>2022-03-19T03:51:45+00:00</updated>
<author>
<name>Michael Smith</name>
<email>mikesmiffy128@gmail.com</email>
</author>
<published>2022-02-24T00:47:05+00:00</published>
<link rel='alternate' type='text/html' href='https://qdb.woz.blue/mike/sst/commit/?id=6818b362a776f0cc5a6068ed119dc2ebcbc5a9cc'/>
<id>urn:sha1:6818b362a776f0cc5a6068ed119dc2ebcbc5a9cc</id>
<content type='text'>
- Implement conditionals in the lexer and reject or ignore them in
  callbacks. This will allow something to use them later if needed.
- Make error handling less stupid (return a bool instead of using the
  state struct).
</content>
</entry>
<entry>
<title>Initial public snapshot</title>
<updated>2021-11-20T03:18:08+00:00</updated>
<author>
<name>Michael Smith</name>
<email>mikesmiffy128@gmail.com</email>
</author>
<published>2021-11-20T03:10:50+00:00</published>
<link rel='alternate' type='text/html' href='https://qdb.woz.blue/mike/sst/commit/?id=da6f343032cb01597dc7866e66f091adf3243a62'/>
<id>urn:sha1:da6f343032cb01597dc7866e66f091adf3243a62</id>
<content type='text'>
With code from Bill. Thanks Bill!
</content>
</entry>
</feed>
