libabigail/tests/test-svg.cc

287 lines
7.2 KiB
C++
Raw Normal View History

Re-license the project to Apache v2 With LLVM Exception Thanks to the previous work done, changing the license is just a matter of changing the SPDX identifer from "LGPL-3.0-or-later" to "Apache-2.0 WITH LLVM-exception". Note that for the abigail.m4, tests/test-dot.cc and tests/test-svg.cc the change was from "GPL-3.0-or-later WITH GCC-exception-3.1" to "Apache-2.0 WITH LLVM-exception". include/abg-cxx-compat.h was changed from "LGPL-2.0-or-later" to "Apache-2.0 WITH LLVM-exception". Source code of programs (as opposed to source code of the library) where generally licensed under GPL-3.0-or-later; they are also now licensed "Apache-2.0 WITH LLVM-exception". This is what this patch does. * abigail.m4: Change the SPDX identifier from "GPL-3.0-or-later WITH GCC-exception-3.1" to "Apache-2.0 WITH LLVM-exception" * include/abg-cxx-compat.h: Change the SPDX identifier from "LGPL-2.0-or-later" to "Apache-2.0 WITH LLVM-exception". * .clang-format: Change the SPDX identifier from "LGPL-3.0-or-later" to "Apache-2.0 WITH LLVM-exception". * Makefile.am: Likewise. * bash-completion/Makefile.am: Likewise. * bash-completion/abicompat: Likewise. * bash-completion/abidiff: Likewise. * bash-completion/abidw: Likewise. * bash-completion/abilint: Likewise. * bash-completion/abinilint: Likewise. * bash-completion/abipkgdiff: Likewise. * bash-completion/abisym: Likewise. * bash-completion/fedabipkgdiff: Likewise. * configure.ac: Likewise. * default.abignore: Likewise. * doc/Makefile.am: Likewise. * doc/api/libabigail.doxy: Likewise. * doc/manuals/Makefile.am: Likewise. * doc/website/libabigail-website.doxy: Likewise. * include/Makefile.am: Likewise. * include/abg-comp-filter.h: Likewise. * include/abg-comparison.h: Likewise. * include/abg-config.h: Likewise. * include/abg-corpus.h: Likewise. * include/abg-diff-utils.h: Likewise. * include/abg-dwarf-reader.h: Likewise. * include/abg-fwd.h: Likewise. * include/abg-hash.h: Likewise. * include/abg-ini.h: Likewise. * include/abg-interned-str.h: Likewise. * include/abg-ir.h: Likewise. * include/abg-libxml-utils.h: Likewise. * include/abg-libzip-utils.h: Likewise. * include/abg-reader.h: Likewise. * include/abg-regex.h: Likewise. * include/abg-reporter.h: Likewise. * include/abg-sptr-utils.h: Likewise. * include/abg-suppression.h: Likewise. * include/abg-tools-utils.h: Likewise. * include/abg-traverse.h: Likewise. * include/abg-version.h.in: Likewise. * include/abg-viz-common.h: Likewise. * include/abg-viz-dot.h: Likewise. * include/abg-viz-svg.h: Likewise. * include/abg-workers.h: Likewise. * include/abg-writer.h: Likewise. * scripts/dot_to_png.sh: Likewise. * scripts/dot_to_svg.sh: Likewise. * scripts/make-verbose.sh: Likewise. * scripts/svg_to_plain_svg.sh: Likewise. * scripts/svg_to_png_and_pdf.sh: Likewise. * src/Makefile.am: Likewise. * src/abg-comp-filter.cc: Likewise. * src/abg-comparison-priv.h: Likewise. * src/abg-comparison.cc: Likewise. * src/abg-config.cc: Likewise. * src/abg-corpus-priv.h: Likewise. * src/abg-corpus.cc: Likewise. * src/abg-default-reporter.cc: Likewise. * src/abg-diff-utils.cc: Likewise. * src/abg-dwarf-reader.cc: Likewise. * src/abg-elf-helpers.cc: Likewise. * src/abg-elf-helpers.h: Likewise. * src/abg-hash.cc: Likewise. * src/abg-ini.cc: Likewise. * src/abg-internal.h: Likewise. * src/abg-ir-priv.h: Likewise. * src/abg-ir.cc: Likewise. * src/abg-leaf-reporter.cc: Likewise. * src/abg-libxml-utils.cc: Likewise. * src/abg-libzip-utils.cc: Likewise. * src/abg-reader.cc: Likewise. * src/abg-regex.cc: Likewise. * src/abg-reporter-priv.cc: Likewise. * src/abg-reporter-priv.h: Likewise. * src/abg-suppression-priv.h: Likewise. * src/abg-suppression.cc: Likewise. * src/abg-tools-utils.cc: Likewise. * src/abg-traverse.cc: Likewise. * src/abg-viz-common.cc: Likewise. * src/abg-viz-dot.cc: Likewise. * src/abg-viz-svg.cc: Likewise. * src/abg-workers.cc: Likewise. * src/abg-writer.cc: Likewise. * tests/Makefile.am: Likewise. * tests/data/Makefile.am: Likewise. * tests/lib/catch.cc: Likewise. * tests/mockfedabipkgdiff.in: Likewise. * tests/print-diff-tree.cc: Likewise. * tests/runtestcanonicalizetypes.sh.in: Likewise. * tests/runtestdefaultsupprs.py.in: Likewise. * tests/runtestdefaultsupprspy3.sh.in: Likewise. * tests/runtestfedabipkgdiff.py.in: Likewise. * tests/runtestfedabipkgdiffpy3.sh.in: Likewise. * tests/test-abicompat.cc: Likewise. * tests/test-abidiff-exit.cc: Likewise. * tests/test-abidiff.cc: Likewise. * tests/test-alt-dwarf-file.cc: Likewise. * tests/test-annotate.cc: Likewise. * tests/test-core-diff.cc: Likewise. * tests/test-cxx-compat.cc: Likewise. * tests/test-diff-dwarf-abixml.cc: Likewise. * tests/test-diff-dwarf.cc: Likewise. * tests/test-diff-filter.cc: Likewise. * tests/test-diff-pkg.cc: Likewise. * tests/test-diff-suppr.cc: Likewise. * tests/test-diff2.cc: Likewise. * tests/test-dot.cc: Change the SPDX identifier from "GPL-3.0-or-later WITH GCC-exception-3.1" to "Apache-2.0 WITH LLVM-exception" * tests/test-elf-helpers.cc: Change the SPDX identifier from "LGPL-3.0-or-later" to "Apache-2.0 WITH LLVM-exception" * tests/test-ini.cc: Likewise. * tests/test-ir-walker.cc: Likewise. * tests/test-kmi-whitelist.cc: Likewise. * tests/test-lookup-syms.cc: Likewise. * tests/test-read-dwarf.cc: Likewise. * tests/test-read-write.cc: Likewise. * tests/test-svg.cc: Change the SPDX identifier from "GPL-3.0-or-later WITH GCC-exception-3.1" to "Apache-2.0 WITH LLVM-exception". * tests/test-symtab.cc: Change the SPDX identifier from "LGPL-3.0-or-later" to "Apache-2.0 WITH LLVM-exception" * tests/test-tools-utils.cc: Likewise. * tests/test-types-stability.cc: Likewise. * tests/test-utils.cc: Likewise. * tests/test-utils.h: Likewise. * tests/test-write-read-archive.cc: Likewise. * tests/update-test-output.py: Likewise. * tools/Makefile.am: Likewise. * tools/abiar.cc: Likewise. * tools/abicompat.cc: Likewise. * tools/abidiff.cc: Likewise. * tools/abidw.cc: Likewise. * tools/abilint.cc: Likewise. * tools/abipkgdiff.cc: Likewise. * tools/abisym.cc: Likewise. * tools/binilint.cc: Likewise. * tools/fedabipkgdiff: Likewise. * tools/kmidiff.cc: Likewise. * update-copyright.sh: Likewise. Signed-off-by: Benjamin De Kosnik <bkoz@gnu.org> Signed-off-by: Ben Woodard <woodard@redhat.com> Signed-off-by: Chenxiong Qi <cqi@redhat.com> Signed-off-by: Dodji Seketeli <dodji@redhat.com> Signed-off-by: Giuliano Procida <gprocida@google.com> Signed-off-by: Jan Engelhardt <jengelh@inai.de> Signed-off-by: Jessica Yu <jeyu@kernel.org> Signed-off-by: Jonathan Wakely <jwakely@redhat.com> Signed-off-by: Mark Wielaard <mark@klomp.org> Signed-off-by: Matthias Klose <doko@ubuntu.com> Signed-off-by: Matthias Maennich <maennich@google.com> Signed-off-by: Ondrej Oprala <ondrej.oprala@gmail.com> Signed-off-by: Roland McGrath <roland@hack.frob.com> Signed-off-by: Sinny Kumari <ksinny@gmail.com> Signed-off-by: Slava Barinov <v.barinov@samsung.com>
2020-05-29 14:26:04 +00:00
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
// -*- mode: C++ -*-
Replace individual license references with SPDX Identifiers This patch replaces license headers with SPDX identifiers in all files containing license headers. For each file, the SPDX identifier formally represents its current license. Note that the list of SPDX identifiers is available on the SPDX web site at https://spdx.org/licenses. For autoconf-archive/ax_prog_python_version.m4 however, there is a little catch. Dodji Seketeli wrote this ax_check_python_modules.m4. Just like the other autoconf-archive macros, it makes sense to have it under the FSF All Permissive license. Actually, the terms of that license was already in the file but then the license header was wrongly set to GPLv2 with autoconf exception. So I fixed that in this commit by setting the SPDX identifier to FSFAP. * abigail.m4: Replace the license header with the SPDX identifier GPL-3.0-or-later WITH GCC-exception-3.1 * autoconf-archive/ax_check_python_modules.m4: Correctly set the SPDX identifier to FSFAP. * autoconf-archive/ax_compare_version.m4: Replace the license header with the SPDX identifier FSFAP. * autoconf-archive/ax_prog_python_version.m4: Likewise. header with the SPDX identifier FSFAP. * autoconf-archive/ax_valgrind_check.m4: Likewise. * gen-changelog.py: Replace the license header with the SPDX identifier LGPL-2.0-or-later. * include/abg-comp-filter.h: Replace the license header with the SPDX identifier LGPL-3.0-or-later. * include/abg-comparison.h: Likewise. * include/abg-config.h: Likewise. * include/abg-corpus.h: Likewise. * include/abg-cxx-compat.h: Replace the license header with the SPDX identifier LGPL-2.0-or-later. * include/abg-diff-utils.h: Replace the license header with the SPDX identifier LGPL-3.0-or-later * include/abg-dwarf-reader.h: Likewise. * include/abg-fwd.h: Likewise. * include/abg-hash.h: Likewise. * include/abg-ini.h: Likewise. * include/abg-interned-str.h: Likewise. * include/abg-ir.h: Likewise. * include/abg-libxml-utils.h: Likewise. * include/abg-libzip-utils.h: Likewise. * include/abg-reader.h: Likewise. * include/abg-regex.h: Likewise. * include/abg-reporter.h: Likewise. * include/abg-sptr-utils.h: Likewise. * include/abg-suppression.h: Likewise. * include/abg-tools-utils.h: Likewise. * include/abg-traverse.h: Likewise. * include/abg-viz-common.h: Likewise. * include/abg-viz-dot.h: Likewise. * include/abg-viz-svg.h: Likewise. * include/abg-workers.h: Likewise. * include/abg-writer.h: Likewise. * install-sh: Replace the license header with the SPDX identifier MIT. * ltmain.sh: Replace the license header with the SPDX identifier GPL-2.0-or-later. Note that this file has the libtool special exception which allows us to redistribute it under the general license of the project. * src/abg-comp-filter.cc: Replace the license header with the SPDX * src/abg-comparison-priv.h: Likewise. * src/abg-comparison.cc: Likewise. * src/abg-config.cc: Likewise. * src/abg-corpus-priv.h: Likewise. * src/abg-corpus.cc: Likewise. * src/abg-default-reporter.cc: Likewise. * src/abg-diff-utils.cc: Likewise. * src/abg-dwarf-reader.cc: Likewise. * src/abg-elf-helpers.cc: Likewise. * src/abg-elf-helpers.h: Likewise. * src/abg-regex.cc: Likewise. * src/abg-hash.cc: Likewise. * src/abg-ini.cc: Likewise. * src/abg-internal.h: Likewise. * src/abg-ir-priv.h: Likewise. * src/abg-ir.cc: Likewise. * src/abg-leaf-reporter.cc: Likewise. * src/abg-libxml-utils.cc: Likewise. * src/abg-libzip-utils.cc: Likewise. * src/abg-reader.cc: Likewise. * src/abg-reporter-priv.cc: Likewise. * src/abg-reporter-priv.h: Likewise. * src/abg-sptr-utils.cc: Likewise. * src/abg-suppression-priv.h: Likewise. * src/abg-suppression.cc: Likewise. * src/abg-tools-utils.cc: Likewise. * src/abg-traverse.cc: Likewise. * src/abg-viz-common.cc: Likewise. * src/abg-viz-dot.cc: Likewise. * src/abg-viz-svg.cc: Likewise. * src/abg-workers.cc: Likewise. * src/abg-writer.cc: Likewise. * tests/lib/catch.cc: Likewise. * tests/lib/catch.hpp: Add an SPDX identifier BSL-1.0. * tests/mockfedabipkgdiff.in: Replace the license header with the SPDX identifier GPL-3.0-or-later. * tests/print-diff-tree.cc: Likewise. * tests/runtestfedabipkgdiff.py.in: Replaace the license header with the SPDW identifier GPL-3.0-or-later. * tests/test-abicompat.cc: Replace the license header with the SPDX identifier LGPL-3.0-or-later. * tests/test-abidiff-exit.cc: Likewise. * tests/test-abidiff.cc: Likewise. * tests/test-alt-dwarf-file.cc: Likewise. * tests/test-annotate.cc: Likewise. * tests/test-cxx-compat.cc: Likewise. * tests/test-core-diff.cc: Likewise. * tests/test-diff-dwarf-abixml.cc: Likewise. * tests/test-diff-dwarf.cc: Likewise. * tests/test-diff-filter.cc: Likewise. * tests/test-diff-pkg.cc: Likewise. * tests/test-diff-suppr.cc: Likewise. * tests/test-diff2.cc: Likewise. * tests/test-dot.cc: Replace the license header with the SPDX identifier GPL-3.0-with-GCC-exception. * tests/test-elf-helpers.cc: Replace the license header with the SPDX identifier LGPL-3.0-or-later. * tests/test-ini.cc: Likewise. * tests/test-ir-walker.cc: Likewise. * tests/test-kmi-whitelist.cc: Likewise. * tests/test-lookup-syms.cc: Likewise. * tests/test-read-dwarf.cc: Likewise. * tests/test-read-write.cc: Likewise. * tests/test-svg.cc: Replace the license header with the SPDX identifier GPL-3.0-with-GCC-exception. * tests/test-symtab.cc: Replace the license header with the SPDX identifier LGPL-3.0-or-later. * tests/test-tools-utils.cc: Likewise. * tests/test-types-stability.cc: Likewise. * tests/test-utils.cc: Likewise. * tests/test-utils.h: Likewise. * tests/test-write-read-archive.cc: Likewise. * tools/abiar.cc: Likewise. * tools/abicompat.cc: Likewise. * tools/abidiff.cc: Likewise. * tools/abidw.cc: Likewise. * tools/abilint.cc: Likewise. * tools/abipkgdiff.cc: Likewise. * tools/abisym.cc: Likewise. * tools/binilint.cc: Likewise. * tools/fedabipkgdiff: Replace the license header with the SPDX identifier GPL-3.0-or-later. * tools/kmidiff.cc: Likewise. Signed-off-by: Benjamin De Kosnik <bkoz@gnu.org> Signed-off-by: Ben Woodard <woodard@redhat.com> Signed-off-by: Chenxiong Qi <cqi@redhat.com> Signed-off-by: Dodji Seketeli <dodji@redhat.com> Signed-off-by: Giuliano Procida <gprocida@google.com> Signed-off-by: Jan Engelhardt <jengelh@inai.de> Signed-off-by: Jessica Yu <jeyu@kernel.org> Signed-off-by: Jonathan Wakely <jwakely@redhat.com> Signed-off-by: Mark Wielaard <mark@klomp.org> Signed-off-by: Matthias Klose <doko@ubuntu.com> Signed-off-by: Matthias Maennich <maennich@google.com> Signed-off-by: Ondrej Oprala <ondrej.oprala@gmail.com> Signed-off-by: Roland McGrath <roland@hack.frob.com> Signed-off-by: Sinny Kumari <ksinny@gmail.com> Signed-off-by: Slava Barinov <v.barinov@samsung.com>
2020-03-07 23:46:31 +00:00
//
// Copyright (C) 2013-2019 Red Hat, Inc.
#include "abg-viz-svg.h"
int main()
{
using namespace abigail;
// sa-base
{
svg obj("sa-base");
row r = { "base", primary_row_sty, 0, 1, 1 };
obj.start();
obj.add_y_row(r);
obj.finish();
}
// sa-A
{
svg obj("sa-A");
row r1 = { "A", primary_row_sty, 0, 24, 8 };
row r2 = { "base", base_row_sty, 0, 0, 0 };
row r3 = { "_M_i", member_row_sty, 0, 8, 8 };
row r4 = { "_M_n", member_row_sty, 8, 8, 8 };
row r5 = { "_M_type", member_row_sty, 16, 2, 2 };
row r6 = { "PADDING", implementation_row_sty, 18, 6, 0 };
obj.start();
obj.add_y_row(r1);
obj.add_y_row(r2);
obj.add_y_row(r3);
obj.add_y_row(r4);
obj.add_y_row(r5);
obj.add_y_row(r6);
obj.finish();
}
// sa-B
{
svg obj("sa-B");
row r1 = { "B", primary_row_sty, 0, 24, 8 };
row r2 = { "base", base_row_sty, 0, 0, 0 };
row r3 = { "_M_type", member_row_sty, 0, 2, 2 };
row r4 = { "HOLE", implementation_row_sty, 2, 2, 0 };
row r5 = { "_M_state", member_row_sty, 4, 4, 4 };
obj.start();
obj.add_y_row(r1);
obj.add_y_row(r2);
obj.add_y_row(r3);
obj.add_y_row(r4);
obj.add_y_row(r5);
obj.finish();
}
// sa-C1
{
svg obj("sa-C1");
row r1 = { "C1", primary_row_sty, 0, 2, 2 };
row r2 = { "base", base_row_sty, 0, 0, 0 };
row r3 = { "_M_type", member_row_sty, 0, 2, 2 };
obj.start();
obj.add_y_row(r1);
obj.add_y_row(r2);
obj.add_y_row(r3);
obj.finish();
}
// sa-C2
{
svg obj("sa-C2");
row r1 = { "C2", primary_row_sty, 0, 16, 8 };
row r2 = { "base", base_row_sty, 0, 0, 0 };
row r3 = { "IMPLEMENTATION", implementation_row_sty, 0, 8, 8 };
row r4 = { "_M_type", member_row_sty, 8, 2, 2 };
row r5 = { "PADDING", implementation_row_sty, 10, 6, 0 };
obj.start();
obj.add_y_row(r1);
obj.add_y_row(r2);
obj.add_y_row(r3);
obj.add_y_row(r4);
obj.add_y_row(r5);
obj.finish();
}
// sa-C3
{
svg obj("sa-C3");
row r1 = { "C3", primary_row_sty, 0, 16, 8 };
row r2 = { "base", base_row_sty, 0, 0, 0 };
row r3 = { "IMPLEMENTATION", implementation_row_sty, 0, 8, 8 };
row r4 = { "_M_type", member_row_sty, 8, 2, 2 };
row r5 = { "PADDING", implementation_row_sty, 10, 6, 0 };
obj.start();
obj.add_y_row(r1);
obj.add_y_row(r2);
obj.add_y_row(r3);
obj.add_y_row(r4);
obj.add_y_row(r5);
obj.finish();
}
// sa-D1
{
svg obj("sa-D1");
row r1 = { "D1", primary_row_sty, 0, 48, 8 };
row r2 = { "A", base_row_sty, 0, 24, 8 };
row r3 = { "_M_index", member_row_sty, 24, 8, 8 };
row r4 = { "_M_array", member_row_sty, 32, 8, 8 };
row r5 = { "_M_ok", member_row_sty, 40, 1, 1 };
row r6 = { "PADDING", implementation_row_sty, 41, 7, 0 };
obj.start();
obj.add_y_row(r1);
obj.add_y_row(r2);
obj.add_y_row(r3);
obj.add_y_row(r4);
obj.add_y_row(r5);
obj.add_y_row(r6);
obj.finish();
}
// sa-D2
{
svg obj("sa-D2");
row r1 = { "D2", primary_row_sty, 0, 32, 8 };
row r2 = { "C1", base_row_sty, 0, 2, 2 };
row r3 = { "HOLE", implementation_row_sty, 2, 2, 0 };
row r4 = { "_M_state", member_row_sty, 4, 4, 4 };
row r5 = { "_M_index", member_row_sty, 8, 8, 8 };
row r6 = { "_M_array", member_row_sty, 16, 8, 8 };
row r7 = { "_M_ok", member_row_sty, 24, 1, 1 };
row r8 = { "PADDING", implementation_row_sty, 41, 7, 0 };
obj.start();
obj.add_y_row(r1);
obj.add_y_row(r2);
obj.add_y_row(r3);
obj.add_y_row(r4);
obj.add_y_row(r5);
obj.add_y_row(r6);
obj.add_y_row(r7);
obj.add_y_row(r8);
obj.finish();
}
// sa-D2v
{
svg obj("sa-D2v");
row r1 = { "D2v", primary_row_sty, 0, 56, 8 };
row r2 = { "C2", base_row_sty, 0, 16, 16 };
row r3 = { "IMPLEMENTATION", implementation_row_sty, 16, 8, 8 };
row r4 = { "_M_state", member_row_sty, 24, 4, 4 };
row r5 = { "HOLE", implementation_row_sty, 28, 4, 0 };
row r6 = { "_M_index", member_row_sty, 32, 8, 8 };
row r7 = { "_M_array", member_row_sty, 40, 8, 8 };
row r8 = { "_M_ok", member_row_sty, 48, 1, 1 };
row r9 = { "PADDING", implementation_row_sty, 49, 7, 0 };
obj.start();
obj.add_y_row(r1);
obj.add_y_row(r2);
obj.add_y_row(r3);
obj.add_y_row(r4);
obj.add_y_row(r5);
obj.add_y_row(r6);
obj.add_y_row(r7);
obj.add_y_row(r8);
obj.add_y_row(r9);
obj.finish();
}
// sa-D3
{
svg obj("sa-D3");
row r1 = { "D3", primary_row_sty, 0, 24, 8 };
row r2 = { "C1", base_row_sty, 0, 2, 2 };
row r3 = { "HOLE", implementation_row_sty, 2, 6, 0 };
row r4 = { "_M_index", member_row_sty, 8, 8, 8 };
row r5 = { "_M_array", member_row_sty, 16, 8, 8 };
obj.start();
obj.add_y_row(r1);
obj.add_y_row(r2);
obj.add_y_row(r3);
obj.add_y_row(r4);
obj.add_y_row(r5);
obj.finish();
}
// sa-D3v
{
svg obj("sa-D3v");
row r1 = { "D3v", primary_row_sty, 0, 40, 8 };
row r2 = { "C3", base_row_sty, 0, 16, 16 };
row r3 = { "IMPLEMENTATION", implementation_row_sty, 16, 8, 8 };
row r4 = { "_M_index", member_row_sty, 24, 8, 8 };
row r5 = { "_M_array", member_row_sty, 32, 8, 8 };
obj.start();
obj.add_y_row(r1);
obj.add_y_row(r2);
obj.add_y_row(r3);
obj.add_y_row(r4);
obj.add_y_row(r5);
obj.finish();
}
// sa-D4v
{
svg obj("sa-D4v");
row r1 = { "D4v", primary_row_sty, 0, 32, 8 };
row r2 = { "C4", base_row_sty, 0, 16, 16 };
row r3 = { "_M_index", member_row_sty, 16, 8, 8 };
row r4 = { "_M_array", member_row_sty, 24, 8, 8 };
obj.start();
obj.add_y_row(r1);
obj.add_y_row(r2);
obj.add_y_row(r3);
obj.add_y_row(r4);
obj.finish();
}
// sa-Dd1
{
svg obj("sa-Dd1");
row r1 = { "Dd1", primary_row_sty, 0, 32, 8 };
row r2 = { "A", base_row_sty, 0, 24, 8 };
row r3 = { "B", base_row_sty, 24, 8, 8 };
obj.start();
obj.add_y_row(r1);
obj.add_y_row(r2);
obj.add_y_row(r3);
obj.finish();
}
// sa-Dd2
{
svg obj("sa-Dd2");
row r1 = { "Dd2", primary_row_sty, 0, 56, 8 };
row r2 = { "A", base_row_sty, 0, 24, 8 };
row r3 = { "D4v", base_row_sty, 24, 32, 8 };
obj.start();
obj.add_y_row(r1);
obj.add_y_row(r2);
obj.add_y_row(r3);
obj.finish();
}
// sa-Dd3
{
svg obj("sa-Dd3");
row r1 = { "Dd3", primary_row_sty, 0, 56, 8 };
row r2 = { "D2", base_row_sty, 0, 32, 8 };
row r3 = { "D3", base_row_sty, 32, 24, 8 };
obj.start();
obj.add_y_row(r1);
obj.add_y_row(r2);
obj.add_y_row(r3);
obj.finish();
}
// sa-Dd4
{
svg obj("sa-Dd4");
row r1 = { "Dd4", primary_row_sty, 0, 96, 8 };
row r2 = { "D2v", base_row_sty, 0, 56, 8 };
row r3 = { "D3v", base_row_sty, 56, 40, 8 };
obj.start();
obj.add_y_row(r1);
obj.add_y_row(r2);
obj.add_y_row(r3);
obj.finish();
}
// sa-Dd5
{
svg obj("sa-Dd5");
row r1 = { "Dd5", primary_row_sty, 0, 48, 8 };
row r2 = { "D5v1", base_row_sty, 0, 32, 8 };
row r3 = { "D5v2", base_row_sty, 16, 32, 8 };
obj.start();
obj.add_y_row(r1);
obj.add_y_row(r2);
obj.add_y_row(r3);
obj.finish();
}
return 0;
}