tf_fuzz: rewrite test suite generator

Rewrite the test suite generator to be compatible with the current
regression test runner.

Originally, special support for TF-Fuzz was built into the test build
system; however, this rewrite uses the out-of-tree test suite mechanism
instead. This provides all the functionality needed for TF-Fuzz suites
to run, so special support for them is no longer needed. The TF-Fuzz
related CMake flags also no longer work, so should probably be removed
in the future.

- Changes to the regression tester also broke header includes in many of
  the demo tests -- for now, these tests have been disabled.

- Test suite boilerplate is now defined with Jinja templates. This
  should make changing the layout of the generated test suite easier in
  the future.

- Only files with the .test extension in the input directory are treated
  as tests, instead of all files. The previous tester would break on
  folders with READMEs / non test content, but now these are ignored.

Change-Id: I76d282bb8f0bedff4b32cc8a367d6a1f465ceb0a
Signed-off-by: Nik Dewally <Nik.Dewally@arm.com>
diff --git a/docs/tf_fuzz/source_structure/index.rst b/docs/tf_fuzz/source_structure/index.rst
index 76dc653..3926f66 100644
--- a/docs/tf_fuzz/source_structure/index.rst
+++ b/docs/tf_fuzz/source_structure/index.rst
@@ -2,13 +2,96 @@
 Source Structure
 ################
 
-
 .. toctree::
     :maxdepth: 1
     :glob:
 
     *
 
+*************
+Code Overview
+*************
+To help understand the code, below is a C++-class hierarchy used in this code
+base.  They are explained further in the documents in their respective
+directories, so the file names where the classes are defined is listed below (this,
+very roughly in order of functional interactions, of chronological usage during
+execution, and of most-to-least importance):
+
+.. code-block:: bash
+
+    template_line                         ./template/template_line.hpp
+        sst_template_line                 ./template/template_line.hpp
+            read_sst_template_line        ./template/sst_template_line.hpp
+            remove_sst_template_line      ./template/sst_template_line.hpp
+            set_sst_template_line         ./template/sst_template_line.hpp
+        policy_template_line              ./template/template_line.hpp
+            read_policy_template_line     ./template/crypto_template_line.hpp
+            set_policy_template_line      ./template/crypto_template_line.hpp
+        key_template_line                 ./template/template_line.hpp
+            read_key_template_line        ./template/crypto_template_line.hpp
+            remove_key_template_line      ./template/crypto_template_line.hpp
+            set_key_template_line         ./template/crypto_template_line.hpp
+        security_template_line            ./template/template_line.hpp
+            security_hash_template_line   ./template/secure_template_line.hpp
+
+    psa_call                              ./calls/psa_call.hpp
+        crypto_call                       ./calls/psa_call.hpp
+            policy_call                   ./calls/crypto_call.hpp
+                init_policy_call          ./calls/crypto_call.hpp
+                reset_policy_call         ./calls/crypto_call.hpp
+                add_policy_usage_call     ./calls/crypto_call.hpp
+                set_policy_lifetime_call  ./calls/crypto_call.hpp
+                set_policy_type_call      ./calls/crypto_call.hpp
+                set_policy_algorithm_call ./calls/crypto_call.hpp
+                set_policy_usage_call     ./calls/crypto_call.hpp
+                get_policy_lifetime_call  ./calls/crypto_call.hpp
+                get_policy_type_call      ./calls/crypto_call.hpp
+                get_policy_algorithm_call ./calls/crypto_call.hpp
+                get_policy_usage_call     ./calls/crypto_call.hpp
+                get_policy_size_call      ./calls/crypto_call.hpp
+                get_policy_call           ./calls/crypto_call.hpp
+            key_call                      ./calls/crypto_call.hpp
+                generate_key_call         ./calls/crypto_call.hpp
+                create_key_call           ./calls/crypto_call.hpp
+                copy_key_call             ./calls/crypto_call.hpp
+                read_key_data_call        ./calls/crypto_call.hpp
+                remove_key_call           ./calls/crypto_call.hpp
+        sst_call                         ./calls/psa_call.hpp
+            sst_remove_call              ./calls/sst_call.hpp
+            sst_get_call                 ./calls/sst_call.hpp
+            sst_set_call                 ./calls/sst_call.hpp
+        security_call                    ./calls/psa_call.hpp
+            hash_call                    ./calls/security_call.hpp
+
+    boilerplate                          ./boilerplate/boilerplate.hpp
+
+    psa_asset                            ./assets/psa_asset.hpp
+        crypto_asset                     ./assets/crypto_asset.hpp
+            policy_asset                 ./assets/crypto_asset.hpp
+            key_asset                    ./assets/crypto_asset.hpp
+        sst_asset                        ./assets/sst_asset.hpp
+
+    tf_fuzz_info                         ./tf_fuzz.hpp
+
+    variables                            ./utility/variables.hpp
+    crc32                                ./utility/compute.hpp
+
+    gibberish                            ./utility/gibberish.hpp
+
+    expect_info                          ./utility/data_blocks.hpp
+    set_data_info                        ./utility/data_blocks.hpp
+    asset_name_id_info                   ./utility/data_blocks.hpp
+
+
+TF-Fuzz now has better-organized management of variables in the generated code.
+In particular, it maintains a list of variables named in the test template, and
+implicit in the code, notably variables assets are ``read`` into.  It also now has
+completely separate execution phases to parse the test template, simulate the
+sequence of PSA calls generated, and write out the expected results.  That
+simulation is only in enough detail to predict expected results.  Since TF-Fuzz
+currently mostly addresses only SST calls, that simulation is very simple in
+nature -- just tracking data movement.
+
 --------------
 
 *Copyright (c) 2024, Arm Limited. All rights reserved.*