-- tkz_elements_main.lua
-- date 2025/05/25
-- version 4.00c
-- Copyright 2025  Alain Matthes
-- This work may be distributed and/or modified under the
-- conditions of the LaTeX Project Public License, either version 1.3
-- of this license or (at your option) any later version.
-- The latest version of this license is in
-- http://www.latex-project.org/lppl.txt
-- and version 1.3 or later is part of all distributions of LaTeX
-- version 2005/12/01 or later.
-- This work has the LPPL maintenance status “maintained”.
-- The Current Maintainer of this work is Alain Matthes.

tkz_reserved_names = {}  -- liste des noms à ne pas utiliser

local modules = {
   "circle", "constants", "conic",  "line", "matrix", "occs", "parallelogram", "path",  "point", "quadrilateral", "rectangle", "regular_polygon", "square",  "triangle",  "utils", "vector"
}

for _, name in ipairs(modules) do
  local modname = "tkz_elements_" .. name
  require(modname)
  -- Registers the name if it corresponds to a constructor (not utils/constants)   
  if not ( name == "constants") then
    table.insert(tkz_reserved_names, name)
  end
end

require "tkz_elements_functions_misc.lua"
require "tkz_elements_functions_maths.lua"
require "tkz_elements_functions_intersections.lua"
require "tkz_elements_functions_points.lua"
require "tkz_elements_functions_lines.lua"
require "tkz_elements_functions_circles.lua"
require "tkz_elements_functions_triangles.lua"
require "tkz_elements_functions_regular.lua"
require "tkz_elements_functions_matrices.lua"
require "tkz_elements_functions_conics.lua"
require "tkz_elements_functions_vectors.lua"
require "tkz_elements_functions_path.lua"
-- Initialize elements

function init_elements()
    local tables_to_clear = {
        "C", "CO", "L", "M", "O",
        "P", "PA", "Q", "R", "RP", "S", "T",
            "V", "z"
    }
    for _, name in ipairs(tables_to_clear) do
        _G[name] = {}
    end
end

