//=-------------------------------------------------------------------------=// // Model definitions // // // // Copyright © 2021 Libre en Communs (contact@a-lec.org) // // Copyright © 2021 Adrien Bourmault (neox@a-lec.org) // // // // This file is part of gem-graph. // // // // This program is free software: you can redistribute it and/or modify // // it under the terms of the GNU Affero General Public License as // // published by the Free Software Foundation, either version 3 of the // // License, or (at your option) any later version. // // // // This program is distributed in the hope that it will be useful, // // but WITHOUT ANY WARRANTY; without even the implied warranty of // // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // // GNU Affero General Public License for more details. // // // // You should have received a copy of the GNU Affero General Public License // // along with this program. If not, see . // //=-------------------------------------------------------------------------=// #pragma once #ifndef BASE_H #include "../include/base.h" #endif #include #include #include #include #include #include /* -------------------------------------------------------------------------- */ #define MODEL_STRING_SIZE 64 #define MAX_MODEL_NUMBER 1 #define ARROW_NUMBER 6 #define SITE_NUMBER 2 #define MAX_CYCLES 10 #define MAX_THREAD 0 #define XMAX 39 #define YMAX 0 #define ZMAX 0 #define SPACE_SIZE (XMAX+1) * (YMAX+1) * (ZMAX+1) /* -------------------------------------------------------------------------- */ // -------------------------------------------------------------------------- // // Model init function (and model discovery) // // -------------------------------------------------------------------------- // // void model_system_init (parameters_t *parameters); // -------------------------------------------------------------------------- // // Model stopping function // // -------------------------------------------------------------------------- // // void model_system_shutdown (void); // -------------------------------------------------------------------------- // // Load a model ready to execute // // -------------------------------------------------------------------------- // // int model_load (int id); bool model_init(const char *content, size_t length, const char *basename); // -------------------------------------------------------------------------- // // Unload a model // // -------------------------------------------------------------------------- // // int model_unload (int id); bool model_shutdown(void); // -------------------------------------------------------------------------- // // Add a model to the known model list // // -------------------------------------------------------------------------- // // void model_add_to_known (model_t **newModel); // -------------------------------------------------------------------------- // // Print informations about all models (known and loaded) to the client // // -------------------------------------------------------------------------- // // void print_models (char *buf); // -------------------------------------------------------------------------- // // Launch a model execution // // -------------------------------------------------------------------------- // // int model_run (int id); // -------------------------------------------------------------------------- // // Stop a model execution // // -------------------------------------------------------------------------- // // int model_stop (int id); // -------------------------------------------------------------------------- // // Stop and unload all loaded or running model // // -------------------------------------------------------------------------- // // void model_shutdown (void); // -------------------------------------------------------------------------- // // Parsing primitives // // -------------------------------------------------------------------------- // char model_get_dim(void); long model_get_dim_value(const char *axis); char model_get_multiplicity(void); bool model_get_next_state(char *new_state_id); bool model_get_next_arrow(struct arrow_t *new_arrow, const char *state_id, char dimension);