Implementing Introspection
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
z Toggle filter mode V Revert filter to original state

Menu toggling

q Quotes r References f Filter c Credits

In-Menu Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Credits Menu

Enter Open URL (in new tab)
0:32Recap and set the stage for the day
0:32Recap and set the stage for the day
0:32Recap and set the stage for the day
3:45simple_preprocessor.cpp: Introspection
3:45simple_preprocessor.cpp: Introspection
3:45simple_preprocessor.cpp: Introspection
6:25simple_preprocessor.cpp: Name this function ReadEntireFileIntoMemoryAndNullTerminate
6:25simple_preprocessor.cpp: Name this function ReadEntireFileIntoMemoryAndNullTerminate
6:25simple_preprocessor.cpp: Name this function ReadEntireFileIntoMemoryAndNullTerminate
7:16simple_preprocessor.cpp: Call this function to run on handmade_sim_region.h and build it up
7:16simple_preprocessor.cpp: Call this function to run on handmade_sim_region.h and build it up
7:16simple_preprocessor.cpp: Call this function to run on handmade_sim_region.h and build it up
9:00build.bat: Add simple_preprocessor.cpp
9:00build.bat: Add simple_preprocessor.cpp
9:00build.bat: Add simple_preprocessor.cpp
9:45Debugger: Step into simple_preprocessor.cpp and ensure that it works as expected
9:45Debugger: Step into simple_preprocessor.cpp and ensure that it works as expected
9:45Debugger: Step into simple_preprocessor.cpp and ensure that it works as expected
10:51simple_preprocessor.cpp: Null terminate the file
10:51simple_preprocessor.cpp: Null terminate the file
10:51simple_preprocessor.cpp: Null terminate the file
11:19handmade.h: #define introspect
11:19handmade.h: #define introspect
11:19handmade.h: #define introspect
12:31handmade_sim_region.h: Use this introspect macro
12:31handmade_sim_region.h: Use this introspect macro
12:31handmade_sim_region.h: Use this introspect macro
12:42Brown butterα
12:42Brown butterα
12:42Brown butterα
13:16Describe tokens
13:16Describe tokens
13:16Describe tokens
14:58simple_preprocessor.cpp: Introduce token structures
14:58simple_preprocessor.cpp: Introduce token structures
14:58simple_preprocessor.cpp: Introduce token structures
16:41simple_preprocessor.cpp: Loop over the Tokens and print them out
16:41simple_preprocessor.cpp: Loop over the Tokens and print them out
16:41simple_preprocessor.cpp: Loop over the Tokens and print them out
20:18simple_preprocessor.cpp: Introduce struct tokenizer
20:18simple_preprocessor.cpp: Introduce struct tokenizer
20:18simple_preprocessor.cpp: Introduce struct tokenizer
21:20simple_preprocessor.cpp: Introduce EatAllWhitespace
21:20simple_preprocessor.cpp: Introduce EatAllWhitespace
21:20simple_preprocessor.cpp: Introduce EatAllWhitespace
23:09Get a little brainedβ
23:09Get a little brainedβ
23:09Get a little brainedβ
28:06simple_preprocessor.cpp: Provide a way to parse identifiers
28:06simple_preprocessor.cpp: Provide a way to parse identifiers
28:06simple_preprocessor.cpp: Provide a way to parse identifiers
29:20simple_preprocessor.cpp: Move GetToken's functionality to the correct place and write EatAllWhitespace
29:20simple_preprocessor.cpp: Move GetToken's functionality to the correct place and write EatAllWhitespace
29:20simple_preprocessor.cpp: Move GetToken's functionality to the correct place and write EatAllWhitespace
31:13simple_preprocessor.cpp: Provide the ability to parse C-style comments and introduce IsEndOfLine
31:13simple_preprocessor.cpp: Provide the ability to parse C-style comments and introduce IsEndOfLine
31:13simple_preprocessor.cpp: Provide the ability to parse C-style comments and introduce IsEndOfLine
34:36simple_preprocessor.cpp: Introduce IsAlpha and IsNumeric
34:36simple_preprocessor.cpp: Introduce IsAlpha and IsNumeric
34:36simple_preprocessor.cpp: Introduce IsAlpha and IsNumeric
35:57simple_preprocessor.cpp: Handle unknown tokens
35:57simple_preprocessor.cpp: Handle unknown tokens
35:57simple_preprocessor.cpp: Handle unknown tokens
37:00simple_preprocessor.cpp: Skip the closing quote
37:00simple_preprocessor.cpp: Skip the closing quote
37:00simple_preprocessor.cpp: Skip the closing quote
38:47simple_preprocessor.cpp: Implement ParseIdentifier
38:47simple_preprocessor.cpp: Implement ParseIdentifier
38:47simple_preprocessor.cpp: Implement ParseIdentifier
40:09Debugger: Step into simple_preprocessor.cpp and inspect the Tokenizer
40:09Debugger: Step into simple_preprocessor.cpp and inspect the Tokenizer
40:09Debugger: Step into simple_preprocessor.cpp and inspect the Tokenizer
41:07simple_preprocessor.cpp: Handle skipping over the first character
41:07simple_preprocessor.cpp: Handle skipping over the first character
41:07simple_preprocessor.cpp: Handle skipping over the first character
42:33Debugger: Step back in and inspect the Token
42:33Debugger: Step back in and inspect the Token
42:33Debugger: Step back in and inspect the Token
43:30Run the preprocessor and look at its output
43:30Run the preprocessor and look at its output
43:30Run the preprocessor and look at its output
44:09simple_preprocessor.cpp: Introduce ParseIntrospectable
44:09simple_preprocessor.cpp: Introduce ParseIntrospectable
44:09simple_preprocessor.cpp: Introduce ParseIntrospectable
45:29simple_preprocessor.cpp: Introduce TokenEquals
45:29simple_preprocessor.cpp: Introduce TokenEquals
45:29simple_preprocessor.cpp: Introduce TokenEquals
48:08Debugger: Step in to TokenEquals
48:08Debugger: Step in to TokenEquals
48:08Debugger: Step in to TokenEquals
48:51simple_preprocessor.cpp: Check for the string "intr"
48:51simple_preprocessor.cpp: Check for the string "intr"
48:51simple_preprocessor.cpp: Check for the string "intr"
49:37Debugger: Step through the loop inspecting At and Index
49:37Debugger: Step through the loop inspecting At and Index
49:37Debugger: Step through the loop inspecting At and Index
50:51simple_preprocessor.cpp: Implement ParseIntrospectable
50:51simple_preprocessor.cpp: Implement ParseIntrospectable
50:51simple_preprocessor.cpp: Implement ParseIntrospectable
53:11simple_preprocessor.cpp: Introduce ParseIntrospectionParams
53:11simple_preprocessor.cpp: Introduce ParseIntrospectionParams
53:11simple_preprocessor.cpp: Introduce ParseIntrospectionParams
53:54simple_preprocessor.cpp: Introduce ParseStruct
53:54simple_preprocessor.cpp: Introduce ParseStruct
53:54simple_preprocessor.cpp: Introduce ParseStruct
55:17simple_preprocessor.cpp: Introduce ParseMember
55:17simple_preprocessor.cpp: Introduce ParseMember
55:17simple_preprocessor.cpp: Introduce ParseMember
56:04simple_preprocessor.cpp: Introduce RequireToken
56:04simple_preprocessor.cpp: Introduce RequireToken
56:04simple_preprocessor.cpp: Introduce RequireToken
56:59simple_preprocessor.cpp: Provide the ability to print out the DEBUG_VALUE
56:59simple_preprocessor.cpp: Provide the ability to print out the DEBUG_VALUE
56:59simple_preprocessor.cpp: Provide the ability to print out the DEBUG_VALUE
1:00:43Run the preprocessor and see what happens
1:00:43Run the preprocessor and see what happens
1:00:43Run the preprocessor and see what happens
1:01:55Q&A
🗩
1:01:55Q&A
🗩
1:01:55Q&A
🗩
1:02:52paulsm1th It seems like you are doing recursive descent parsing. Is that how you would describe it?
🗪
1:02:52paulsm1th It seems like you are doing recursive descent parsing. Is that how you would describe it?
🗪
1:02:52paulsm1th It seems like you are doing recursive descent parsing. Is that how you would describe it?
🗪
1:03:35Blackboard: Recursive Descent Parser
1:03:35Blackboard: Recursive Descent Parser
1:03:35Blackboard: Recursive Descent Parser
1:05:04simple_preprocessor.cpp: Introduce a more recursive example of ParseMember
1:05:04simple_preprocessor.cpp: Introduce a more recursive example of ParseMember
1:05:04simple_preprocessor.cpp: Introduce a more recursive example of ParseMember
1:09:17Pseudonym73 Can you please satisfy my C standard anal retention by accepting 'v' and 'f' as whitespace?
🗪
1:09:17Pseudonym73 Can you please satisfy my C standard anal retention by accepting 'v' and 'f' as whitespace?
🗪
1:09:17Pseudonym73 Can you please satisfy my C standard anal retention by accepting 'v' and 'f' as whitespace?
🗪
1:10:10garryjohanson Have you an opinion on OpenCLC? Would that be out of bounds for Handmade Hero?
🗪
1:10:10garryjohanson Have you an opinion on OpenCLC? Would that be out of bounds for Handmade Hero?
🗪
1:10:10garryjohanson Have you an opinion on OpenCLC? Would that be out of bounds for Handmade Hero?
🗪
1:10:31insofaras How would you handle errors if you were deep in the recursion? Is checking return values everywhere the best way?
🗪
1:10:31insofaras How would you handle errors if you were deep in the recursion? Is checking return values everywhere the best way?
🗪
1:10:31insofaras How would you handle errors if you were deep in the recursion? Is checking return values everywhere the best way?
🗪
1:11:18radlabgaming I showed up late. Can you explain what introspection is?
🗪
1:11:18radlabgaming I showed up late. Can you explain what introspection is?
🗪
1:11:18radlabgaming I showed up late. Can you explain what introspection is?
🗪
1:16:22Popcorn0x90 Do you if Jon does "metaprogramming" for his language?
🗪
1:16:22Popcorn0x90 Do you if Jon does "metaprogramming" for his language?
🗪
1:16:22Popcorn0x90 Do you if Jon does "metaprogramming" for his language?
🗪
1:17:12insofaras Regarding errors again, would this be a place where exceptions would actually be useful?
🗪
1:17:12insofaras Regarding errors again, would this be a place where exceptions would actually be useful?
🗪
1:17:12insofaras Regarding errors again, would this be a place where exceptions would actually be useful?
🗪
1:18:00evraire Now that we have the preprocessor, do you plan to make more use of it going forward in Handmade Hero?
🗪
1:18:00evraire Now that we have the preprocessor, do you plan to make more use of it going forward in Handmade Hero?
🗪
1:18:00evraire Now that we have the preprocessor, do you plan to make more use of it going forward in Handmade Hero?
🗪
1:18:18hoganlong Who is Jon and what language are you talking about?
🗪
1:18:18hoganlong Who is Jon and what language are you talking about?
🗪
1:18:18hoganlong Who is Jon and what language are you talking about?
🗪
1:18:39cvaucher I'm writing a parser that looks pretty similar to this, but it runs on multi-GB files which takes a while. Any common approaches to use SIMD/multithreading to speed up text parsing? Seems more difficult since the characters aren't "independent" in the way pixels are
🗪
1:18:39cvaucher I'm writing a parser that looks pretty similar to this, but it runs on multi-GB files which takes a while. Any common approaches to use SIMD/multithreading to speed up text parsing? Seems more difficult since the characters aren't "independent" in the way pixels are
🗪
1:18:39cvaucher I'm writing a parser that looks pretty similar to this, but it runs on multi-GB files which takes a while. Any common approaches to use SIMD/multithreading to speed up text parsing? Seems more difficult since the characters aren't "independent" in the way pixels are
🗪
1:20:18desophos This stream makes me feel like an extremely inferior and incompetent programmer. Do you approve of this?
🗪
1:20:18desophos This stream makes me feel like an extremely inferior and incompetent programmer. Do you approve of this?
🗪
1:20:18desophos This stream makes me feel like an extremely inferior and incompetent programmer. Do you approve of this?
🗪
1:22:58paulsm1th How does metaprogramming change your workflow? Can you talk about incorporating generated code with the "regular" C files?
🗪
1:22:58paulsm1th How does metaprogramming change your workflow? Can you talk about incorporating generated code with the "regular" C files?
🗪
1:22:58paulsm1th How does metaprogramming change your workflow? Can you talk about incorporating generated code with the "regular" C files?
🗪
1:25:52Wrap up
🗩
1:25:52Wrap up
🗩
1:25:52Wrap up
🗩