diff --git a/build.sh b/build.sh index ed2d4ea..5752f23 100755 --- a/build.sh +++ b/build.sh @@ -58,7 +58,7 @@ function build { show_success "Compilation completed." } -# Execute +# Execute function execute { local executable="$APP_NAME" local command="./$executable" @@ -79,6 +79,7 @@ function show_help { echo -e "\t-rbuild, -rb : \t➔ Clean before rebuilding and execute (alternative)" echo -e "\t-debug, -d : \t➔ Configure compilation in debug mode" echo -e "\t-run, -r : \t➔ Execute the generated executable" + echo -e "\t-build, -b : \t➔ Only compile (no cleaning or execution)" echo -e "\t-clean, -c : \t➔ Clean before rebuilding and execute" echo -e "\t-docs : \t➔ Generate Doxygen documentation" echo -e "\t--help, -h : \t➔ Display help" @@ -117,6 +118,10 @@ while [ "$#" -gt 0 ]; do execute shift ;; + -build | -b) + build + shift + ;; -docs) generate_docs shift @@ -131,4 +136,4 @@ while [ "$#" -gt 0 ]; do ;; esac shift -done \ No newline at end of file +done diff --git a/docs/html/bc_s.png b/docs/html/bc_s.png deleted file mode 100644 index 224b29a..0000000 Binary files a/docs/html/bc_s.png and /dev/null differ diff --git a/docs/html/bc_sd.png b/docs/html/bc_sd.png deleted file mode 100644 index 31ca888..0000000 Binary files a/docs/html/bc_sd.png and /dev/null differ diff --git a/docs/html/client_8c.html b/docs/html/client_8c.html deleted file mode 100644 index 542f4a9..0000000 --- a/docs/html/client_8c.html +++ /dev/null @@ -1,586 +0,0 @@ - - - - - - - -My Project: src/app/core_logic/client.c File Reference - - - - - - - - - -
-
- - - - - - -
-
My Project -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Macros | -Functions
-
client.c File Reference
-
-
- -

Fonctions liées à la gestion des clients et de leur panier. -More...

-
#include <stdio.h>
-#include "client.h"
-
- - - - - -

-Macros

-#define MAX_ARTICLES   100
 
-#define MAX_CLIENTS   100
 
- - - - - - - - - - - - - - - - - - - - - - -

-Functions

int charger_clients (int numeros[], float cagnottes[], int suspendues[], int tPhysique)
 Charge les données des clients à partir d'un fichier.
 
void ajouter_article_au_panier (int numeroClient, int references[], float poids[], float volume[], float prixUnitaire[], int numeros[], float cagnottes[], int suspendues[], int nombreArticles, int nombreClients, float volumeCoffre, float chargeMaximale, int panier[], int quantites[], int *taillePanier)
 Ajoute un article au panier du client.
 
void supprimer_article_du_panier (int panier[], int quantites[], int *taillePanier)
 Supprime un article du panier du client.
 
void affiche_recap_panier (int panier[], int taillePanier, int references[], float poids[], float volume[], float prixUnitaire[], int quantites[])
 Affiche un récapitulatif du contenu du panier.
 
void modifier_quantite_article_panier (int panier[], int quantites[], int *taillePanier)
 Modifie la quantité d'un article dans le panier du client.
 
void reinitialiser_panier (int panier[], int quantites[], int *taillePanier)
 Réinitialise le panier du client.
 
void deduire_cagnotte (int numeroClient, float montant, int numeros[], float cagnottes[], int nombreClients, int suspendus[])
 Déduit un montant de la cagnotte du client.
 
-

Detailed Description

-

Fonctions liées à la gestion des clients et de leur panier.

-

Function Documentation

- -

◆ affiche_recap_panier()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void affiche_recap_panier (int panier[],
int taillePanier,
int references[],
float poids[],
float volume[],
float prixUnitaire[],
int quantites[] 
)
-
- -

Affiche un récapitulatif du contenu du panier.

-

Cette fonction permet d'afficher un récapitulatif du contenu du panier.

-
Parameters
- - - - - - - - -
panier- Tableau des références des articles dans le panier.
taillePanier- Taille du panier.
references- Tableau des références des articles.
poids- Tableau des poids des articles.
volume- Tableau des volumes des articles.
prixUnitaire- Tableau des prix unitaires des articles.
quantites- Tableau des quantités de chaque article dans le panier.
-
-
- -
-
- -

◆ ajouter_article_au_panier()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void ajouter_article_au_panier (int numeroClient,
int references[],
float poids[],
float volume[],
float prixUnitaire[],
int numeros[],
float cagnottes[],
int suspendues[],
int nombreArticles,
int nombreClients,
float volumeCoffre,
float chargeMaximale,
int panier[],
int quantites[],
int * taillePanier 
)
-
- -

Ajoute un article au panier du client.

-

Cette fonction permet d'ajouter un article au panier du client.

-
Parameters
- - - - - - - - - - - - - - - - -
numeroClient- Numéro du client.
references- Tableau des références des articles.
poids- Tableau des poids des articles.
volume- Tableau des volumes des articles.
prixUnitaire- Tableau des prix unitaires des articles.
numeros- Tableau des numéros de clients.
cagnottes- Tableau des cagnottes des clients.
suspendues- Tableau des états de suspension des clients.
nombreArticles- Nombre d'articles disponibles.
nombreClients- Nombre de clients.
volumeCoffre- Volume total du coffre.
chargeMaximale- Charge maximale du coffre.
panier- Tableau des références des articles dans le panier.
quantites- Tableau des quantités de chaque article dans le panier.
taillePanier- Taille du panier.
-
-
- -
-
- -

◆ charger_clients()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int charger_clients (int numeros[],
float cagnottes[],
int suspendues[],
int tPhysique 
)
-
- -

Charge les données des clients à partir d'un fichier.

-

Cette fonction permet de charger les données des clients à partir d'un fichier.

-
Parameters
- - - - - -
numeros- Tableau des numéros de clients.
cagnottes- Tableau des cagnottes des clients.
suspendues- Tableau des états de suspension des clients.
tPhysique- Taille du tableau physique.
-
-
-
Returns
Le nombre de clients chargés ou -1 en cas d'erreur.
- -
-
- -

◆ deduire_cagnotte()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void deduire_cagnotte (int numeroClient,
float montant,
int numeros[],
float cagnottes[],
int nombreClients,
int suspendus[] 
)
-
- -

Déduit un montant de la cagnotte du client.

-

Cette fonction permet de déduire un montant de la cagnotte du client.

-
Parameters
- - - - - - - -
numeroClient- Numéro du client.
montant- Montant à déduire de la cagnotte.
numeros- Tableau des numéros de clients.
cagnottes- Tableau des cagnottes des clients.
nombreClients- Nombre de clients.
suspendus- Tableau des états de suspension des clients.
-
-
- -
-
- -

◆ modifier_quantite_article_panier()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void modifier_quantite_article_panier (int panier[],
int quantites[],
int * taillePanier 
)
-
- -

Modifie la quantité d'un article dans le panier du client.

-

Cette fonction permet de modifier la quantité d'un article dans le panier du client.

-
Parameters
- - - - -
panier- Tableau des références des articles dans le panier.
quantites- Tableau des quantités de chaque article dans le panier.
taillePanier- Taille du panier.
-
-
- -
-
- -

◆ reinitialiser_panier()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void reinitialiser_panier (int panier[],
int quantites[],
int * taillePanier 
)
-
- -

Réinitialise le panier du client.

-

Cette fonction permet de réinitialiser le panier du client.

-
Parameters
- - - - -
panier- Tableau des références des articles dans le panier.
quantites- Tableau des quantités de chaque article dans le panier.
taillePanier- Taille du panier.
-
-
- -
-
- -

◆ supprimer_article_du_panier()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void supprimer_article_du_panier (int panier[],
int quantites[],
int * taillePanier 
)
-
- -

Supprime un article du panier du client.

-

Cette fonction permet de supprimer un article du panier du client.

-
Parameters
- - - - -
panier- Tableau des références des articles dans le panier.
quantites- Tableau des quantités de chaque article dans le panier.
taillePanier- Taille du panier.
-
-
- -
-
-
- - - - diff --git a/docs/html/client_8h.html b/docs/html/client_8h.html deleted file mode 100644 index bdebd54..0000000 --- a/docs/html/client_8h.html +++ /dev/null @@ -1,655 +0,0 @@ - - - - - - - -My Project: src/app/core_logic/client.h File Reference - - - - - - - - - -
-
- - - - - - -
-
My Project -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Functions
-
client.h File Reference
-
-
- -

Fonctions liées à la gestion des clients et de leur panier. -More...

-
#include <stdio.h>
-#include <stdlib.h>
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - -

-Functions

int charger_clients (int numeros[], float cagnottes[], int suspendues[], int tPhysique)
 Charge les données des clients à partir d'un fichier.
 
void ajouter_article_au_panier (int numeroClient, int references[], float poids[], float volume[], float prixUnitaire[], int numeros[], float cagnottes[], int suspendues[], int nombreArticles, int nombreClients, float volumeCoffre, float chargeMaximale, int panier[], int quantites[], int *taillePanier)
 Ajoute un article au panier du client.
 
void supprimer_article_du_panier (int panier[], int quantites[], int *taillePanier)
 Supprime un article du panier du client.
 
void affiche_recap_panier (int panier[], int taillePanier, int references[], float poids[], float volume[], float prixUnitaire[], int quantites[])
 Affiche un récapitulatif du contenu du panier.
 
void modifier_quantite_article_panier (int panier[], int quantites[], int *taillePanier)
 Modifie la quantité d'un article dans le panier du client.
 
void reinitialiser_panier (int panier[], int quantites[], int *taillePanier)
 Réinitialise le panier du client.
 
void deduire_cagnotte (int numeroClient, float montant, int numeros[], float cagnottes[], int nombreClients, int suspendus[])
 Déduit un montant de la cagnotte du client.
 
-

Detailed Description

-

Fonctions liées à la gestion des clients et de leur panier.

-

Function Documentation

- -

◆ affiche_recap_panier()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void affiche_recap_panier (int panier[],
int taillePanier,
int references[],
float poids[],
float volume[],
float prixUnitaire[],
int quantites[] 
)
-
- -

Affiche un récapitulatif du contenu du panier.

-
Parameters
- - - - - - - - -
panier- Tableau des références des articles dans le panier.
taillePanier- Taille du panier.
references- Tableau des références des articles.
poids- Tableau des poids des articles.
volume- Tableau des volumes des articles.
prixUnitaire- Tableau des prix unitaires des articles.
quantites- Tableau des quantités de chaque article dans le panier.
-
-
-

Cette fonction permet d'afficher un récapitulatif du contenu du panier.

-
Parameters
- - - - - - - - -
panier- Tableau des références des articles dans le panier.
taillePanier- Taille du panier.
references- Tableau des références des articles.
poids- Tableau des poids des articles.
volume- Tableau des volumes des articles.
prixUnitaire- Tableau des prix unitaires des articles.
quantites- Tableau des quantités de chaque article dans le panier.
-
-
- -
-
- -

◆ ajouter_article_au_panier()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void ajouter_article_au_panier (int numeroClient,
int references[],
float poids[],
float volume[],
float prixUnitaire[],
int numeros[],
float cagnottes[],
int suspendues[],
int nombreArticles,
int nombreClients,
float volumeCoffre,
float chargeMaximale,
int panier[],
int quantites[],
int * taillePanier 
)
-
- -

Ajoute un article au panier du client.

-
Parameters
- - - - - - - - - - - - - - - - -
numeroClient- Numéro du client.
references- Tableau des références des articles.
poids- Tableau des poids des articles.
volume- Tableau des volumes des articles.
prixUnitaire- Tableau des prix unitaires des articles.
numeros- Tableau des numéros de clients.
cagnottes- Tableau des cagnottes des clients.
suspendues- Tableau des états de suspension des clients.
nombreArticles- Nombre d'articles disponibles.
nombreClients- Nombre de clients.
volumeCoffre- Volume total du coffre.
chargeMaximale- Charge maximale du coffre.
panier- Tableau des références des articles dans le panier.
quantites- Tableau des quantités de chaque article dans le panier.
taillePanier- Taille du panier.
-
-
-

Cette fonction permet d'ajouter un article au panier du client.

-
Parameters
- - - - - - - - - - - - - - - - -
numeroClient- Numéro du client.
references- Tableau des références des articles.
poids- Tableau des poids des articles.
volume- Tableau des volumes des articles.
prixUnitaire- Tableau des prix unitaires des articles.
numeros- Tableau des numéros de clients.
cagnottes- Tableau des cagnottes des clients.
suspendues- Tableau des états de suspension des clients.
nombreArticles- Nombre d'articles disponibles.
nombreClients- Nombre de clients.
volumeCoffre- Volume total du coffre.
chargeMaximale- Charge maximale du coffre.
panier- Tableau des références des articles dans le panier.
quantites- Tableau des quantités de chaque article dans le panier.
taillePanier- Taille du panier.
-
-
- -
-
- -

◆ charger_clients()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int charger_clients (int numeros[],
float cagnottes[],
int suspendues[],
int tPhysique 
)
-
- -

Charge les données des clients à partir d'un fichier.

-
Parameters
- - - - - -
numeros- Tableau des numéros de clients.
cagnottes- Tableau des cagnottes des clients.
suspendues- Tableau des états de suspension des clients.
tPhysique- Taille du tableau physique.
-
-
-
Returns
Le nombre de clients chargés ou -1 en cas d'erreur.
-

Cette fonction permet de charger les données des clients à partir d'un fichier.

-
Parameters
- - - - - -
numeros- Tableau des numéros de clients.
cagnottes- Tableau des cagnottes des clients.
suspendues- Tableau des états de suspension des clients.
tPhysique- Taille du tableau physique.
-
-
-
Returns
Le nombre de clients chargés ou -1 en cas d'erreur.
- -
-
- -

◆ deduire_cagnotte()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void deduire_cagnotte (int numeroClient,
float montant,
int numeros[],
float cagnottes[],
int nombreClients,
int suspendus[] 
)
-
- -

Déduit un montant de la cagnotte du client.

-
Parameters
- - - - - - - -
numeroClient- Numéro du client.
montant- Montant à déduire de la cagnotte.
numeros- Tableau des numéros de clients.
cagnottes- Tableau des cagnottes des clients.
nombreClients- Nombre de clients.
suspendus- Tableau des états de suspension des clients.
-
-
-

Cette fonction permet de déduire un montant de la cagnotte du client.

-
Parameters
- - - - - - - -
numeroClient- Numéro du client.
montant- Montant à déduire de la cagnotte.
numeros- Tableau des numéros de clients.
cagnottes- Tableau des cagnottes des clients.
nombreClients- Nombre de clients.
suspendus- Tableau des états de suspension des clients.
-
-
- -
-
- -

◆ modifier_quantite_article_panier()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void modifier_quantite_article_panier (int panier[],
int quantites[],
int * taillePanier 
)
-
- -

Modifie la quantité d'un article dans le panier du client.

-
Parameters
- - - - -
panier- Tableau des références des articles dans le panier.
quantites- Tableau des quantités de chaque article dans le panier.
taillePanier- Taille du panier.
-
-
-

Cette fonction permet de modifier la quantité d'un article dans le panier du client.

-
Parameters
- - - - -
panier- Tableau des références des articles dans le panier.
quantites- Tableau des quantités de chaque article dans le panier.
taillePanier- Taille du panier.
-
-
- -
-
- -

◆ reinitialiser_panier()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void reinitialiser_panier (int panier[],
int quantites[],
int * taillePanier 
)
-
- -

Réinitialise le panier du client.

-
Parameters
- - - - -
panier- Tableau des références des articles dans le panier.
quantites- Tableau des quantités de chaque article dans le panier.
taillePanier- Taille du panier.
-
-
-

Cette fonction permet de réinitialiser le panier du client.

-
Parameters
- - - - -
panier- Tableau des références des articles dans le panier.
quantites- Tableau des quantités de chaque article dans le panier.
taillePanier- Taille du panier.
-
-
- -
-
- -

◆ supprimer_article_du_panier()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void supprimer_article_du_panier (int panier[],
int quantites[],
int * taillePanier 
)
-
- -

Supprime un article du panier du client.

-
Parameters
- - - - -
panier- Tableau des références des articles dans le panier.
quantites- Tableau des quantités de chaque article dans le panier.
taillePanier- Taille du panier.
-
-
-

Cette fonction permet de supprimer un article du panier du client.

-
Parameters
- - - - -
panier- Tableau des références des articles dans le panier.
quantites- Tableau des quantités de chaque article dans le panier.
taillePanier- Taille du panier.
-
-
- -
-
-
- - - - diff --git a/docs/html/client_8h_source.html b/docs/html/client_8h_source.html deleted file mode 100644 index 4e513a4..0000000 --- a/docs/html/client_8h_source.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -My Project: src/app/core_logic/client.h Source File - - - - - - - - - -
-
- - - - - - -
-
My Project -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
client.h
-
-
-Go to the documentation of this file.
1#ifndef SAE_101_CLIENT_H
-
2#define SAE_101_CLIENT_H
-
3
-
4#include <stdio.h>
-
5#include <stdlib.h>
-
6
-
21int charger_clients(int numeros[], float cagnottes[], int suspendues[], int tPhysique);
-
22
-
42void ajouter_article_au_panier(int numeroClient, int references[], float poids[], float volume[], float prixUnitaire[],
-
43 int numeros[], float cagnottes[], int suspendues[], int nombreArticles, int nombreClients,
-
44 float volumeCoffre, float chargeMaximale, int panier[], int quantites[], int *taillePanier);
-
45
-
53void supprimer_article_du_panier(int panier[], int quantites[], int *taillePanier);
-
54
-
66void affiche_recap_panier(int panier[], int taillePanier, int references[], float poids[], float volume[],
-
67 float prixUnitaire[], int quantites[]);
-
68
-
76void modifier_quantite_article_panier(int panier[], int quantites[], int *taillePanier);
-
77
-
85void reinitialiser_panier(int panier[], int quantites[], int *taillePanier);
-
86
-
97void deduire_cagnotte(int numeroClient, float montant, int numeros[], float cagnottes[], int nombreClients, int suspendus[]);
-
98
-
99#endif // SAE_101_CLIENT_H
-
void ajouter_article_au_panier(int numeroClient, int references[], float poids[], float volume[], float prixUnitaire[], int numeros[], float cagnottes[], int suspendues[], int nombreArticles, int nombreClients, float volumeCoffre, float chargeMaximale, int panier[], int quantites[], int *taillePanier)
Ajoute un article au panier du client.
Definition client.c:68
-
void deduire_cagnotte(int numeroClient, float montant, int numeros[], float cagnottes[], int nombreClients, int suspendus[])
Déduit un montant de la cagnotte du client.
Definition client.c:319
-
int charger_clients(int numeros[], float cagnottes[], int suspendues[], int tPhysique)
Charge les données des clients à partir d'un fichier.
Definition client.c:23
-
void affiche_recap_panier(int panier[], int taillePanier, int references[], float poids[], float volume[], float prixUnitaire[], int quantites[])
Affiche un récapitulatif du contenu du panier.
Definition client.c:211
-
void reinitialiser_panier(int panier[], int quantites[], int *taillePanier)
Réinitialise le panier du client.
Definition client.c:302
-
void supprimer_article_du_panier(int panier[], int quantites[], int *taillePanier)
Supprime un article du panier du client.
Definition client.c:165
-
void modifier_quantite_article_panier(int panier[], int quantites[], int *taillePanier)
Modifie la quantité d'un article dans le panier du client.
Definition client.c:258
-
- - - - diff --git a/docs/html/closed.png b/docs/html/closed.png deleted file mode 100644 index 98cc2c9..0000000 Binary files a/docs/html/closed.png and /dev/null differ diff --git a/docs/html/dir_5194e5fea318fda12687127c23f8aba1.html b/docs/html/dir_5194e5fea318fda12687127c23f8aba1.html deleted file mode 100644 index c9e3de1..0000000 --- a/docs/html/dir_5194e5fea318fda12687127c23f8aba1.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -My Project: src/app Directory Reference - - - - - - - - - -
-
- - - - - - -
-
My Project -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
app Directory Reference
-
-
- - - - - - -

-Directories

 core_logic
 
 interface
 
-
- - - - diff --git a/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html deleted file mode 100644 index cd33c1f..0000000 --- a/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -My Project: src Directory Reference - - - - - - - - - -
-
- - - - - - -
-
My Project -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
src Directory Reference
-
-
- - - - - -

-Files

 main.c
 Programme principal pour choisir une interface et lancer l'application.
 
-
- - - - diff --git a/docs/html/dir_9a14f97cc8a04806f17ae0e592fed671.html b/docs/html/dir_9a14f97cc8a04806f17ae0e592fed671.html deleted file mode 100644 index a3f4311..0000000 --- a/docs/html/dir_9a14f97cc8a04806f17ae0e592fed671.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -My Project: src/app/interface Directory Reference - - - - - - - - - -
-
- - - - - - -
-
My Project -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
interface Directory Reference
-
-
- - - - - - - - - - - - - - -

-Files

 interface_client.c
 Implémentation des fonctions liées à l'interface client.
 
 interface_client.h
 En-tête des fonctions liées à l'interface client.
 
 interface_resp.c
 Implémentation des fonctions liées à l'interface du responsable.
 
 interface_resp.h
 En-tête des fonctions liées à l'interface du responsable.
 
-
- - - - diff --git a/docs/html/dir_b5c97184117f1879a3567c3d06daf03f.html b/docs/html/dir_b5c97184117f1879a3567c3d06daf03f.html deleted file mode 100644 index 86bc31d..0000000 --- a/docs/html/dir_b5c97184117f1879a3567c3d06daf03f.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -My Project: src/app/core_logic Directory Reference - - - - - - - - - -
-
- - - - - - -
-
My Project -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
core_logic Directory Reference
-
-
- - - - - - - - - - - - - - -

-Files

 client.c
 Fonctions liées à la gestion des clients et de leur panier.
 
 client.h
 Fonctions liées à la gestion des clients et de leur panier.
 
 responsable.c
 Définition des fonctions de responsable.c.
 
 responsable.h
 Déclaration des fonctions de responsable.c.
 
-
- - - - diff --git a/docs/html/doc.svg b/docs/html/doc.svg deleted file mode 100644 index 0b928a5..0000000 --- a/docs/html/doc.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - diff --git a/docs/html/docd.svg b/docs/html/docd.svg deleted file mode 100644 index ac18b27..0000000 --- a/docs/html/docd.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - diff --git a/docs/html/doxygen.css b/docs/html/doxygen.css deleted file mode 100644 index 009a9b5..0000000 --- a/docs/html/doxygen.css +++ /dev/null @@ -1,2045 +0,0 @@ -/* The standard CSS for doxygen 1.9.8*/ - -html { -/* page base colors */ ---page-background-color: white; ---page-foreground-color: black; ---page-link-color: #3D578C; ---page-visited-link-color: #4665A2; - -/* index */ ---index-odd-item-bg-color: #F8F9FC; ---index-even-item-bg-color: white; ---index-header-color: black; ---index-separator-color: #A0A0A0; - -/* header */ ---header-background-color: #F9FAFC; ---header-separator-color: #C4CFE5; ---header-gradient-image: url('nav_h.png'); ---group-header-separator-color: #879ECB; ---group-header-color: #354C7B; ---inherit-header-color: gray; - ---footer-foreground-color: #2A3D61; ---footer-logo-width: 104px; ---citation-label-color: #334975; ---glow-color: cyan; - ---title-background-color: white; ---title-separator-color: #5373B4; ---directory-separator-color: #9CAFD4; ---separator-color: #4A6AAA; - ---blockquote-background-color: #F7F8FB; ---blockquote-border-color: #9CAFD4; - ---scrollbar-thumb-color: #9CAFD4; ---scrollbar-background-color: #F9FAFC; - ---icon-background-color: #728DC1; ---icon-foreground-color: white; ---icon-doc-image: url('doc.svg'); ---icon-folder-open-image: url('folderopen.svg'); ---icon-folder-closed-image: url('folderclosed.svg'); - -/* brief member declaration list */ ---memdecl-background-color: #F9FAFC; ---memdecl-separator-color: #DEE4F0; ---memdecl-foreground-color: #555; ---memdecl-template-color: #4665A2; - -/* detailed member list */ ---memdef-border-color: #A8B8D9; ---memdef-title-background-color: #E2E8F2; ---memdef-title-gradient-image: url('nav_f.png'); ---memdef-proto-background-color: #DFE5F1; ---memdef-proto-text-color: #253555; ---memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); ---memdef-doc-background-color: white; ---memdef-param-name-color: #602020; ---memdef-template-color: #4665A2; - -/* tables */ ---table-cell-border-color: #2D4068; ---table-header-background-color: #374F7F; ---table-header-foreground-color: #FFFFFF; - -/* labels */ ---label-background-color: #728DC1; ---label-left-top-border-color: #5373B4; ---label-right-bottom-border-color: #C4CFE5; ---label-foreground-color: white; - -/** navigation bar/tree/menu */ ---nav-background-color: #F9FAFC; ---nav-foreground-color: #364D7C; ---nav-gradient-image: url('tab_b.png'); ---nav-gradient-hover-image: url('tab_h.png'); ---nav-gradient-active-image: url('tab_a.png'); ---nav-gradient-active-image-parent: url("../tab_a.png"); ---nav-separator-image: url('tab_s.png'); ---nav-breadcrumb-image: url('bc_s.png'); ---nav-breadcrumb-border-color: #C2CDE4; ---nav-splitbar-image: url('splitbar.png'); ---nav-font-size-level1: 13px; ---nav-font-size-level2: 10px; ---nav-font-size-level3: 9px; ---nav-text-normal-color: #283A5D; ---nav-text-hover-color: white; ---nav-text-active-color: white; ---nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); ---nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-menu-button-color: #364D7C; ---nav-menu-background-color: white; ---nav-menu-foreground-color: #555555; ---nav-menu-toggle-color: rgba(255, 255, 255, 0.5); ---nav-arrow-color: #9CAFD4; ---nav-arrow-selected-color: #9CAFD4; - -/* table of contents */ ---toc-background-color: #F4F6FA; ---toc-border-color: #D8DFEE; ---toc-header-color: #4665A2; ---toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); - -/** search field */ ---search-background-color: white; ---search-foreground-color: #909090; ---search-magnification-image: url('mag.svg'); ---search-magnification-select-image: url('mag_sel.svg'); ---search-active-color: black; ---search-filter-background-color: #F9FAFC; ---search-filter-foreground-color: black; ---search-filter-border-color: #90A5CE; ---search-filter-highlight-text-color: white; ---search-filter-highlight-bg-color: #3D578C; ---search-results-foreground-color: #425E97; ---search-results-background-color: #EEF1F7; ---search-results-border-color: black; ---search-box-shadow: inset 0.5px 0.5px 3px 0px #555; - -/** code fragments */ ---code-keyword-color: #008000; ---code-type-keyword-color: #604020; ---code-flow-keyword-color: #E08000; ---code-comment-color: #800000; ---code-preprocessor-color: #806020; ---code-string-literal-color: #002080; ---code-char-literal-color: #008080; ---code-xml-cdata-color: black; ---code-vhdl-digit-color: #FF00FF; ---code-vhdl-char-color: #000000; ---code-vhdl-keyword-color: #700070; ---code-vhdl-logic-color: #FF0000; ---code-link-color: #4665A2; ---code-external-link-color: #4665A2; ---fragment-foreground-color: black; ---fragment-background-color: #FBFCFD; ---fragment-border-color: #C4CFE5; ---fragment-lineno-border-color: #00FF00; ---fragment-lineno-background-color: #E8E8E8; ---fragment-lineno-foreground-color: black; ---fragment-lineno-link-fg-color: #4665A2; ---fragment-lineno-link-bg-color: #D8D8D8; ---fragment-lineno-link-hover-fg-color: #4665A2; ---fragment-lineno-link-hover-bg-color: #C8C8C8; ---tooltip-foreground-color: black; ---tooltip-background-color: white; ---tooltip-border-color: gray; ---tooltip-doc-color: grey; ---tooltip-declaration-color: #006318; ---tooltip-link-color: #4665A2; ---tooltip-shadow: 1px 1px 7px gray; ---fold-line-color: #808080; ---fold-minus-image: url('minus.svg'); ---fold-plus-image: url('plus.svg'); ---fold-minus-image-relpath: url('../../minus.svg'); ---fold-plus-image-relpath: url('../../plus.svg'); - -/** font-family */ ---font-family-normal: Roboto,sans-serif; ---font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; ---font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; ---font-family-title: Tahoma,Arial,sans-serif; ---font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; ---font-family-search: Arial,Verdana,sans-serif; ---font-family-icon: Arial,Helvetica; ---font-family-tooltip: Roboto,sans-serif; - -} - -@media (prefers-color-scheme: dark) { - html:not(.dark-mode) { - color-scheme: dark; - -/* page base colors */ ---page-background-color: black; ---page-foreground-color: #C9D1D9; ---page-link-color: #90A5CE; ---page-visited-link-color: #A3B4D7; - -/* index */ ---index-odd-item-bg-color: #0B101A; ---index-even-item-bg-color: black; ---index-header-color: #C4CFE5; ---index-separator-color: #334975; - -/* header */ ---header-background-color: #070B11; ---header-separator-color: #141C2E; ---header-gradient-image: url('nav_hd.png'); ---group-header-separator-color: #283A5D; ---group-header-color: #90A5CE; ---inherit-header-color: #A0A0A0; - ---footer-foreground-color: #5B7AB7; ---footer-logo-width: 60px; ---citation-label-color: #90A5CE; ---glow-color: cyan; - ---title-background-color: #090D16; ---title-separator-color: #354C79; ---directory-separator-color: #283A5D; ---separator-color: #283A5D; - ---blockquote-background-color: #101826; ---blockquote-border-color: #283A5D; - ---scrollbar-thumb-color: #283A5D; ---scrollbar-background-color: #070B11; - ---icon-background-color: #334975; ---icon-foreground-color: #C4CFE5; ---icon-doc-image: url('docd.svg'); ---icon-folder-open-image: url('folderopend.svg'); ---icon-folder-closed-image: url('folderclosedd.svg'); - -/* brief member declaration list */ ---memdecl-background-color: #0B101A; ---memdecl-separator-color: #2C3F65; ---memdecl-foreground-color: #BBB; ---memdecl-template-color: #7C95C6; - -/* detailed member list */ ---memdef-border-color: #233250; ---memdef-title-background-color: #1B2840; ---memdef-title-gradient-image: url('nav_fd.png'); ---memdef-proto-background-color: #19243A; ---memdef-proto-text-color: #9DB0D4; ---memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); ---memdef-doc-background-color: black; ---memdef-param-name-color: #D28757; ---memdef-template-color: #7C95C6; - -/* tables */ ---table-cell-border-color: #283A5D; ---table-header-background-color: #283A5D; ---table-header-foreground-color: #C4CFE5; - -/* labels */ ---label-background-color: #354C7B; ---label-left-top-border-color: #4665A2; ---label-right-bottom-border-color: #283A5D; ---label-foreground-color: #CCCCCC; - -/** navigation bar/tree/menu */ ---nav-background-color: #101826; ---nav-foreground-color: #364D7C; ---nav-gradient-image: url('tab_bd.png'); ---nav-gradient-hover-image: url('tab_hd.png'); ---nav-gradient-active-image: url('tab_ad.png'); ---nav-gradient-active-image-parent: url("../tab_ad.png"); ---nav-separator-image: url('tab_sd.png'); ---nav-breadcrumb-image: url('bc_sd.png'); ---nav-breadcrumb-border-color: #2A3D61; ---nav-splitbar-image: url('splitbard.png'); ---nav-font-size-level1: 13px; ---nav-font-size-level2: 10px; ---nav-font-size-level3: 9px; ---nav-text-normal-color: #B6C4DF; ---nav-text-hover-color: #DCE2EF; ---nav-text-active-color: #DCE2EF; ---nav-text-normal-shadow: 0px 1px 1px black; ---nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-menu-button-color: #B6C4DF; ---nav-menu-background-color: #05070C; ---nav-menu-foreground-color: #BBBBBB; ---nav-menu-toggle-color: rgba(255, 255, 255, 0.2); ---nav-arrow-color: #334975; ---nav-arrow-selected-color: #90A5CE; - -/* table of contents */ ---toc-background-color: #151E30; ---toc-border-color: #202E4A; ---toc-header-color: #A3B4D7; ---toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); - -/** search field */ ---search-background-color: black; ---search-foreground-color: #C5C5C5; ---search-magnification-image: url('mag_d.svg'); ---search-magnification-select-image: url('mag_seld.svg'); ---search-active-color: #C5C5C5; ---search-filter-background-color: #101826; ---search-filter-foreground-color: #90A5CE; ---search-filter-border-color: #7C95C6; ---search-filter-highlight-text-color: #BCC9E2; ---search-filter-highlight-bg-color: #283A5D; ---search-results-background-color: #101826; ---search-results-foreground-color: #90A5CE; ---search-results-border-color: #7C95C6; ---search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; - -/** code fragments */ ---code-keyword-color: #CC99CD; ---code-type-keyword-color: #AB99CD; ---code-flow-keyword-color: #E08000; ---code-comment-color: #717790; ---code-preprocessor-color: #65CABE; ---code-string-literal-color: #7EC699; ---code-char-literal-color: #00E0F0; ---code-xml-cdata-color: #C9D1D9; ---code-vhdl-digit-color: #FF00FF; ---code-vhdl-char-color: #C0C0C0; ---code-vhdl-keyword-color: #CF53C9; ---code-vhdl-logic-color: #FF0000; ---code-link-color: #79C0FF; ---code-external-link-color: #79C0FF; ---fragment-foreground-color: #C9D1D9; ---fragment-background-color: black; ---fragment-border-color: #30363D; ---fragment-lineno-border-color: #30363D; ---fragment-lineno-background-color: black; ---fragment-lineno-foreground-color: #6E7681; ---fragment-lineno-link-fg-color: #6E7681; ---fragment-lineno-link-bg-color: #303030; ---fragment-lineno-link-hover-fg-color: #8E96A1; ---fragment-lineno-link-hover-bg-color: #505050; ---tooltip-foreground-color: #C9D1D9; ---tooltip-background-color: #202020; ---tooltip-border-color: #C9D1D9; ---tooltip-doc-color: #D9E1E9; ---tooltip-declaration-color: #20C348; ---tooltip-link-color: #79C0FF; ---tooltip-shadow: none; ---fold-line-color: #808080; ---fold-minus-image: url('minusd.svg'); ---fold-plus-image: url('plusd.svg'); ---fold-minus-image-relpath: url('../../minusd.svg'); ---fold-plus-image-relpath: url('../../plusd.svg'); - -/** font-family */ ---font-family-normal: Roboto,sans-serif; ---font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; ---font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; ---font-family-title: Tahoma,Arial,sans-serif; ---font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; ---font-family-search: Arial,Verdana,sans-serif; ---font-family-icon: Arial,Helvetica; ---font-family-tooltip: Roboto,sans-serif; - -}} -body { - background-color: var(--page-background-color); - color: var(--page-foreground-color); -} - -body, table, div, p, dl { - font-weight: 400; - font-size: 14px; - font-family: var(--font-family-normal); - line-height: 22px; -} - -/* @group Heading Levels */ - -.title { - font-weight: 400; - font-size: 14px; - font-family: var(--font-family-normal); - line-height: 28px; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h1.groupheader { - font-size: 150%; -} - -h2.groupheader { - border-bottom: 1px solid var(--group-header-separator-color); - color: var(--group-header-color); - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -h3.groupheader { - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - -webkit-transition: text-shadow 0.5s linear; - -moz-transition: text-shadow 0.5s linear; - -ms-transition: text-shadow 0.5s linear; - -o-transition: text-shadow 0.5s linear; - transition: text-shadow 0.5s linear; - margin-right: 15px; -} - -h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px var(--glow-color); -} - -dt { - font-weight: bold; -} - -p.startli, p.startdd { - margin-top: 2px; -} - -th p.starttd, th p.intertd, th p.endtd { - font-size: 100%; - font-weight: 700; -} - -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -p.interli { -} - -p.interdd { -} - -p.intertd { -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.navtab { - padding-right: 15px; - text-align: right; - line-height: 110%; -} - -div.navtab table { - border-spacing: 0; -} - -td.navtab { - padding-right: 6px; - padding-left: 6px; -} - -td.navtabHL { - background-image: var(--nav-gradient-active-image); - background-repeat:repeat-x; - padding-right: 6px; - padding-left: 6px; -} - -td.navtabHL a, td.navtabHL a:visited { - color: var(--nav-text-hover-color); - text-shadow: var(--nav-text-hover-shadow); -} - -a.navtab { - font-weight: bold; -} - -div.qindex{ - text-align: center; - width: 100%; - line-height: 140%; - font-size: 130%; - color: var(--index-separator-color); -} - -#main-menu a:focus { - outline: auto; - z-index: 10; - position: relative; -} - -dt.alphachar{ - font-size: 180%; - font-weight: bold; -} - -.alphachar a{ - color: var(--index-header-color); -} - -.alphachar a:hover, .alphachar a:visited{ - text-decoration: none; -} - -.classindex dl { - padding: 25px; - column-count:1 -} - -.classindex dd { - display:inline-block; - margin-left: 50px; - width: 90%; - line-height: 1.15em; -} - -.classindex dl.even { - background-color: var(--index-even-item-bg-color); -} - -.classindex dl.odd { - background-color: var(--index-odd-item-bg-color); -} - -@media(min-width: 1120px) { - .classindex dl { - column-count:2 - } -} - -@media(min-width: 1320px) { - .classindex dl { - column-count:3 - } -} - - -/* @group Link Styling */ - -a { - color: var(--page-link-color); - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: var(--page-visited-link-color); -} - -a:hover { - text-decoration: underline; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: var(--code-link-color); -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: var(--code-external-link-color); -} - -a.code.hl_class { /* style for links to class names in code snippets */ } -a.code.hl_struct { /* style for links to struct names in code snippets */ } -a.code.hl_union { /* style for links to union names in code snippets */ } -a.code.hl_interface { /* style for links to interface names in code snippets */ } -a.code.hl_protocol { /* style for links to protocol names in code snippets */ } -a.code.hl_category { /* style for links to category names in code snippets */ } -a.code.hl_exception { /* style for links to exception names in code snippets */ } -a.code.hl_service { /* style for links to service names in code snippets */ } -a.code.hl_singleton { /* style for links to singleton names in code snippets */ } -a.code.hl_concept { /* style for links to concept names in code snippets */ } -a.code.hl_namespace { /* style for links to namespace names in code snippets */ } -a.code.hl_package { /* style for links to package names in code snippets */ } -a.code.hl_define { /* style for links to macro names in code snippets */ } -a.code.hl_function { /* style for links to function names in code snippets */ } -a.code.hl_variable { /* style for links to variable names in code snippets */ } -a.code.hl_typedef { /* style for links to typedef names in code snippets */ } -a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } -a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } -a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } -a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } -a.code.hl_friend { /* style for links to friend names in code snippets */ } -a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } -a.code.hl_property { /* style for links to property names in code snippets */ } -a.code.hl_event { /* style for links to event names in code snippets */ } -a.code.hl_sequence { /* style for links to sequence names in code snippets */ } -a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -ul { - overflow: visible; -} - -ul.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; - column-count: 3; - list-style-type: none; -} - -#side-nav ul { - overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ -} - -#main-nav ul { - overflow: visible; /* reset ul rule for the navigation bar drop down lists */ -} - -.fragment { - text-align: left; - direction: ltr; - overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ - overflow-y: hidden; -} - -pre.fragment { - border: 1px solid var(--fragment-border-color); - background-color: var(--fragment-background-color); - color: var(--fragment-foreground-color); - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: var(--font-family-monospace); - font-size: 105%; -} - -div.fragment { - padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ - margin: 4px 8px 4px 2px; - color: var(--fragment-foreground-color); - background-color: var(--fragment-background-color); - border: 1px solid var(--fragment-border-color); -} - -div.line { - font-family: var(--font-family-monospace); - font-size: 13px; - min-height: 13px; - line-height: 1.2; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -div.line:after { - content:"\000A"; - white-space: pre; -} - -div.line.glow { - background-color: var(--glow-color); - box-shadow: 0 0 10px var(--glow-color); -} - -span.fold { - margin-left: 5px; - margin-right: 1px; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; - display: inline-block; - width: 12px; - height: 12px; - background-repeat:no-repeat; - background-position:center; -} - -span.lineno { - padding-right: 4px; - margin-right: 9px; - text-align: right; - border-right: 2px solid var(--fragment-lineno-border-color); - color: var(--fragment-lineno-foreground-color); - background-color: var(--fragment-lineno-background-color); - white-space: pre; -} -span.lineno a, span.lineno a:visited { - color: var(--fragment-lineno-link-fg-color); - background-color: var(--fragment-lineno-link-bg-color); -} - -span.lineno a:hover { - color: var(--fragment-lineno-link-hover-fg-color); - background-color: var(--fragment-lineno-link-hover-bg-color); -} - -.lineno { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -div.classindex ul { - list-style: none; - padding-left: 0; -} - -div.classindex span.ai { - display: inline-block; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - color: var(--page-foreground-color); - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 12px; - margin-right: 8px; -} - -p.formulaDsp { - text-align: center; -} - -img.dark-mode-visible { - display: none; -} -img.light-mode-visible { - display: none; -} - -img.formulaDsp { - -} - -img.formulaInl, img.inline { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; - width: var(--footer-logo-width); -} - -.compoundTemplParams { - color: var(--memdecl-template-color); - font-size: 80%; - line-height: 120%; -} - -/* @group Code Colorization */ - -span.keyword { - color: var(--code-keyword-color); -} - -span.keywordtype { - color: var(--code-type-keyword-color); -} - -span.keywordflow { - color: var(--code-flow-keyword-color); -} - -span.comment { - color: var(--code-comment-color); -} - -span.preprocessor { - color: var(--code-preprocessor-color); -} - -span.stringliteral { - color: var(--code-string-literal-color); -} - -span.charliteral { - color: var(--code-char-literal-color); -} - -span.xmlcdata { - color: var(--code-xml-cdata-color); -} - -span.vhdldigit { - color: var(--code-vhdl-digit-color); -} - -span.vhdlchar { - color: var(--code-vhdl-char-color); -} - -span.vhdlkeyword { - color: var(--code-vhdl-keyword-color); -} - -span.vhdllogic { - color: var(--code-vhdl-logic-color); -} - -blockquote { - background-color: var(--blockquote-background-color); - border-left: 2px solid var(--blockquote-border-color); - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -/* @end */ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid var(--table-cell-border-color); -} - -th.dirtab { - background-color: var(--table-header-background-color); - color: var(--table-header-foreground-color); - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid var(--separator-color); -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: var(--glow-color); - box-shadow: 0 0 15px var(--glow-color); -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: var(--memdecl-background-color); - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: var(--memdecl-foreground-color); -} - -.memSeparator { - border-bottom: 1px solid var(--memdecl-separator-color); - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight, .memTemplItemRight { - width: 100%; -} - -.memTemplParams { - color: var(--memdecl-template-color); - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtitle { - padding: 8px; - border-top: 1px solid var(--memdef-border-color); - border-left: 1px solid var(--memdef-border-color); - border-right: 1px solid var(--memdef-border-color); - border-top-right-radius: 4px; - border-top-left-radius: 4px; - margin-bottom: -1px; - background-image: var(--memdef-title-gradient-image); - background-repeat: repeat-x; - background-color: var(--memdef-title-background-color); - line-height: 1.25; - font-weight: 300; - float:left; -} - -.permalink -{ - font-size: 65%; - display: inline-block; - vertical-align: middle; -} - -.memtemplate { - font-size: 80%; - color: var(--memdef-template-color); - font-weight: normal; - margin-left: 9px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px var(--glow-color); -} - -.memname { - font-weight: 400; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid var(--memdef-border-color); - border-left: 1px solid var(--memdef-border-color); - border-right: 1px solid var(--memdef-border-color); - padding: 6px 0px 6px 0px; - color: var(--memdef-proto-text-color); - font-weight: bold; - text-shadow: var(--memdef-proto-text-shadow); - background-color: var(--memdef-proto-background-color); - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; -} - -.overload { - font-family: var(--font-family-monospace); - font-size: 65%; -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid var(--memdef-border-color); - border-left: 1px solid var(--memdef-border-color); - border-right: 1px solid var(--memdef-border-color); - padding: 6px 10px 2px 10px; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: var(--memdef-doc-background-color); - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: var(--memdef-param-name-color); - white-space: nowrap; -} -.paramname em { - font-style: normal; -} -.paramname code { - line-height: 14px; -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype, .tparams .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir, .tparams .paramdir { - font-family: var(--font-family-monospace); - vertical-align: top; -} - -table.mlabels { - border-spacing: 0px; -} - -td.mlabels-left { - width: 100%; - padding: 0px; -} - -td.mlabels-right { - vertical-align: bottom; - padding: 0px; - white-space: nowrap; -} - -span.mlabels { - margin-left: 8px; -} - -span.mlabel { - background-color: var(--label-background-color); - border-top:1px solid var(--label-left-top-border-color); - border-left:1px solid var(--label-left-top-border-color); - border-right:1px solid var(--label-right-bottom-border-color); - border-bottom:1px solid var(--label-right-bottom-border-color); - text-shadow: none; - color: var(--label-foreground-color); - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view inside a (index) page */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid var(--directory-separator-color); - border-bottom: 1px solid var(--directory-separator-color); - width: 100%; -} - -.directory table { - border-collapse:collapse; -} - -.directory td { - margin: 0px; - padding: 0px; - vertical-align: top; -} - -.directory td.entry { - white-space: nowrap; - padding-right: 6px; - padding-top: 3px; -} - -.directory td.entry a { - outline:none; -} - -.directory td.entry a img { - border: none; -} - -.directory td.desc { - width: 100%; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - border-left: 1px solid rgba(0,0,0,0.05); -} - -.directory tr.odd { - padding-left: 6px; - background-color: var(--index-odd-item-bg-color); -} - -.directory tr.even { - padding-left: 6px; - background-color: var(--index-even-item-bg-color); -} - -.directory img { - vertical-align: -30%; -} - -.directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; -} - -.directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: var(--page-link-color); -} - -.arrow { - color: var(--nav-arrow-color); - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - font-size: 80%; - display: inline-block; - width: 16px; - height: 22px; -} - -.icon { - font-family: var(--font-family-icon); - line-height: normal; - font-weight: bold; - font-size: 12px; - height: 14px; - width: 16px; - display: inline-block; - background-color: var(--icon-background-color); - color: var(--icon-foreground-color); - text-align: center; - border-radius: 4px; - margin-left: 2px; - margin-right: 2px; -} - -.icona { - width: 24px; - height: 22px; - display: inline-block; -} - -.iconfopen { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:var(--icon-folder-open-image); - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.iconfclosed { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:var(--icon-folder-closed-image); - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.icondoc { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:var(--icon-doc-image); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -/* @end */ - -div.dynheader { - margin-top: 8px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -address { - font-style: normal; - color: var(--footer-foreground-color); -} - -table.doxtable caption { - caption-side: top; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid var(--table-cell-border-color); - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: var(--table-header-background-color); - color: var(--table-header-foreground-color); - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - margin-bottom: 10px; - border: 1px solid var(--memdef-border-color); - border-spacing: 0px; - border-radius: 4px; - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); -} - -.fieldtable td, .fieldtable th { - padding: 3px 7px 2px; -} - -.fieldtable td.fieldtype, .fieldtable td.fieldname { - white-space: nowrap; - border-right: 1px solid var(--memdef-border-color); - border-bottom: 1px solid var(--memdef-border-color); - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid var(--memdef-border-color); -} - -.fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - -.fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; -} - -.fieldtable tr:last-child td { - border-bottom: none; -} - -.fieldtable th { - background-image: var(--memdef-title-gradient-image); - background-repeat:repeat-x; - background-color: var(--memdef-title-background-color); - font-size: 90%; - color: var(--memdef-proto-text-color); - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - font-weight: 400; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid var(--memdef-border-color); -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: var(--nav-gradient-image); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image: var(--nav-gradient-image); - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:var(--nav-text-normal-color); - border:solid 1px var(--nav-breadcrumb-border-color); - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:var(--nav-breadcrumb-image); - background-repeat:no-repeat; - background-position:right; - color: var(--nav-foreground-color); -} - -.navpath li.navelem a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; - color: var(--nav-text-normal-color); - font-family: var(--font-family-nav); - text-shadow: var(--nav-text-normal-shadow); - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color: var(--nav-text-hover-color); - text-shadow: var(--nav-text-hover-shadow); -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color: var(--footer-foreground-color); - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -table.classindex -{ - margin: 10px; - white-space: nowrap; - margin-left: 3%; - margin-right: 3%; - width: 94%; - border: 0; - border-spacing: 0; - padding: 0; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image: var(--header-gradient-image); - background-repeat:repeat-x; - background-color: var(--header-background-color); - margin: 0px; - border-bottom: 1px solid var(--header-separator-color); -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -.PageDocRTL-title div.headertitle { - text-align: right; - direction: rtl; -} - -dl { - padding: 0 0 0 0; -} - -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ -dl.section { - margin-left: 0px; - padding-left: 0px; -} - -dl.note { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #D0C000; -} - -dl.warning, dl.attention { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00D000; -} - -dl.deprecated { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #505050; -} - -dl.todo { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00C0E0; -} - -dl.test { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #3030E0; -} - -dl.bug { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #C08050; -} - -dl.section dd { - margin-bottom: 6px; -} - - -#projectrow -{ - height: 56px; -} - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectalign -{ - vertical-align: middle; - padding-left: 0.5em; -} - -#projectname -{ - font-size: 200%; - font-family: var(--font-family-title); - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font-size: 90%; - font-family: var(--font-family-title); - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font-size: 50%; - font-family: 50% var(--font-family-title); - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid var(--title-separator-color); - background-color: var(--title-background-color); -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.plantumlgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:var(--citation-label-color); - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; - text-align:right; - width:52px; -} - -dl.citelist dd { - margin:2px 0 2px 72px; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: var(--toc-background-color); - border: 1px solid var(--toc-border-color); - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 8px 10px 10px; - width: 200px; -} - -div.toc li { - background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; - font: 10px/1.2 var(--font-family-toc); - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -div.toc h3 { - font: bold 12px/1.2 var(--font-family-toc); - color: var(--toc-header-color); - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 15px; -} - -div.toc li.level4 { - margin-left: 15px; -} - -span.emoji { - /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html - * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; - */ -} - -span.obfuscator { - display: none; -} - -.inherit_header { - font-weight: bold; - color: var(--inherit-header-color); - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.inherit_header td { - padding: 6px 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - -/* tooltip related style info */ - -.ttc { - position: absolute; - display: none; -} - -#powerTip { - cursor: default; - /*white-space: nowrap;*/ - color: var(--tooltip-foreground-color); - background-color: var(--tooltip-background-color); - border: 1px solid var(--tooltip-border-color); - border-radius: 4px 4px 4px 4px; - box-shadow: var(--tooltip-shadow); - display: none; - font-size: smaller; - max-width: 80%; - opacity: 0.9; - padding: 1ex 1em 1em; - position: absolute; - z-index: 2147483647; -} - -#powerTip div.ttdoc { - color: var(--tooltip-doc-color); - font-style: italic; -} - -#powerTip div.ttname a { - font-weight: bold; -} - -#powerTip a { - color: var(--tooltip-link-color); -} - -#powerTip div.ttname { - font-weight: bold; -} - -#powerTip div.ttdeci { - color: var(--tooltip-declaration-color); -} - -#powerTip div { - margin: 0px; - padding: 0px; - font-size: 12px; - font-family: var(--font-family-tooltip); - line-height: 16px; -} - -#powerTip:before, #powerTip:after { - content: ""; - position: absolute; - margin: 0px; -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.s:after, #powerTip.s:before, -#powerTip.w:after, #powerTip.w:before, -#powerTip.e:after, #powerTip.e:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.nw:after, #powerTip.nw:before, -#powerTip.sw:after, #powerTip.sw:before { - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; -} - -#powerTip.n:after, #powerTip.s:after, -#powerTip.w:after, #powerTip.e:after, -#powerTip.nw:after, #powerTip.ne:after, -#powerTip.sw:after, #powerTip.se:after { - border-color: rgba(255, 255, 255, 0); -} - -#powerTip.n:before, #powerTip.s:before, -#powerTip.w:before, #powerTip.e:before, -#powerTip.nw:before, #powerTip.ne:before, -#powerTip.sw:before, #powerTip.se:before { - border-color: rgba(128, 128, 128, 0); -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.nw:after, #powerTip.nw:before { - top: 100%; -} - -#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: var(--tooltip-background-color); - border-width: 10px; - margin: 0px -10px; -} -#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { - border-top-color: var(--tooltip-border-color); - border-width: 11px; - margin: 0px -11px; -} -#powerTip.n:after, #powerTip.n:before { - left: 50%; -} - -#powerTip.nw:after, #powerTip.nw:before { - right: 14px; -} - -#powerTip.ne:after, #powerTip.ne:before { - left: 14px; -} - -#powerTip.s:after, #powerTip.s:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.sw:after, #powerTip.sw:before { - bottom: 100%; -} - -#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: var(--tooltip-background-color); - border-width: 10px; - margin: 0px -10px; -} - -#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: var(--tooltip-border-color); - border-width: 11px; - margin: 0px -11px; -} - -#powerTip.s:after, #powerTip.s:before { - left: 50%; -} - -#powerTip.sw:after, #powerTip.sw:before { - right: 14px; -} - -#powerTip.se:after, #powerTip.se:before { - left: 14px; -} - -#powerTip.e:after, #powerTip.e:before { - left: 100%; -} -#powerTip.e:after { - border-left-color: var(--tooltip-border-color); - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.e:before { - border-left-color: var(--tooltip-border-color); - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#powerTip.w:after, #powerTip.w:before { - right: 100%; -} -#powerTip.w:after { - border-right-color: var(--tooltip-border-color); - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.w:before { - border-right-color: var(--tooltip-border-color); - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} - -/* @group Markdown */ - -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid var(--table-cell-border-color); - padding: 3px 7px 2px; -} - -table.markdownTable tr { -} - -th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { - background-color: var(--table-header-background-color); - color: var(--table-header-foreground-color); - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft, td.markdownTableBodyLeft { - text-align: left -} - -th.markdownTableHeadRight, td.markdownTableBodyRight { - text-align: right -} - -th.markdownTableHeadCenter, td.markdownTableBodyCenter { - text-align: center -} - -tt, code, kbd, samp -{ - display: inline-block; -} -/* @end */ - -u { - text-decoration: underline; -} - -details>summary { - list-style-type: none; -} - -details > summary::-webkit-details-marker { - display: none; -} - -details>summary::before { - content: "\25ba"; - padding-right:4px; - font-size: 80%; -} - -details[open]>summary::before { - content: "\25bc"; - padding-right:4px; - font-size: 80%; -} - -body { - scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); -} - -::-webkit-scrollbar { - background-color: var(--scrollbar-background-color); - height: 12px; - width: 12px; -} -::-webkit-scrollbar-thumb { - border-radius: 6px; - box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); - border: solid 2px transparent; -} -::-webkit-scrollbar-corner { - background-color: var(--scrollbar-background-color); -} - diff --git a/docs/html/doxygen.svg b/docs/html/doxygen.svg deleted file mode 100644 index 79a7635..0000000 --- a/docs/html/doxygen.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/html/dynsections.js b/docs/html/dynsections.js deleted file mode 100644 index b73c828..0000000 --- a/docs/html/dynsections.js +++ /dev/null @@ -1,192 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file - */ -function toggleVisibility(linkObj) -{ - var base = $(linkObj).attr('id'); - var summary = $('#'+base+'-summary'); - var content = $('#'+base+'-content'); - var trigger = $('#'+base+'-trigger'); - var src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; -} - -function updateStripes() -{ - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); - $('table.directory tr'). - removeClass('odd').filter(':visible:odd').addClass('odd'); -} - -function toggleLevel(level) -{ - $('table.directory tr').each(function() { - var l = this.id.split('_').length-1; - var i = $('#img'+this.id.substring(3)); - var a = $('#arr'+this.id.substring(3)); - if (l'); - // add vertical lines to other rows - $('span[class=lineno]').not(':eq(0)').append(''); - // add toggle controls to lines with fold divs - $('div[class=foldopen]').each(function() { - // extract specific id to use - var id = $(this).attr('id').replace('foldopen',''); - // extract start and end foldable fragment attributes - var start = $(this).attr('data-start'); - var end = $(this).attr('data-end'); - // replace normal fold span with controls for the first line of a foldable fragment - $(this).find('span[class=fold]:first').replaceWith(''); - // append div for folded (closed) representation - $(this).after(''); - // extract the first line from the "open" section to represent closed content - var line = $(this).children().first().clone(); - // remove any glow that might still be active on the original line - $(line).removeClass('glow'); - if (start) { - // if line already ends with a start marker (e.g. trailing {), remove it - $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); - } - // replace minus with plus symbol - $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); - // append ellipsis - $(line).append(' '+start+''+end); - // insert constructed line into closed div - $('#foldclosed'+id).html(line); - }); -} - -/* @license-end */ diff --git a/docs/html/files.html b/docs/html/files.html deleted file mode 100644 index 1f5f55c..0000000 --- a/docs/html/files.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -My Project: File List - - - - - - - - - -
-
- - - - - - -
-
My Project -
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
File List
-
-
-
Here is a list of all documented files with brief descriptions:
-
[detail level 1234]
- - - - - - - - - - - - - -
  src
  app
  core_logic
 client.cFonctions liées à la gestion des clients et de leur panier
 client.hFonctions liées à la gestion des clients et de leur panier
 responsable.cDéfinition des fonctions de responsable.c
 responsable.hDéclaration des fonctions de responsable.c
  interface
 interface_client.cImplémentation des fonctions liées à l'interface client
 interface_client.hEn-tête des fonctions liées à l'interface client
 interface_resp.cImplémentation des fonctions liées à l'interface du responsable
 interface_resp.hEn-tête des fonctions liées à l'interface du responsable
 main.cProgramme principal pour choisir une interface et lancer l'application
-
-
- - - - diff --git a/docs/html/folderclosed.svg b/docs/html/folderclosed.svg deleted file mode 100644 index b04bed2..0000000 --- a/docs/html/folderclosed.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - diff --git a/docs/html/folderclosedd.svg b/docs/html/folderclosedd.svg deleted file mode 100644 index 52f0166..0000000 --- a/docs/html/folderclosedd.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - diff --git a/docs/html/folderopen.svg b/docs/html/folderopen.svg deleted file mode 100644 index f6896dd..0000000 --- a/docs/html/folderopen.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - diff --git a/docs/html/folderopend.svg b/docs/html/folderopend.svg deleted file mode 100644 index 2d1f06e..0000000 --- a/docs/html/folderopend.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - diff --git a/docs/html/globals.html b/docs/html/globals.html deleted file mode 100644 index 9d3c376..0000000 --- a/docs/html/globals.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - -My Project: File Members - - - - - - - - - -
-
- - - - - - -
-
My Project -
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Here is a list of all documented file members with links to the documentation:
- -

- a -

- - -

- c -

- - -

- d -

- - -

- g -

- - -

- m -

- - -

- p -

- - -

- r -

- - -

- s -

-
- - - - diff --git a/docs/html/globals_func.html b/docs/html/globals_func.html deleted file mode 100644 index fc31966..0000000 --- a/docs/html/globals_func.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - -My Project: File Members - - - - - - - - - -
-
- - - - - - -
-
My Project -
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Here is a list of all documented functions with links to the documentation:
- -

- a -

- - -

- c -

- - -

- d -

- - -

- g -

- - -

- m -

- - -

- p -

- - -

- r -

- - -

- s -

-
- - - - diff --git a/docs/html/index.html b/docs/html/index.html deleted file mode 100644 index a6ec34d..0000000 --- a/docs/html/index.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -My Project: Main Page - - - - - - - - - -
-
- - - - - - -
-
My Project -
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
My Project Documentation
-
-
-
- - - - diff --git a/docs/html/interface__client_8c.html b/docs/html/interface__client_8c.html deleted file mode 100644 index dd0e196..0000000 --- a/docs/html/interface__client_8c.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - -My Project: src/app/interface/interface_client.c File Reference - - - - - - - - - -
-
- - - - - - -
-
My Project -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
interface_client.c File Reference
-
-
- -

Implémentation des fonctions liées à l'interface client. -More...

- - - - - - -

-Macros

-#define MAX_ARTICLES   100
 
-#define MAX_CLIENTS   100
 
- - - - - - - - - - -

-Functions

-void affiche_client ()
 Affiche le menu principal de l'interface client.
 
void menu_client (int *choix)
 Laisse l'utilisateur choisir une option du menu.
 
void global_client ()
 Fonction principale de l'interface client.
 
-

Detailed Description

-

Implémentation des fonctions liées à l'interface client.

-

Function Documentation

- -

◆ global_client()

- -
-
- - - - - - - -
void global_client ()
-
- -

Fonction principale de l'interface client.

-

Cette fonction permet aux clients d'utiliser l'application pour gérer leur panier et effectuer des opérations telles que l'ajout, la suppression ou la modification d'articles dans le panier.

- -
-
- -

◆ menu_client()

- -
-
- - - - - - - - -
void menu_client (int * choix)
-
- -

Laisse l'utilisateur choisir une option du menu.

-
Parameters
- - -
[in,out]choix- L'option choisie par l'utilisateur.
-
-
- -
-
-
- - - - diff --git a/docs/html/interface__client_8h.html b/docs/html/interface__client_8h.html deleted file mode 100644 index b1b03e8..0000000 --- a/docs/html/interface__client_8h.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - -My Project: src/app/interface/interface_client.h File Reference - - - - - - - - - -
-
- - - - - - -
-
My Project -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
interface_client.h File Reference
-
-
- -

En-tête des fonctions liées à l'interface client. -More...

-
#include <stdio.h>
-
-

Go to the source code of this file.

- - - - - - - - - - - -

-Functions

-void affiche_client ()
 Affiche le menu principal de l'interface client.
 
void menu_client (int *choix)
 Laisse l'utilisateur choisir une option du menu.
 
void global_client ()
 Fonction principale de l'interface client.
 
-

Detailed Description

-

En-tête des fonctions liées à l'interface client.

-

Function Documentation

- -

◆ global_client()

- -
-
- - - - - - - -
void global_client ()
-
- -

Fonction principale de l'interface client.

-

Cette fonction permet aux clients d'utiliser l'application pour gérer leur panier et effectuer des opérations telles que l'ajout, la suppression ou la modification d'articles dans le panier.

- -
-
- -

◆ menu_client()

- -
-
- - - - - - - - -
void menu_client (int * choix)
-
- -

Laisse l'utilisateur choisir une option du menu.

-
Parameters
- - -
[in,out]choix- L'option choisie par l'utilisateur.
-
-
- -
-
-
- - - - diff --git a/docs/html/interface__client_8h_source.html b/docs/html/interface__client_8h_source.html deleted file mode 100644 index 21816ec..0000000 --- a/docs/html/interface__client_8h_source.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -My Project: src/app/interface/interface_client.h Source File - - - - - - - - - -
-
- - - - - - -
-
My Project -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
interface_client.h
-
-
-Go to the documentation of this file.
1
-
6#include <stdio.h>
-
7
-
11void affiche_client();
-
12
-
18void menu_client(int *choix);
-
19
-
27void global_client();
-
void menu_client(int *choix)
Laisse l'utilisateur choisir une option du menu.
Definition interface_client.c:38
-
void affiche_client()
Affiche le menu principal de l'interface client.
Definition interface_client.c:16
-
void global_client()
Fonction principale de l'interface client.
Definition interface_client.c:54
-
- - - - diff --git a/docs/html/interface__resp_8c.html b/docs/html/interface__resp_8c.html deleted file mode 100644 index cbc254e..0000000 --- a/docs/html/interface__resp_8c.html +++ /dev/null @@ -1,589 +0,0 @@ - - - - - - - -My Project: src/app/interface/interface_resp.c File Reference - - - - - - - - - -
-
- - - - - - -
-
My Project -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
interface_resp.c File Reference
-
-
- -

Implémentation des fonctions liées à l'interface du responsable. -More...

-
#include <stdio.h>
-#include <stdlib.h>
-#include "interface_resp.h"
-#include "app/core_logic/responsable.h"
-#include "app/core_logic/client.h"
-
- - - - - -

-Macros

-#define MAX_CLIENTS   100
 
-#define MAX_ARTICLES   100
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

-void affiche_resp (void)
 Affiche le menu principal de l'interface du responsable.
 
void affichArticles (int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique)
 Affiche la liste des articles.
 
void affichUnArticle (int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique)
 Affiche un article spécifique.
 
void affichUnClient (int tNumClient[], float tCagnotte[], int tSus[], int tLogique)
 Affiche un client spécifique.
 
void affichClients (int tNumClient[], float tCagnotte[], int tSus[], int tLogique)
 Affiche la liste des clients.
 
void affichAjoutArticle (int *ref, float *poids, float *volume, float *prix)
 Affiche les informations pour ajouter un nouvel article.
 
void affichSupprimerArticle (int *ref)
 Affiche les informations pour supprimer un article.
 
void affichModifierArticle (int *ref, float *poids, float *volume, float *prix)
 Affiche les informations pour modifier un article.
 
void affichAjoutClient (int tNumClient[], int tLogique, int *numC)
 Affiche les informations pour ajouter un nouveau client.
 
void menu_resp (int *choix)
 Fonction de menu pour le responsable.
 
void global_resp ()
 Fonction principale de l'interface du responsable.
 
-

Detailed Description

-

Implémentation des fonctions liées à l'interface du responsable.

-

Function Documentation

- -

◆ affichAjoutArticle()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void affichAjoutArticle (int * ref,
float * poids,
float * volume,
float * prix 
)
-
- -

Affiche les informations pour ajouter un nouvel article.

-

Affiche les informations nécessaires pour ajouter un nouvel article.

-
Parameters
- - - - - -
[in,out]ref- Référence du nouvel article.
[in,out]poids- Poids du nouvel article.
[in,out]volume- Volume du nouvel article.
[in,out]prix- Prix du nouvel article.
-
-
- -
-
- -

◆ affichAjoutClient()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void affichAjoutClient (int tNumClient[],
int tLogique,
int * numC 
)
-
- -

Affiche les informations pour ajouter un nouveau client.

-

Affiche les informations nécessaires pour ajouter un nouveau client.

-
Parameters
- - - - -
[in]tNumClient- Tableau des numéros de client.
[in]tLogique- Taille logique des tableaux.
[in,out]numC- Numéro du nouveau client.
-
-
- -
-
- -

◆ affichArticles()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void affichArticles (int tRef[],
float tPoids[],
float tVol[],
float tPrix[],
int tLogique 
)
-
- -

Affiche la liste des articles.

-
Parameters
- - - - - - -
tRef- Tableau des références d'articles.
tPoids- Tableau des poids d'articles.
tVol- Tableau des volumes d'articles.
tPrix- Tableau des prix d'articles.
tLogique- Taille logique des tableaux.
-
-
- -
-
- -

◆ affichClients()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void affichClients (int tNumClient[],
float tCagnotte[],
int tSus[],
int tLogique 
)
-
- -

Affiche la liste des clients.

-
Parameters
- - - - - -
tNumClient- Tableau des numéros de client.
tCagnotte- Tableau des cagnottes des clients.
tSus- Tableau d'états des clients.
tLogique- Taille logique des tableaux.
-
-
- -
-
- -

◆ affichModifierArticle()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void affichModifierArticle (int * ref,
float * poids,
float * volume,
float * prix 
)
-
- -

Affiche les informations pour modifier un article.

-

Affiche les informations nécessaires pour modifier un article.

-
Parameters
- - - - - -
[in,out]ref- Référence de l'article à modifier.
[in,out]poids- Nouveau poids de l'article.
[in,out]volume- Nouveau volume de l'article.
[in,out]prix- Nouveau prix de l'article.
-
-
- -
-
- -

◆ affichSupprimerArticle()

- -
-
- - - - - - - - -
void affichSupprimerArticle (int * ref)
-
- -

Affiche les informations pour supprimer un article.

-

Affiche les informations nécessaires pour supprimer un article.

-
Parameters
- - -
[in,out]ref- Référence de l'article à supprimer.
-
-
- -
-
- -

◆ affichUnArticle()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void affichUnArticle (int tRef[],
float tPoids[],
float tVol[],
float tPrix[],
int tLogique 
)
-
- -

Affiche un article spécifique.

-

Affiche les informations d'un article spécifique.

-
Parameters
- - - - - - -
tRef- Tableau des références d'articles.
tPoids- Tableau des poids d'articles.
tVol- Tableau des volumes d'articles.
tPrix- Tableau des prix d'articles.
tLogique- Taille logique des tableaux.
-
-
- -
-
- -

◆ affichUnClient()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void affichUnClient (int tNumClient[],
float tCagnotte[],
int tSus[],
int tLogique 
)
-
- -

Affiche un client spécifique.

-

Affiche les informations d'un client spécifique.

-
Parameters
- - - - - -
tNumClient- Tableau des numéros de client.
tCagnotte- Tableau des cagnottes des clients.
tSus- Tableau d'états des clients.
tLogique- Taille logique des tableaux.
-
-
- -
-
- -

◆ global_resp()

- -
-
- - - - - - - -
void global_resp ()
-
- -

Fonction principale de l'interface du responsable.

-

Cette fonction permet au responsable d'effectuer diverses actions telles que la gestion des articles et des clients.

- -
-
- -

◆ menu_resp()

- -
-
- - - - - - - - -
void menu_resp (int * choix)
-
- -

Fonction de menu pour le responsable.

-

Laisse le responsable choisir une option du menu.

-
Parameters
- - -
[in,out]choix- L'option choisie par le responsable.
-
-
- -
-
-
- - - - diff --git a/docs/html/interface__resp_8h.html b/docs/html/interface__resp_8h.html deleted file mode 100644 index c16d295..0000000 --- a/docs/html/interface__resp_8h.html +++ /dev/null @@ -1,646 +0,0 @@ - - - - - - - -My Project: src/app/interface/interface_resp.h File Reference - - - - - - - - - -
-
- - - - - - -
-
My Project -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
interface_resp.h File Reference
-
-
- -

En-tête des fonctions liées à l'interface du responsable. -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

void affichArticles (int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique)
 Affiche la liste des articles.
 
void affichUnArticle (int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique)
 Affiche les informations d'un article spécifique.
 
void affichUnClient (int tNumClient[], float tCagnotte[], int tSus[], int tLogique)
 Affiche les informations d'un client spécifique.
 
void affichClients (int tNumClient[], float tCagnotte[], int tSus[], int tLogique)
 Affiche la liste des clients.
 
void affichAjoutArticle (int *ref, float *poids, float *volume, float *prix)
 Affiche les informations nécessaires pour ajouter un nouvel article.
 
void affichSupprimerArticle (int *ref)
 Affiche les informations nécessaires pour supprimer un article.
 
void affichModifierArticle (int *ref, float *poids, float *volume, float *prix)
 Affiche les informations nécessaires pour modifier un article.
 
-void problemRechercheArticle ()
 Affiche un message en cas de problème lors de la recherche d'un article.
 
void affichAjoutClient (int tNumClient[], int tLogique, int *numC)
 Affiche les informations nécessaires pour ajouter un nouveau client.
 
void menu_resp (int *choix)
 Laisse le responsable choisir une option du menu.
 
void global_resp ()
 Fonction principale de l'interface du responsable.
 
-void affiche_resp ()
 Affiche le menu principal de l'interface du responsable.
 
-

Detailed Description

-

En-tête des fonctions liées à l'interface du responsable.

-

Function Documentation

- -

◆ affichAjoutArticle()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void affichAjoutArticle (int * ref,
float * poids,
float * volume,
float * prix 
)
-
- -

Affiche les informations nécessaires pour ajouter un nouvel article.

-
Parameters
- - - - - -
ref- Référence du nouvel article.
poids- Poids du nouvel article.
volume- Volume du nouvel article.
prix- Prix du nouvel article.
-
-
-

Affiche les informations nécessaires pour ajouter un nouvel article.

-
Parameters
- - - - - -
[in,out]ref- Référence du nouvel article.
[in,out]poids- Poids du nouvel article.
[in,out]volume- Volume du nouvel article.
[in,out]prix- Prix du nouvel article.
-
-
- -
-
- -

◆ affichAjoutClient()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void affichAjoutClient (int tNumClient[],
int tLogique,
int * numC 
)
-
- -

Affiche les informations nécessaires pour ajouter un nouveau client.

-
Parameters
- - - - -
tNumClient- Tableau des numéros de clients.
tLogique- Nombre de clients actuellement enregistrés.
numC- Numéro du nouveau client.
-
-
-

Affiche les informations nécessaires pour ajouter un nouveau client.

-
Parameters
- - - - -
[in]tNumClient- Tableau des numéros de client.
[in]tLogique- Taille logique des tableaux.
[in,out]numC- Numéro du nouveau client.
-
-
- -
-
- -

◆ affichArticles()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void affichArticles (int tRef[],
float tPoids[],
float tVol[],
float tPrix[],
int tLogique 
)
-
- -

Affiche la liste des articles.

-
Parameters
- - - - - - - - - - - -
tRef- Tableau des références des articles.
tPoids- Tableau des poids des articles.
tVol- Tableau des volumes des articles.
tPrix- Tableau des prix des articles.
tLogique- Nombre d'articles actuellement enregistrés.
tRef- Tableau des références d'articles.
tPoids- Tableau des poids d'articles.
tVol- Tableau des volumes d'articles.
tPrix- Tableau des prix d'articles.
tLogique- Taille logique des tableaux.
-
-
- -
-
- -

◆ affichClients()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void affichClients (int tNumClient[],
float tCagnotte[],
int tSus[],
int tLogique 
)
-
- -

Affiche la liste des clients.

-
Parameters
- - - - - - - - - -
tNumClient- Tableau des numéros de clients.
tCagnotte- Tableau des cagnottes des clients.
tSus- Tableau des états de suspension des clients.
tLogique- Nombre de clients actuellement enregistrés.
tNumClient- Tableau des numéros de client.
tCagnotte- Tableau des cagnottes des clients.
tSus- Tableau d'états des clients.
tLogique- Taille logique des tableaux.
-
-
- -
-
- -

◆ affichModifierArticle()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void affichModifierArticle (int * ref,
float * poids,
float * volume,
float * prix 
)
-
- -

Affiche les informations nécessaires pour modifier un article.

-
Parameters
- - - - - -
ref- Référence de l'article à modifier.
poids- Nouveau poids de l'article.
volume- Nouveau volume de l'article.
prix- Nouveau prix de l'article.
-
-
-

Affiche les informations nécessaires pour modifier un article.

-
Parameters
- - - - - -
[in,out]ref- Référence de l'article à modifier.
[in,out]poids- Nouveau poids de l'article.
[in,out]volume- Nouveau volume de l'article.
[in,out]prix- Nouveau prix de l'article.
-
-
- -
-
- -

◆ affichSupprimerArticle()

- -
-
- - - - - - - - -
void affichSupprimerArticle (int * ref)
-
- -

Affiche les informations nécessaires pour supprimer un article.

-
Parameters
- - -
ref- Référence de l'article à supprimer.
-
-
-

Affiche les informations nécessaires pour supprimer un article.

-
Parameters
- - -
[in,out]ref- Référence de l'article à supprimer.
-
-
- -
-
- -

◆ affichUnArticle()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void affichUnArticle (int tRef[],
float tPoids[],
float tVol[],
float tPrix[],
int tLogique 
)
-
- -

Affiche les informations d'un article spécifique.

-
Parameters
- - - - - - -
tRef- Tableau des références des articles.
tPoids- Tableau des poids des articles.
tVol- Tableau des volumes des articles.
tPrix- Tableau des prix des articles.
tLogique- Nombre d'articles actuellement enregistrés.
-
-
-

Affiche les informations d'un article spécifique.

-
Parameters
- - - - - - -
tRef- Tableau des références d'articles.
tPoids- Tableau des poids d'articles.
tVol- Tableau des volumes d'articles.
tPrix- Tableau des prix d'articles.
tLogique- Taille logique des tableaux.
-
-
- -
-
- -

◆ affichUnClient()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void affichUnClient (int tNumClient[],
float tCagnotte[],
int tSus[],
int tLogique 
)
-
- -

Affiche les informations d'un client spécifique.

-
Parameters
- - - - - -
tNumClient- Tableau des numéros de clients.
tCagnotte- Tableau des cagnottes des clients.
tSus- Tableau des états de suspension des clients.
tLogique- Nombre de clients actuellement enregistrés.
-
-
-

Affiche les informations d'un client spécifique.

-
Parameters
- - - - - -
tNumClient- Tableau des numéros de client.
tCagnotte- Tableau des cagnottes des clients.
tSus- Tableau d'états des clients.
tLogique- Taille logique des tableaux.
-
-
- -
-
- -

◆ global_resp()

- -
-
- - - - - - - -
void global_resp ()
-
- -

Fonction principale de l'interface du responsable.

-

Cette fonction permet au responsable d'effectuer diverses actions telles que la gestion des articles et des clients.

- -
-
- -

◆ menu_resp()

- -
-
- - - - - - - - -
void menu_resp (int * choix)
-
- -

Laisse le responsable choisir une option du menu.

-
Parameters
- - -
[in,out]choix- L'option choisie par le responsable.
-
-
-

Laisse le responsable choisir une option du menu.

-
Parameters
- - -
[in,out]choix- L'option choisie par le responsable.
-
-
- -
-
-
- - - - diff --git a/docs/html/interface__resp_8h_source.html b/docs/html/interface__resp_8h_source.html deleted file mode 100644 index 9147782..0000000 --- a/docs/html/interface__resp_8h_source.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -My Project: src/app/interface/interface_resp.h Source File - - - - - - - - - -
-
- - - - - - -
-
My Project -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
interface_resp.h
-
-
-Go to the documentation of this file.
1
-
15void affichArticles(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique);
-
16
-
26void affichUnArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique);
-
27
-
36void affichUnClient(int tNumClient[], float tCagnotte[], int tSus[], int tLogique);
-
37
-
46void affichClients(int tNumClient[], float tCagnotte[], int tSus[], int tLogique);
-
47
-
56void affichAjoutArticle(int *ref, float *poids, float *volume, float *prix);
-
57
-
63void affichSupprimerArticle(int *ref);
-
64
-
73void affichModifierArticle(int *ref, float *poids, float *volume, float *prix);
-
74
- -
79
-
87void affichAjoutClient(int tNumClient[], int tLogique, int *numC);
-
88
-
94void menu_resp(int *choix);
-
95
-
101void global_resp();
-
102
-
106void affiche_resp();
-
void menu_resp(int *choix)
Laisse le responsable choisir une option du menu.
Definition interface_resp.c:230
-
void affiche_resp()
Affiche le menu principal de l'interface du responsable.
Definition interface_resp.c:18
-
void global_resp()
Fonction principale de l'interface du responsable.
Definition interface_resp.c:243
-
void affichSupprimerArticle(int *ref)
Affiche les informations nécessaires pour supprimer un article.
Definition interface_resp.c:162
-
void affichUnArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique)
Affiche les informations d'un article spécifique.
Definition interface_resp.c:64
-
void affichClients(int tNumClient[], float tCagnotte[], int tSus[], int tLogique)
Affiche la liste des clients.
Definition interface_resp.c:114
-
void problemRechercheArticle()
Affiche un message en cas de problème lors de la recherche d'un article.
-
void affichAjoutClient(int tNumClient[], int tLogique, int *numC)
Affiche les informations nécessaires pour ajouter un nouveau client.
Definition interface_resp.c:211
-
void affichAjoutArticle(int *ref, float *poids, float *volume, float *prix)
Affiche les informations nécessaires pour ajouter un nouvel article.
Definition interface_resp.c:131
-
void affichUnClient(int tNumClient[], float tCagnotte[], int tSus[], int tLogique)
Affiche les informations d'un client spécifique.
Definition interface_resp.c:89
-
void affichModifierArticle(int *ref, float *poids, float *volume, float *prix)
Affiche les informations nécessaires pour modifier un article.
Definition interface_resp.c:178
-
void affichArticles(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique)
Affiche la liste des articles.
Definition interface_resp.c:47
-
- - - - diff --git a/docs/html/jquery.js b/docs/html/jquery.js deleted file mode 100644 index 1dffb65..0000000 --- a/docs/html/jquery.js +++ /dev/null @@ -1,34 +0,0 @@ -/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 - * http://www.smartmenus.org/ - * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/docs/html/main_8c.html b/docs/html/main_8c.html deleted file mode 100644 index 996606b..0000000 --- a/docs/html/main_8c.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - -My Project: src/main.c File Reference - - - - - - - - - -
-
- - - - - - -
-
My Project -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
main.c File Reference
-
-
- -

Programme principal pour choisir une interface et lancer l'application. -More...

-
#include <stdio.h>
-#include <stdlib.h>
-#include "app/interface/interface_client.h"
-#include "app/interface/interface_resp.h"
-#include "app/core_logic/client.h"
-#include "app/core_logic/responsable.h"
-
- - - - - - - -

-Functions

int choixInterface (void)
 Fonction permettant à l'utilisateur de choisir une interface.
 
int main ()
 Fonction principale du programme.
 
-

Detailed Description

-

Programme principal pour choisir une interface et lancer l'application.

-

Function Documentation

- -

◆ choixInterface()

- -
-
- - - - - - - - -
int choixInterface (void )
-
- -

Fonction permettant à l'utilisateur de choisir une interface.

-

L'utilisateur peut choisir entre l'interface "responsable" ou "client" en saisissant 1 ou 2. Cette fonction vérifie que l'entrée de l'utilisateur est valide.

-
Returns
Le choix de l'interface (1 pour responsable, 2 pour client).
- -
-
- -

◆ main()

- -
-
- - - - - - - -
int main ()
-
- -

Fonction principale du programme.

-

Cette fonction permet à l'utilisateur de choisir une interface à lancer (responsable ou client) en utilisant la fonction choixInterface(), puis elle lance l'interface correspondante.

-
Returns
0 si le programme s'est exécuté avec succès.
- -
-
-
- - - - diff --git a/docs/html/menu.js b/docs/html/menu.js deleted file mode 100644 index b0b2693..0000000 --- a/docs/html/menu.js +++ /dev/null @@ -1,136 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file - */ -function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { - function makeTree(data,relPath) { - var result=''; - if ('children' in data) { - result+='
    '; - for (var i in data.children) { - var url; - var link; - link = data.children[i].url; - if (link.substring(0,1)=='^') { - url = link.substring(1); - } else { - url = relPath+link; - } - result+='
  • '+ - data.children[i].text+''+ - makeTree(data.children[i],relPath)+'
  • '; - } - result+='
'; - } - return result; - } - var searchBoxHtml; - if (searchEnabled) { - if (serverSide) { - searchBoxHtml='
'+ - '
'+ - '
 '+ - ''+ - '
'+ - '
'+ - '
'+ - '
'; - } else { - searchBoxHtml='
'+ - ''+ - ' '+ - ''+ - ''+ - ''+ - ''+ - ''+ - '
'; - } - } - - $('#main-nav').before('
'+ - ''+ - ''+ - '
'); - $('#main-nav').append(makeTree(menudata,relPath)); - $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); - if (searchBoxHtml) { - $('#main-menu').append('
  • '); - } - var $mainMenuState = $('#main-menu-state'); - var prevWidth = 0; - if ($mainMenuState.length) { - function initResizableIfExists() { - if (typeof initResizable==='function') initResizable(); - } - // animate mobile menu - $mainMenuState.change(function(e) { - var $menu = $('#main-menu'); - var options = { duration: 250, step: initResizableIfExists }; - if (this.checked) { - options['complete'] = function() { $menu.css('display', 'block') }; - $menu.hide().slideDown(options); - } else { - options['complete'] = function() { $menu.css('display', 'none') }; - $menu.show().slideUp(options); - } - }); - // set default menu visibility - function resetState() { - var $menu = $('#main-menu'); - var $mainMenuState = $('#main-menu-state'); - var newWidth = $(window).outerWidth(); - if (newWidth!=prevWidth) { - if ($(window).outerWidth()<768) { - $mainMenuState.prop('checked',false); $menu.hide(); - $('#searchBoxPos1').html(searchBoxHtml); - $('#searchBoxPos2').hide(); - } else { - $menu.show(); - $('#searchBoxPos1').empty(); - $('#searchBoxPos2').html(searchBoxHtml); - $('#searchBoxPos2').show(); - } - if (typeof searchBox!=='undefined') { - searchBox.CloseResultsWindow(); - } - prevWidth = newWidth; - } - } - $(window).ready(function() { resetState(); initResizableIfExists(); }); - $(window).resize(resetState); - } - $('#main-menu').smartmenus(); -} -/* @license-end */ diff --git a/docs/html/menudata.js b/docs/html/menudata.js deleted file mode 100644 index 0d0156a..0000000 --- a/docs/html/menudata.js +++ /dev/null @@ -1,47 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file -*/ -var menudata={children:[ -{text:"Main Page",url:"index.html"}, -{text:"Files",url:"files.html",children:[ -{text:"File List",url:"files.html"}, -{text:"File Members",url:"globals.html",children:[ -{text:"All",url:"globals.html",children:[ -{text:"a",url:"globals.html#index_a"}, -{text:"c",url:"globals.html#index_c"}, -{text:"d",url:"globals.html#index_d"}, -{text:"g",url:"globals.html#index_g"}, -{text:"m",url:"globals.html#index_m"}, -{text:"p",url:"globals.html#index_p"}, -{text:"r",url:"globals.html#index_r"}, -{text:"s",url:"globals.html#index_s"}]}, -{text:"Functions",url:"globals_func.html",children:[ -{text:"a",url:"globals_func.html#index_a"}, -{text:"c",url:"globals_func.html#index_c"}, -{text:"d",url:"globals_func.html#index_d"}, -{text:"g",url:"globals_func.html#index_g"}, -{text:"m",url:"globals_func.html#index_m"}, -{text:"p",url:"globals_func.html#index_p"}, -{text:"r",url:"globals_func.html#index_r"}, -{text:"s",url:"globals_func.html#index_s"}]}]}]}]} diff --git a/docs/html/minus.svg b/docs/html/minus.svg deleted file mode 100644 index f70d0c1..0000000 --- a/docs/html/minus.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docs/html/minusd.svg b/docs/html/minusd.svg deleted file mode 100644 index 5f8e879..0000000 --- a/docs/html/minusd.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docs/html/nav_f.png b/docs/html/nav_f.png deleted file mode 100644 index 72a58a5..0000000 Binary files a/docs/html/nav_f.png and /dev/null differ diff --git a/docs/html/nav_fd.png b/docs/html/nav_fd.png deleted file mode 100644 index 032fbdd..0000000 Binary files a/docs/html/nav_fd.png and /dev/null differ diff --git a/docs/html/nav_g.png b/docs/html/nav_g.png deleted file mode 100644 index 2093a23..0000000 Binary files a/docs/html/nav_g.png and /dev/null differ diff --git a/docs/html/nav_h.png b/docs/html/nav_h.png deleted file mode 100644 index 33389b1..0000000 Binary files a/docs/html/nav_h.png and /dev/null differ diff --git a/docs/html/nav_hd.png b/docs/html/nav_hd.png deleted file mode 100644 index de80f18..0000000 Binary files a/docs/html/nav_hd.png and /dev/null differ diff --git a/docs/html/open.png b/docs/html/open.png deleted file mode 100644 index 30f75c7..0000000 Binary files a/docs/html/open.png and /dev/null differ diff --git a/docs/html/plus.svg b/docs/html/plus.svg deleted file mode 100644 index 0752016..0000000 --- a/docs/html/plus.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/html/plusd.svg b/docs/html/plusd.svg deleted file mode 100644 index 0c65bfe..0000000 --- a/docs/html/plusd.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/html/responsable_8c.html b/docs/html/responsable_8c.html deleted file mode 100644 index 80762a0..0000000 --- a/docs/html/responsable_8c.html +++ /dev/null @@ -1,565 +0,0 @@ - - - - - - - -My Project: src/app/core_logic/responsable.c File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    My Project -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    responsable.c File Reference
    -
    -
    - -

    Définition des fonctions de responsable.c. -More...

    -
    #include <stdio.h>
    -#include <stdlib.h>
    -#include "responsable.h"
    -#include "../interface/interface_resp.h"
    -
    - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    int chargementArticles (int tRef[], float tPoids[], float tVol[], float tPrix[], int tPhysique)
     Charge les informations des articles à partir d'un fichier dans des tableaux.
     
    void sauvegardArticles (int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique)
     Sauvegarde les informations des articles dans un fichier.
     
    int ajouterArticle (int tRef[], float tPoids[], float tVol[], float tPrix[], int *tLogique, int tPhysique, int ref, float poids, float volume, float prix)
     Ajoute un nouvel article aux tableaux d'articles.
     
    void rechercheRefArticle (int tRef[], int ref, int *index, int tLogique)
     Recherche une référence d'article dans le tableau tRef.
     
    void supprimerArticle (int tRef[], float tPoids[], float tVol[], float tPrix[], int *tLogique)
     Supprime un article des tableaux d'articles.
     
    void modifierArticle (int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique)
     Modifie les informations d'un article existant.
     
    void ajouterClient (int tNumClient[], float tCagnotte[], int tSus[], int *tLogique, int tPhysique)
     Ajoute un nouveau client aux tableaux de clients.
     
    -

    Detailed Description

    -

    Définition des fonctions de responsable.c.

    -

    Function Documentation

    - -

    ◆ ajouterArticle()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    int ajouterArticle (int tRef[],
    float tPoids[],
    float tVol[],
    float tPrix[],
    int * tLogique,
    int tPhysique,
    int ref,
    float poids,
    float volume,
    float prix 
    )
    -
    - -

    Ajoute un nouvel article aux tableaux d'articles.

    -

    Cette fonction ajoute un nouvel article aux tableaux tRef, tPoids, tVol, et tPrix et incrémente la taille logique.

    -
    Parameters
    - - - - - - - - - - - -
    tRefTableau des références d'articles.
    tPoidsTableau des poids des articles.
    tVolTableau des volumes des articles.
    tPrixTableau des prix unitaires des articles.
    tLogiqueTaille logique des tableaux.
    tPhysiqueTaille physique des tableaux.
    refRéférence du nouvel article.
    poidsPoids du nouvel article.
    volumeVolume du nouvel article.
    prixPrix unitaire du nouvel article.
    -
    -
    -
    Returns
    0 en cas de succès, -2 si le tableau est plein.
    - -
    -
    - -

    ◆ ajouterClient()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void ajouterClient (int tNumClient[],
    float tCagnotte[],
    int tSus[],
    int * tLogique,
    int tPhysique 
    )
    -
    - -

    Ajoute un nouveau client aux tableaux de clients.

    -

    Cette fonction ajoute un nouveau client aux tableaux tNumClient, tCagnotte et tSus et incrémente la taille logique.

    -
    Parameters
    - - - - - - -
    tNumClientTableau des numéros de client.
    tCagnotteTableau des cagnottes des clients.
    tSusTableau des états de suspension des clients.
    tLogiquePointeur vers la taille logique des tableaux.
    tPhysiqueTaille physique des tableaux.
    -
    -
    - -
    -
    - -

    ◆ chargementArticles()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    int chargementArticles (int tRef[],
    float tPoids[],
    float tVol[],
    float tPrix[],
    int tPhysique 
    )
    -
    - -

    Charge les informations des articles à partir d'un fichier dans des tableaux.

    -

    Cette fonction lit les informations des articles à partir du fichier "donnee/articles.txt" et les stocke dans les tableaux tRef, tPoids, tVol, et tPrix.

    -
    Parameters
    - - - - - - -
    tRefTableau des références d'articles.
    tPoidsTableau des poids des articles.
    tVolTableau des volumes des articles.
    tPrixTableau des prix unitaires des articles.
    tPhysiqueTaille physique des tableaux.
    -
    -
    -
    Returns
    Le nombre d'articles chargés avec succès ou -1 en cas d'erreur.
    - -
    -
    - -

    ◆ modifierArticle()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void modifierArticle (int tRef[],
    float tPoids[],
    float tVol[],
    float tPrix[],
    int tLogique 
    )
    -
    - -

    Modifie les informations d'un article existant.

    -

    Cette fonction permet de modifier les informations (poids, volume, prix) d'un article existant.

    -
    Parameters
    - - - - - - -
    tRefTableau des références d'articles.
    tPoidsTableau des poids des articles.
    tVolTableau des volumes des articles.
    tPrixTableau des prix unitaires des articles.
    tLogiqueTaille logique des tableaux.
    -
    -
    - -
    -
    - -

    ◆ rechercheRefArticle()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void rechercheRefArticle (int tRef[],
    int ref,
    int * index,
    int tLogique 
    )
    -
    - -

    Recherche une référence d'article dans le tableau tRef.

    -

    Cette fonction recherche une référence d'article dans le tableau tRef et renvoie l'index si l'article est trouvé.

    -
    Parameters
    - - - - - -
    tRefTableau des références d'articles.
    refRéférence de l'article à rechercher.
    indexPointeur vers la variable pour stocker l'index de l'article trouvé.
    tLogiqueTaille logique des tableaux.
    -
    -
    - -
    -
    - -

    ◆ sauvegardArticles()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void sauvegardArticles (int tRef[],
    float tPoids[],
    float tVol[],
    float tPrix[],
    int tLogique 
    )
    -
    - -

    Sauvegarde les informations des articles dans un fichier.

    -

    Cette fonction sauvegarde les informations des articles depuis les tableaux tRef, tPoids, tVol et tPrix dans le fichier "donnee/articles.txt".

    -
    Parameters
    - - - - - - -
    tRefTableau des références d'articles.
    tPoidsTableau des poids des articles.
    tVolTableau des volumes des articles.
    tPrixTableau des prix unitaires des articles.
    tLogiqueTaille logique des tableaux.
    -
    -
    - -
    -
    - -

    ◆ supprimerArticle()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void supprimerArticle (int tRef[],
    float tPoids[],
    float tVol[],
    float tPrix[],
    int * tLogique 
    )
    -
    - -

    Supprime un article des tableaux d'articles.

    -

    Cette fonction supprime un article des tableaux tRef, tPoids, tVol, et tPrix et met à jour la taille logique.

    -
    Parameters
    - - - - - - -
    tRefTableau des références d'articles.
    tPoidsTableau des poids des articles.
    tVolTableau des volumes des articles.
    tPrixTableau des prix unitaires des articles.
    tLogiquePointeur vers la taille logique des tableaux.
    -
    -
    - -
    -
    -
    - - - - diff --git a/docs/html/responsable_8h.html b/docs/html/responsable_8h.html deleted file mode 100644 index a8840b5..0000000 --- a/docs/html/responsable_8h.html +++ /dev/null @@ -1,564 +0,0 @@ - - - - - - - -My Project: src/app/core_logic/responsable.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    My Project -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    responsable.h File Reference
    -
    -
    - -

    Déclaration des fonctions de responsable.c. -More...

    -
    #include <stdio.h>
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    int chargementArticles (int tRef[], float tPoids[], float tVol[], float tPrix[], int tPhysique)
     Charge les informations des articles à partir d'un fichier dans des tableaux.
     
    void sauvegardArticles (int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique)
     Sauvegarde les informations des articles dans un fichier.
     
    int ajouterArticle (int tRef[], float tPoids[], float tVol[], float tPrix[], int *tLogique, int tPhysique, int ref, float poids, float volume, float prix)
     Ajoute un nouvel article aux tableaux d'articles.
     
    void rechercheRefArticle (int tRef[], int ref, int *index, int tLogique)
     Recherche une référence d'article dans le tableau tRef.
     
    void supprimerArticle (int tRef[], float tPoids[], float tVol[], float tPrix[], int *tLogique)
     Supprime un article des tableaux d'articles.
     
    void modifierArticle (int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique)
     Modifie les informations d'un article existant.
     
    void ajouterClient (int tNumClient[], float tCagnotte[], int tSus[], int *tLogique, int tPhysique)
     Ajoute un nouveau client aux tableaux de clients.
     
    -

    Detailed Description

    -

    Déclaration des fonctions de responsable.c.

    -

    Function Documentation

    - -

    ◆ ajouterArticle()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    int ajouterArticle (int tRef[],
    float tPoids[],
    float tVol[],
    float tPrix[],
    int * tLogique,
    int tPhysique,
    int ref,
    float poids,
    float volume,
    float prix 
    )
    -
    - -

    Ajoute un nouvel article aux tableaux d'articles.

    -

    Cette fonction ajoute un nouvel article aux tableaux tRef, tPoids, tVol, et tPrix et incrémente la taille logique.

    -
    Parameters
    - - - - - - - - - - - -
    tRefTableau des références d'articles.
    tPoidsTableau des poids des articles.
    tVolTableau des volumes des articles.
    tPrixTableau des prix unitaires des articles.
    tLogiqueTaille logique des tableaux.
    tPhysiqueTaille physique des tableaux.
    refRéférence du nouvel article.
    poidsPoids du nouvel article.
    volumeVolume du nouvel article.
    prixPrix unitaire du nouvel article.
    -
    -
    -
    Returns
    0 en cas de succès, -2 si le tableau est plein.
    - -
    -
    - -

    ◆ ajouterClient()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void ajouterClient (int tNumClient[],
    float tCagnotte[],
    int tSus[],
    int * tLogique,
    int tPhysique 
    )
    -
    - -

    Ajoute un nouveau client aux tableaux de clients.

    -

    Cette fonction ajoute un nouveau client aux tableaux tNumClient, tCagnotte et tSus et incrémente la taille logique.

    -
    Parameters
    - - - - - - -
    tNumClientTableau des numéros de client.
    tCagnotteTableau des cagnottes des clients.
    tSusTableau des états de suspension des clients.
    tLogiquePointeur vers la taille logique des tableaux.
    tPhysiqueTaille physique des tableaux.
    -
    -
    - -
    -
    - -

    ◆ chargementArticles()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    int chargementArticles (int tRef[],
    float tPoids[],
    float tVol[],
    float tPrix[],
    int tPhysique 
    )
    -
    - -

    Charge les informations des articles à partir d'un fichier dans des tableaux.

    -

    Cette fonction lit les informations des articles à partir du fichier "donnee/articles.txt" et les stocke dans les tableaux tRef, tPoids, tVol, et tPrix.

    -
    Parameters
    - - - - - - -
    tRefTableau des références d'articles.
    tPoidsTableau des poids des articles.
    tVolTableau des volumes des articles.
    tPrixTableau des prix unitaires des articles.
    tPhysiqueTaille physique des tableaux.
    -
    -
    -
    Returns
    Le nombre d'articles chargés avec succès ou -1 en cas d'erreur.
    - -
    -
    - -

    ◆ modifierArticle()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void modifierArticle (int tRef[],
    float tPoids[],
    float tVol[],
    float tPrix[],
    int tLogique 
    )
    -
    - -

    Modifie les informations d'un article existant.

    -

    Cette fonction permet de modifier les informations (poids, volume, prix) d'un article existant.

    -
    Parameters
    - - - - - - -
    tRefTableau des références d'articles.
    tPoidsTableau des poids des articles.
    tVolTableau des volumes des articles.
    tPrixTableau des prix unitaires des articles.
    tLogiqueTaille logique des tableaux.
    -
    -
    - -
    -
    - -

    ◆ rechercheRefArticle()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void rechercheRefArticle (int tRef[],
    int ref,
    int * index,
    int tLogique 
    )
    -
    - -

    Recherche une référence d'article dans le tableau tRef.

    -

    Cette fonction recherche une référence d'article dans le tableau tRef et renvoie l'index si l'article est trouvé.

    -
    Parameters
    - - - - - -
    tRefTableau des références d'articles.
    refRéférence de l'article à rechercher.
    indexPointeur vers la variable pour stocker l'index de l'article trouvé.
    tLogiqueTaille logique des tableaux.
    -
    -
    - -
    -
    - -

    ◆ sauvegardArticles()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void sauvegardArticles (int tRef[],
    float tPoids[],
    float tVol[],
    float tPrix[],
    int tLogique 
    )
    -
    - -

    Sauvegarde les informations des articles dans un fichier.

    -

    Cette fonction sauvegarde les informations des articles depuis les tableaux tRef, tPoids, tVol et tPrix dans le fichier "donnee/articles.txt".

    -
    Parameters
    - - - - - - -
    tRefTableau des références d'articles.
    tPoidsTableau des poids des articles.
    tVolTableau des volumes des articles.
    tPrixTableau des prix unitaires des articles.
    tLogiqueTaille logique des tableaux.
    -
    -
    - -
    -
    - -

    ◆ supprimerArticle()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void supprimerArticle (int tRef[],
    float tPoids[],
    float tVol[],
    float tPrix[],
    int * tLogique 
    )
    -
    - -

    Supprime un article des tableaux d'articles.

    -

    Cette fonction supprime un article des tableaux tRef, tPoids, tVol, et tPrix et met à jour la taille logique.

    -
    Parameters
    - - - - - - -
    tRefTableau des références d'articles.
    tPoidsTableau des poids des articles.
    tVolTableau des volumes des articles.
    tPrixTableau des prix unitaires des articles.
    tLogiquePointeur vers la taille logique des tableaux.
    -
    -
    - -
    -
    -
    - - - - diff --git a/docs/html/responsable_8h_source.html b/docs/html/responsable_8h_source.html deleted file mode 100644 index 73c7957..0000000 --- a/docs/html/responsable_8h_source.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -My Project: src/app/core_logic/responsable.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    My Project -
    -
    -
    - - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    responsable.h
    -
    -
    -Go to the documentation of this file.
    1
    -
    6#include <stdio.h>
    -
    7
    -
    21int chargementArticles(int tRef[], float tPoids[], float tVol[], float tPrix[], int tPhysique);
    -
    22
    -
    35void sauvegardArticles(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique);
    -
    36
    -
    54int ajouterArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int *tLogique, int tPhysique, int ref, float poids, float volume, float prix);
    -
    55
    -
    66void rechercheRefArticle(int tRef[], int ref, int *index, int tLogique);
    -
    67
    -
    79void supprimerArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int *tLogique);
    -
    80
    -
    92void modifierArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique);
    -
    93
    -
    105void ajouterClient(int tNumClient[], float tCagnotte[], int tSus[], int *tLogique, int tPhysique);
    -
    void supprimerArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int *tLogique)
    Supprime un article des tableaux d'articles.
    Definition responsable.c:150
    -
    void ajouterClient(int tNumClient[], float tCagnotte[], int tSus[], int *tLogique, int tPhysique)
    Ajoute un nouveau client aux tableaux de clients.
    Definition responsable.c:201
    -
    void rechercheRefArticle(int tRef[], int ref, int *index, int tLogique)
    Recherche une référence d'article dans le tableau tRef.
    Definition responsable.c:124
    -
    int chargementArticles(int tRef[], float tPoids[], float tVol[], float tPrix[], int tPhysique)
    Charge les informations des articles à partir d'un fichier dans des tableaux.
    Definition responsable.c:24
    -
    void modifierArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique)
    Modifie les informations d'un article existant.
    Definition responsable.c:177
    -
    int ajouterArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int *tLogique, int tPhysique, int ref, float poids, float volume, float prix)
    Ajoute un nouvel article aux tableaux d'articles.
    Definition responsable.c:97
    -
    void sauvegardArticles(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique)
    Sauvegarde les informations des articles dans un fichier.
    Definition responsable.c:62
    -
    - - - - diff --git a/docs/html/search/all_0.js b/docs/html/search/all_0.js deleted file mode 100644 index a0c60b4..0000000 --- a/docs/html/search/all_0.js +++ /dev/null @@ -1,17 +0,0 @@ -var searchData= -[ - ['affichajoutarticle_0',['affichajoutarticle',['../interface__resp_8c.html#a9e01225a96daa69eb466e03fd1108c0a',1,'affichAjoutArticle(int *ref, float *poids, float *volume, float *prix): interface_resp.c'],['../interface__resp_8h.html#a9e01225a96daa69eb466e03fd1108c0a',1,'affichAjoutArticle(int *ref, float *poids, float *volume, float *prix): interface_resp.c']]], - ['affichajoutclient_1',['affichajoutclient',['../interface__resp_8c.html#a964d2d2bc5b9aa544e6187ed6cbc961c',1,'affichAjoutClient(int tNumClient[], int tLogique, int *numC): interface_resp.c'],['../interface__resp_8h.html#a964d2d2bc5b9aa544e6187ed6cbc961c',1,'affichAjoutClient(int tNumClient[], int tLogique, int *numC): interface_resp.c']]], - ['afficharticles_2',['afficharticles',['../interface__resp_8c.html#af518981f5e0d4575a6b7bae3f22e9985',1,'affichArticles(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique): interface_resp.c'],['../interface__resp_8h.html#af518981f5e0d4575a6b7bae3f22e9985',1,'affichArticles(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique): interface_resp.c']]], - ['affichclients_3',['affichclients',['../interface__resp_8c.html#a7c0531c63ea490d0b674960483e9ba27',1,'affichClients(int tNumClient[], float tCagnotte[], int tSus[], int tLogique): interface_resp.c'],['../interface__resp_8h.html#a7c0531c63ea490d0b674960483e9ba27',1,'affichClients(int tNumClient[], float tCagnotte[], int tSus[], int tLogique): interface_resp.c']]], - ['affiche_5fclient_4',['affiche_client',['../interface__client_8c.html#a98012af1d373da58fa7dc041f97216bc',1,'affiche_client(): interface_client.c'],['../interface__client_8h.html#a98012af1d373da58fa7dc041f97216bc',1,'affiche_client(): interface_client.c']]], - ['affiche_5frecap_5fpanier_5',['affiche_recap_panier',['../client_8c.html#a927a335cb51f714f0e6e89c49f2d0258',1,'affiche_recap_panier(int panier[], int taillePanier, int references[], float poids[], float volume[], float prixUnitaire[], int quantites[]): client.c'],['../client_8h.html#a927a335cb51f714f0e6e89c49f2d0258',1,'affiche_recap_panier(int panier[], int taillePanier, int references[], float poids[], float volume[], float prixUnitaire[], int quantites[]): client.c']]], - ['affiche_5fresp_6',['affiche_resp',['../interface__resp_8c.html#abb1a25ae1531e0857856843b41805528',1,'affiche_resp(void): interface_resp.c'],['../interface__resp_8h.html#a333cea7df6b2de2a16440aaf53d63af4',1,'affiche_resp(): interface_resp.c']]], - ['affichmodifierarticle_7',['affichmodifierarticle',['../interface__resp_8c.html#af075e50ffce501b901ff31b1fb73262f',1,'affichModifierArticle(int *ref, float *poids, float *volume, float *prix): interface_resp.c'],['../interface__resp_8h.html#af075e50ffce501b901ff31b1fb73262f',1,'affichModifierArticle(int *ref, float *poids, float *volume, float *prix): interface_resp.c']]], - ['affichsupprimerarticle_8',['affichsupprimerarticle',['../interface__resp_8c.html#a47ca5882a75fd3b919ba02b028582473',1,'affichSupprimerArticle(int *ref): interface_resp.c'],['../interface__resp_8h.html#a47ca5882a75fd3b919ba02b028582473',1,'affichSupprimerArticle(int *ref): interface_resp.c']]], - ['affichunarticle_9',['affichunarticle',['../interface__resp_8c.html#a5e9ce25cbd73f9d4732b84eb5ab59d13',1,'affichUnArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique): interface_resp.c'],['../interface__resp_8h.html#a5e9ce25cbd73f9d4732b84eb5ab59d13',1,'affichUnArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique): interface_resp.c']]], - ['affichunclient_10',['affichunclient',['../interface__resp_8c.html#aa29059c1470e490b32fdf483b5570c88',1,'affichUnClient(int tNumClient[], float tCagnotte[], int tSus[], int tLogique): interface_resp.c'],['../interface__resp_8h.html#aa29059c1470e490b32fdf483b5570c88',1,'affichUnClient(int tNumClient[], float tCagnotte[], int tSus[], int tLogique): interface_resp.c']]], - ['ajouter_5farticle_5fau_5fpanier_11',['ajouter_article_au_panier',['../client_8c.html#a08acbb5bd9bf4235f8d5cdd2edb0749a',1,'ajouter_article_au_panier(int numeroClient, int references[], float poids[], float volume[], float prixUnitaire[], int numeros[], float cagnottes[], int suspendues[], int nombreArticles, int nombreClients, float volumeCoffre, float chargeMaximale, int panier[], int quantites[], int *taillePanier): client.c'],['../client_8h.html#a08acbb5bd9bf4235f8d5cdd2edb0749a',1,'ajouter_article_au_panier(int numeroClient, int references[], float poids[], float volume[], float prixUnitaire[], int numeros[], float cagnottes[], int suspendues[], int nombreArticles, int nombreClients, float volumeCoffre, float chargeMaximale, int panier[], int quantites[], int *taillePanier): client.c']]], - ['ajouterarticle_12',['ajouterarticle',['../responsable_8c.html#abce68a203cf18b85ebdad34e468815f0',1,'ajouterArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int *tLogique, int tPhysique, int ref, float poids, float volume, float prix): responsable.c'],['../responsable_8h.html#abce68a203cf18b85ebdad34e468815f0',1,'ajouterArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int *tLogique, int tPhysique, int ref, float poids, float volume, float prix): responsable.c']]], - ['ajouterclient_13',['ajouterclient',['../responsable_8c.html#a185476dbf2dae604d3deb6a3085580a2',1,'ajouterClient(int tNumClient[], float tCagnotte[], int tSus[], int *tLogique, int tPhysique): responsable.c'],['../responsable_8h.html#a185476dbf2dae604d3deb6a3085580a2',1,'ajouterClient(int tNumClient[], float tCagnotte[], int tSus[], int *tLogique, int tPhysique): responsable.c']]] -]; diff --git a/docs/html/search/all_1.js b/docs/html/search/all_1.js deleted file mode 100644 index 9b6470c..0000000 --- a/docs/html/search/all_1.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['chargementarticles_0',['chargementarticles',['../responsable_8h.html#a937ddfa15445cc5d2336130fb6567ce1',1,'chargementArticles(int tRef[], float tPoids[], float tVol[], float tPrix[], int tPhysique): responsable.c'],['../responsable_8c.html#a937ddfa15445cc5d2336130fb6567ce1',1,'chargementArticles(int tRef[], float tPoids[], float tVol[], float tPrix[], int tPhysique): responsable.c']]], - ['charger_5fclients_1',['charger_clients',['../client_8h.html#a8bc792436cb2773b638667f7a898a625',1,'charger_clients(int numeros[], float cagnottes[], int suspendues[], int tPhysique): client.c'],['../client_8c.html#a8bc792436cb2773b638667f7a898a625',1,'charger_clients(int numeros[], float cagnottes[], int suspendues[], int tPhysique): client.c']]], - ['choixinterface_2',['choixInterface',['../main_8c.html#a5fdac9110609b2cc4b43c68b643af452',1,'main.c']]], - ['client_2ec_3',['client.c',['../client_8c.html',1,'']]], - ['client_2eh_4',['client.h',['../client_8h.html',1,'']]] -]; diff --git a/docs/html/search/all_2.js b/docs/html/search/all_2.js deleted file mode 100644 index bdee9be..0000000 --- a/docs/html/search/all_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['deduire_5fcagnotte_0',['deduire_cagnotte',['../client_8c.html#a7203df964d63cb07d7b19912d5e3c3bd',1,'deduire_cagnotte(int numeroClient, float montant, int numeros[], float cagnottes[], int nombreClients, int suspendus[]): client.c'],['../client_8h.html#a7203df964d63cb07d7b19912d5e3c3bd',1,'deduire_cagnotte(int numeroClient, float montant, int numeros[], float cagnottes[], int nombreClients, int suspendus[]): client.c']]] -]; diff --git a/docs/html/search/all_3.js b/docs/html/search/all_3.js deleted file mode 100644 index 2a654ce..0000000 --- a/docs/html/search/all_3.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['global_5fclient_0',['global_client',['../interface__client_8c.html#aace0a1bcc32fda795f57fa76de7ec276',1,'global_client(): interface_client.c'],['../interface__client_8h.html#aace0a1bcc32fda795f57fa76de7ec276',1,'global_client(): interface_client.c']]], - ['global_5fresp_1',['global_resp',['../interface__resp_8c.html#a421ebe0511c91fb6431aed873aa01e35',1,'global_resp(): interface_resp.c'],['../interface__resp_8h.html#a421ebe0511c91fb6431aed873aa01e35',1,'global_resp(): interface_resp.c']]] -]; diff --git a/docs/html/search/all_4.js b/docs/html/search/all_4.js deleted file mode 100644 index 42d86ba..0000000 --- a/docs/html/search/all_4.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['interface_5fclient_2ec_0',['interface_client.c',['../interface__client_8c.html',1,'']]], - ['interface_5fclient_2eh_1',['interface_client.h',['../interface__client_8h.html',1,'']]], - ['interface_5fresp_2ec_2',['interface_resp.c',['../interface__resp_8c.html',1,'']]], - ['interface_5fresp_2eh_3',['interface_resp.h',['../interface__resp_8h.html',1,'']]] -]; diff --git a/docs/html/search/all_5.js b/docs/html/search/all_5.js deleted file mode 100644 index 534e215..0000000 --- a/docs/html/search/all_5.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['main_0',['main',['../main_8c.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main.c']]], - ['main_2ec_1',['main.c',['../main_8c.html',1,'']]], - ['menu_5fclient_2',['menu_client',['../interface__client_8c.html#a49de18c6560633af132a56085d28a8ba',1,'menu_client(int *choix): interface_client.c'],['../interface__client_8h.html#a49de18c6560633af132a56085d28a8ba',1,'menu_client(int *choix): interface_client.c']]], - ['menu_5fresp_3',['menu_resp',['../interface__resp_8c.html#a1f14dc8f23be75e1a5c0e7ce0c77f597',1,'menu_resp(int *choix): interface_resp.c'],['../interface__resp_8h.html#a1f14dc8f23be75e1a5c0e7ce0c77f597',1,'menu_resp(int *choix): interface_resp.c']]], - ['modifier_5fquantite_5farticle_5fpanier_4',['modifier_quantite_article_panier',['../client_8c.html#affb9999893c1599e32ff604b5b50899d',1,'modifier_quantite_article_panier(int panier[], int quantites[], int *taillePanier): client.c'],['../client_8h.html#affb9999893c1599e32ff604b5b50899d',1,'modifier_quantite_article_panier(int panier[], int quantites[], int *taillePanier): client.c']]], - ['modifierarticle_5',['modifierarticle',['../responsable_8c.html#ab02f9ff38b359630bc980bae859f7512',1,'modifierArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique): responsable.c'],['../responsable_8h.html#ab02f9ff38b359630bc980bae859f7512',1,'modifierArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique): responsable.c']]] -]; diff --git a/docs/html/search/all_6.js b/docs/html/search/all_6.js deleted file mode 100644 index e6d0ad7..0000000 --- a/docs/html/search/all_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['problemrecherchearticle_0',['problemRechercheArticle',['../interface__resp_8h.html#a80d8c0f53cf692db395b729a229f2df8',1,'interface_resp.h']]] -]; diff --git a/docs/html/search/all_7.js b/docs/html/search/all_7.js deleted file mode 100644 index cfcc993..0000000 --- a/docs/html/search/all_7.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['rechercherefarticle_0',['rechercherefarticle',['../responsable_8c.html#a33f342ec6aaff14efce87b42350d9bee',1,'rechercheRefArticle(int tRef[], int ref, int *index, int tLogique): responsable.c'],['../responsable_8h.html#a33f342ec6aaff14efce87b42350d9bee',1,'rechercheRefArticle(int tRef[], int ref, int *index, int tLogique): responsable.c']]], - ['reinitialiser_5fpanier_1',['reinitialiser_panier',['../client_8c.html#acbac92090885f76ac2ea79c3449af58e',1,'reinitialiser_panier(int panier[], int quantites[], int *taillePanier): client.c'],['../client_8h.html#acbac92090885f76ac2ea79c3449af58e',1,'reinitialiser_panier(int panier[], int quantites[], int *taillePanier): client.c']]], - ['responsable_2ec_2',['responsable.c',['../responsable_8c.html',1,'']]], - ['responsable_2eh_3',['responsable.h',['../responsable_8h.html',1,'']]] -]; diff --git a/docs/html/search/all_8.js b/docs/html/search/all_8.js deleted file mode 100644 index 6b3abd1..0000000 --- a/docs/html/search/all_8.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['sauvegardarticles_0',['sauvegardarticles',['../responsable_8c.html#ac9e79c89d04823f4b1b5572c9865e57d',1,'sauvegardArticles(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique): responsable.c'],['../responsable_8h.html#ac9e79c89d04823f4b1b5572c9865e57d',1,'sauvegardArticles(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique): responsable.c']]], - ['supprimer_5farticle_5fdu_5fpanier_1',['supprimer_article_du_panier',['../client_8c.html#ae12d225761d8ad5a091665228bfe676e',1,'supprimer_article_du_panier(int panier[], int quantites[], int *taillePanier): client.c'],['../client_8h.html#ae12d225761d8ad5a091665228bfe676e',1,'supprimer_article_du_panier(int panier[], int quantites[], int *taillePanier): client.c']]], - ['supprimerarticle_2',['supprimerarticle',['../responsable_8c.html#a0f8076a332f73d1edca58cfaeb42167e',1,'supprimerArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int *tLogique): responsable.c'],['../responsable_8h.html#a0f8076a332f73d1edca58cfaeb42167e',1,'supprimerArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int *tLogique): responsable.c']]] -]; diff --git a/docs/html/search/close.svg b/docs/html/search/close.svg deleted file mode 100644 index 337d6cc..0000000 --- a/docs/html/search/close.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/docs/html/search/files_0.js b/docs/html/search/files_0.js deleted file mode 100644 index 22fdf58..0000000 --- a/docs/html/search/files_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['client_2ec_0',['client.c',['../client_8c.html',1,'']]], - ['client_2eh_1',['client.h',['../client_8h.html',1,'']]] -]; diff --git a/docs/html/search/files_1.js b/docs/html/search/files_1.js deleted file mode 100644 index 42d86ba..0000000 --- a/docs/html/search/files_1.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['interface_5fclient_2ec_0',['interface_client.c',['../interface__client_8c.html',1,'']]], - ['interface_5fclient_2eh_1',['interface_client.h',['../interface__client_8h.html',1,'']]], - ['interface_5fresp_2ec_2',['interface_resp.c',['../interface__resp_8c.html',1,'']]], - ['interface_5fresp_2eh_3',['interface_resp.h',['../interface__resp_8h.html',1,'']]] -]; diff --git a/docs/html/search/files_2.js b/docs/html/search/files_2.js deleted file mode 100644 index e594314..0000000 --- a/docs/html/search/files_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['main_2ec_0',['main.c',['../main_8c.html',1,'']]] -]; diff --git a/docs/html/search/files_3.js b/docs/html/search/files_3.js deleted file mode 100644 index 47ac1a7..0000000 --- a/docs/html/search/files_3.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['responsable_2ec_0',['responsable.c',['../responsable_8c.html',1,'']]], - ['responsable_2eh_1',['responsable.h',['../responsable_8h.html',1,'']]] -]; diff --git a/docs/html/search/functions_0.js b/docs/html/search/functions_0.js deleted file mode 100644 index a0c60b4..0000000 --- a/docs/html/search/functions_0.js +++ /dev/null @@ -1,17 +0,0 @@ -var searchData= -[ - ['affichajoutarticle_0',['affichajoutarticle',['../interface__resp_8c.html#a9e01225a96daa69eb466e03fd1108c0a',1,'affichAjoutArticle(int *ref, float *poids, float *volume, float *prix): interface_resp.c'],['../interface__resp_8h.html#a9e01225a96daa69eb466e03fd1108c0a',1,'affichAjoutArticle(int *ref, float *poids, float *volume, float *prix): interface_resp.c']]], - ['affichajoutclient_1',['affichajoutclient',['../interface__resp_8c.html#a964d2d2bc5b9aa544e6187ed6cbc961c',1,'affichAjoutClient(int tNumClient[], int tLogique, int *numC): interface_resp.c'],['../interface__resp_8h.html#a964d2d2bc5b9aa544e6187ed6cbc961c',1,'affichAjoutClient(int tNumClient[], int tLogique, int *numC): interface_resp.c']]], - ['afficharticles_2',['afficharticles',['../interface__resp_8c.html#af518981f5e0d4575a6b7bae3f22e9985',1,'affichArticles(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique): interface_resp.c'],['../interface__resp_8h.html#af518981f5e0d4575a6b7bae3f22e9985',1,'affichArticles(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique): interface_resp.c']]], - ['affichclients_3',['affichclients',['../interface__resp_8c.html#a7c0531c63ea490d0b674960483e9ba27',1,'affichClients(int tNumClient[], float tCagnotte[], int tSus[], int tLogique): interface_resp.c'],['../interface__resp_8h.html#a7c0531c63ea490d0b674960483e9ba27',1,'affichClients(int tNumClient[], float tCagnotte[], int tSus[], int tLogique): interface_resp.c']]], - ['affiche_5fclient_4',['affiche_client',['../interface__client_8c.html#a98012af1d373da58fa7dc041f97216bc',1,'affiche_client(): interface_client.c'],['../interface__client_8h.html#a98012af1d373da58fa7dc041f97216bc',1,'affiche_client(): interface_client.c']]], - ['affiche_5frecap_5fpanier_5',['affiche_recap_panier',['../client_8c.html#a927a335cb51f714f0e6e89c49f2d0258',1,'affiche_recap_panier(int panier[], int taillePanier, int references[], float poids[], float volume[], float prixUnitaire[], int quantites[]): client.c'],['../client_8h.html#a927a335cb51f714f0e6e89c49f2d0258',1,'affiche_recap_panier(int panier[], int taillePanier, int references[], float poids[], float volume[], float prixUnitaire[], int quantites[]): client.c']]], - ['affiche_5fresp_6',['affiche_resp',['../interface__resp_8c.html#abb1a25ae1531e0857856843b41805528',1,'affiche_resp(void): interface_resp.c'],['../interface__resp_8h.html#a333cea7df6b2de2a16440aaf53d63af4',1,'affiche_resp(): interface_resp.c']]], - ['affichmodifierarticle_7',['affichmodifierarticle',['../interface__resp_8c.html#af075e50ffce501b901ff31b1fb73262f',1,'affichModifierArticle(int *ref, float *poids, float *volume, float *prix): interface_resp.c'],['../interface__resp_8h.html#af075e50ffce501b901ff31b1fb73262f',1,'affichModifierArticle(int *ref, float *poids, float *volume, float *prix): interface_resp.c']]], - ['affichsupprimerarticle_8',['affichsupprimerarticle',['../interface__resp_8c.html#a47ca5882a75fd3b919ba02b028582473',1,'affichSupprimerArticle(int *ref): interface_resp.c'],['../interface__resp_8h.html#a47ca5882a75fd3b919ba02b028582473',1,'affichSupprimerArticle(int *ref): interface_resp.c']]], - ['affichunarticle_9',['affichunarticle',['../interface__resp_8c.html#a5e9ce25cbd73f9d4732b84eb5ab59d13',1,'affichUnArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique): interface_resp.c'],['../interface__resp_8h.html#a5e9ce25cbd73f9d4732b84eb5ab59d13',1,'affichUnArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique): interface_resp.c']]], - ['affichunclient_10',['affichunclient',['../interface__resp_8c.html#aa29059c1470e490b32fdf483b5570c88',1,'affichUnClient(int tNumClient[], float tCagnotte[], int tSus[], int tLogique): interface_resp.c'],['../interface__resp_8h.html#aa29059c1470e490b32fdf483b5570c88',1,'affichUnClient(int tNumClient[], float tCagnotte[], int tSus[], int tLogique): interface_resp.c']]], - ['ajouter_5farticle_5fau_5fpanier_11',['ajouter_article_au_panier',['../client_8c.html#a08acbb5bd9bf4235f8d5cdd2edb0749a',1,'ajouter_article_au_panier(int numeroClient, int references[], float poids[], float volume[], float prixUnitaire[], int numeros[], float cagnottes[], int suspendues[], int nombreArticles, int nombreClients, float volumeCoffre, float chargeMaximale, int panier[], int quantites[], int *taillePanier): client.c'],['../client_8h.html#a08acbb5bd9bf4235f8d5cdd2edb0749a',1,'ajouter_article_au_panier(int numeroClient, int references[], float poids[], float volume[], float prixUnitaire[], int numeros[], float cagnottes[], int suspendues[], int nombreArticles, int nombreClients, float volumeCoffre, float chargeMaximale, int panier[], int quantites[], int *taillePanier): client.c']]], - ['ajouterarticle_12',['ajouterarticle',['../responsable_8c.html#abce68a203cf18b85ebdad34e468815f0',1,'ajouterArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int *tLogique, int tPhysique, int ref, float poids, float volume, float prix): responsable.c'],['../responsable_8h.html#abce68a203cf18b85ebdad34e468815f0',1,'ajouterArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int *tLogique, int tPhysique, int ref, float poids, float volume, float prix): responsable.c']]], - ['ajouterclient_13',['ajouterclient',['../responsable_8c.html#a185476dbf2dae604d3deb6a3085580a2',1,'ajouterClient(int tNumClient[], float tCagnotte[], int tSus[], int *tLogique, int tPhysique): responsable.c'],['../responsable_8h.html#a185476dbf2dae604d3deb6a3085580a2',1,'ajouterClient(int tNumClient[], float tCagnotte[], int tSus[], int *tLogique, int tPhysique): responsable.c']]] -]; diff --git a/docs/html/search/functions_1.js b/docs/html/search/functions_1.js deleted file mode 100644 index cbae7ee..0000000 --- a/docs/html/search/functions_1.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['chargementarticles_0',['chargementarticles',['../responsable_8c.html#a937ddfa15445cc5d2336130fb6567ce1',1,'chargementArticles(int tRef[], float tPoids[], float tVol[], float tPrix[], int tPhysique): responsable.c'],['../responsable_8h.html#a937ddfa15445cc5d2336130fb6567ce1',1,'chargementArticles(int tRef[], float tPoids[], float tVol[], float tPrix[], int tPhysique): responsable.c']]], - ['charger_5fclients_1',['charger_clients',['../client_8c.html#a8bc792436cb2773b638667f7a898a625',1,'charger_clients(int numeros[], float cagnottes[], int suspendues[], int tPhysique): client.c'],['../client_8h.html#a8bc792436cb2773b638667f7a898a625',1,'charger_clients(int numeros[], float cagnottes[], int suspendues[], int tPhysique): client.c']]], - ['choixinterface_2',['choixInterface',['../main_8c.html#a5fdac9110609b2cc4b43c68b643af452',1,'main.c']]] -]; diff --git a/docs/html/search/functions_2.js b/docs/html/search/functions_2.js deleted file mode 100644 index bdee9be..0000000 --- a/docs/html/search/functions_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['deduire_5fcagnotte_0',['deduire_cagnotte',['../client_8c.html#a7203df964d63cb07d7b19912d5e3c3bd',1,'deduire_cagnotte(int numeroClient, float montant, int numeros[], float cagnottes[], int nombreClients, int suspendus[]): client.c'],['../client_8h.html#a7203df964d63cb07d7b19912d5e3c3bd',1,'deduire_cagnotte(int numeroClient, float montant, int numeros[], float cagnottes[], int nombreClients, int suspendus[]): client.c']]] -]; diff --git a/docs/html/search/functions_3.js b/docs/html/search/functions_3.js deleted file mode 100644 index 2a654ce..0000000 --- a/docs/html/search/functions_3.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['global_5fclient_0',['global_client',['../interface__client_8c.html#aace0a1bcc32fda795f57fa76de7ec276',1,'global_client(): interface_client.c'],['../interface__client_8h.html#aace0a1bcc32fda795f57fa76de7ec276',1,'global_client(): interface_client.c']]], - ['global_5fresp_1',['global_resp',['../interface__resp_8c.html#a421ebe0511c91fb6431aed873aa01e35',1,'global_resp(): interface_resp.c'],['../interface__resp_8h.html#a421ebe0511c91fb6431aed873aa01e35',1,'global_resp(): interface_resp.c']]] -]; diff --git a/docs/html/search/functions_4.js b/docs/html/search/functions_4.js deleted file mode 100644 index 31318a5..0000000 --- a/docs/html/search/functions_4.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['main_0',['main',['../main_8c.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main.c']]], - ['menu_5fclient_1',['menu_client',['../interface__client_8c.html#a49de18c6560633af132a56085d28a8ba',1,'menu_client(int *choix): interface_client.c'],['../interface__client_8h.html#a49de18c6560633af132a56085d28a8ba',1,'menu_client(int *choix): interface_client.c']]], - ['menu_5fresp_2',['menu_resp',['../interface__resp_8c.html#a1f14dc8f23be75e1a5c0e7ce0c77f597',1,'menu_resp(int *choix): interface_resp.c'],['../interface__resp_8h.html#a1f14dc8f23be75e1a5c0e7ce0c77f597',1,'menu_resp(int *choix): interface_resp.c']]], - ['modifier_5fquantite_5farticle_5fpanier_3',['modifier_quantite_article_panier',['../client_8c.html#affb9999893c1599e32ff604b5b50899d',1,'modifier_quantite_article_panier(int panier[], int quantites[], int *taillePanier): client.c'],['../client_8h.html#affb9999893c1599e32ff604b5b50899d',1,'modifier_quantite_article_panier(int panier[], int quantites[], int *taillePanier): client.c']]], - ['modifierarticle_4',['modifierarticle',['../responsable_8c.html#ab02f9ff38b359630bc980bae859f7512',1,'modifierArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique): responsable.c'],['../responsable_8h.html#ab02f9ff38b359630bc980bae859f7512',1,'modifierArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique): responsable.c']]] -]; diff --git a/docs/html/search/functions_5.js b/docs/html/search/functions_5.js deleted file mode 100644 index e6d0ad7..0000000 --- a/docs/html/search/functions_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['problemrecherchearticle_0',['problemRechercheArticle',['../interface__resp_8h.html#a80d8c0f53cf692db395b729a229f2df8',1,'interface_resp.h']]] -]; diff --git a/docs/html/search/functions_6.js b/docs/html/search/functions_6.js deleted file mode 100644 index b8962b8..0000000 --- a/docs/html/search/functions_6.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['rechercherefarticle_0',['rechercherefarticle',['../responsable_8c.html#a33f342ec6aaff14efce87b42350d9bee',1,'rechercheRefArticle(int tRef[], int ref, int *index, int tLogique): responsable.c'],['../responsable_8h.html#a33f342ec6aaff14efce87b42350d9bee',1,'rechercheRefArticle(int tRef[], int ref, int *index, int tLogique): responsable.c']]], - ['reinitialiser_5fpanier_1',['reinitialiser_panier',['../client_8c.html#acbac92090885f76ac2ea79c3449af58e',1,'reinitialiser_panier(int panier[], int quantites[], int *taillePanier): client.c'],['../client_8h.html#acbac92090885f76ac2ea79c3449af58e',1,'reinitialiser_panier(int panier[], int quantites[], int *taillePanier): client.c']]] -]; diff --git a/docs/html/search/functions_7.js b/docs/html/search/functions_7.js deleted file mode 100644 index 6b3abd1..0000000 --- a/docs/html/search/functions_7.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['sauvegardarticles_0',['sauvegardarticles',['../responsable_8c.html#ac9e79c89d04823f4b1b5572c9865e57d',1,'sauvegardArticles(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique): responsable.c'],['../responsable_8h.html#ac9e79c89d04823f4b1b5572c9865e57d',1,'sauvegardArticles(int tRef[], float tPoids[], float tVol[], float tPrix[], int tLogique): responsable.c']]], - ['supprimer_5farticle_5fdu_5fpanier_1',['supprimer_article_du_panier',['../client_8c.html#ae12d225761d8ad5a091665228bfe676e',1,'supprimer_article_du_panier(int panier[], int quantites[], int *taillePanier): client.c'],['../client_8h.html#ae12d225761d8ad5a091665228bfe676e',1,'supprimer_article_du_panier(int panier[], int quantites[], int *taillePanier): client.c']]], - ['supprimerarticle_2',['supprimerarticle',['../responsable_8c.html#a0f8076a332f73d1edca58cfaeb42167e',1,'supprimerArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int *tLogique): responsable.c'],['../responsable_8h.html#a0f8076a332f73d1edca58cfaeb42167e',1,'supprimerArticle(int tRef[], float tPoids[], float tVol[], float tPrix[], int *tLogique): responsable.c']]] -]; diff --git a/docs/html/search/mag.svg b/docs/html/search/mag.svg deleted file mode 100644 index ffb6cf0..0000000 --- a/docs/html/search/mag.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - diff --git a/docs/html/search/mag_d.svg b/docs/html/search/mag_d.svg deleted file mode 100644 index 4122773..0000000 --- a/docs/html/search/mag_d.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - diff --git a/docs/html/search/mag_sel.svg b/docs/html/search/mag_sel.svg deleted file mode 100644 index 553dba8..0000000 --- a/docs/html/search/mag_sel.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - diff --git a/docs/html/search/mag_seld.svg b/docs/html/search/mag_seld.svg deleted file mode 100644 index c906f84..0000000 --- a/docs/html/search/mag_seld.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - diff --git a/docs/html/search/search.css b/docs/html/search/search.css deleted file mode 100644 index 19f76f9..0000000 --- a/docs/html/search/search.css +++ /dev/null @@ -1,291 +0,0 @@ -/*---------------- Search Box positioning */ - -#main-menu > li:last-child { - /* This
  • object is the parent of the search bar */ - display: flex; - justify-content: center; - align-items: center; - height: 36px; - margin-right: 1em; -} - -/*---------------- Search box styling */ - -.SRPage * { - font-weight: normal; - line-height: normal; -} - -dark-mode-toggle { - margin-left: 5px; - display: flex; - float: right; -} - -#MSearchBox { - display: inline-block; - white-space : nowrap; - background: var(--search-background-color); - border-radius: 0.65em; - box-shadow: var(--search-box-shadow); - z-index: 102; -} - -#MSearchBox .left { - display: inline-block; - vertical-align: middle; - height: 1.4em; -} - -#MSearchSelect { - display: inline-block; - vertical-align: middle; - width: 20px; - height: 19px; - background-image: var(--search-magnification-select-image); - margin: 0 0 0 0.3em; - padding: 0; -} - -#MSearchSelectExt { - display: inline-block; - vertical-align: middle; - width: 10px; - height: 19px; - background-image: var(--search-magnification-image); - margin: 0 0 0 0.5em; - padding: 0; -} - - -#MSearchField { - display: inline-block; - vertical-align: middle; - width: 7.5em; - height: 19px; - margin: 0 0.15em; - padding: 0; - line-height: 1em; - border:none; - color: var(--search-foreground-color); - outline: none; - font-family: var(--font-family-search); - -webkit-border-radius: 0px; - border-radius: 0px; - background: none; -} - -@media(hover: none) { - /* to avoid zooming on iOS */ - #MSearchField { - font-size: 16px; - } -} - -#MSearchBox .right { - display: inline-block; - vertical-align: middle; - width: 1.4em; - height: 1.4em; -} - -#MSearchClose { - display: none; - font-size: inherit; - background : none; - border: none; - margin: 0; - padding: 0; - outline: none; - -} - -#MSearchCloseImg { - padding: 0.3em; - margin: 0; -} - -.MSearchBoxActive #MSearchField { - color: var(--search-active-color); -} - - - -/*---------------- Search filter selection */ - -#MSearchSelectWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid var(--search-filter-border-color); - background-color: var(--search-filter-background-color); - z-index: 10001; - padding-top: 4px; - padding-bottom: 4px; - -moz-border-radius: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -.SelectItem { - font: 8pt var(--font-family-search); - padding-left: 2px; - padding-right: 12px; - border: 0px; -} - -span.SelectionMark { - margin-right: 4px; - font-family: var(--font-family-monospace); - outline-style: none; - text-decoration: none; -} - -a.SelectItem { - display: block; - outline-style: none; - color: var(--search-filter-foreground-color); - text-decoration: none; - padding-left: 6px; - padding-right: 12px; -} - -a.SelectItem:focus, -a.SelectItem:active { - color: var(--search-filter-foreground-color); - outline-style: none; - text-decoration: none; -} - -a.SelectItem:hover { - color: var(--search-filter-highlight-text-color); - background-color: var(--search-filter-highlight-bg-color); - outline-style: none; - text-decoration: none; - cursor: pointer; - display: block; -} - -/*---------------- Search results window */ - -iframe#MSearchResults { - /*width: 60ex;*/ - height: 15em; -} - -#MSearchResultsWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid var(--search-results-border-color); - background-color: var(--search-results-background-color); - z-index:10000; - width: 300px; - height: 400px; - overflow: auto; -} - -/* ----------------------------------- */ - - -#SRIndex { - clear:both; -} - -.SREntry { - font-size: 10pt; - padding-left: 1ex; -} - -.SRPage .SREntry { - font-size: 8pt; - padding: 1px 5px; -} - -div.SRPage { - margin: 5px 2px; - background-color: var(--search-results-background-color); -} - -.SRChildren { - padding-left: 3ex; padding-bottom: .5em -} - -.SRPage .SRChildren { - display: none; -} - -.SRSymbol { - font-weight: bold; - color: var(--search-results-foreground-color); - font-family: var(--font-family-search); - text-decoration: none; - outline: none; -} - -a.SRScope { - display: block; - color: var(--search-results-foreground-color); - font-family: var(--font-family-search); - font-size: 8pt; - text-decoration: none; - outline: none; -} - -a.SRSymbol:focus, a.SRSymbol:active, -a.SRScope:focus, a.SRScope:active { - text-decoration: underline; -} - -span.SRScope { - padding-left: 4px; - font-family: var(--font-family-search); -} - -.SRPage .SRStatus { - padding: 2px 5px; - font-size: 8pt; - font-style: italic; - font-family: var(--font-family-search); -} - -.SRResult { - display: none; -} - -div.searchresults { - margin-left: 10px; - margin-right: 10px; -} - -/*---------------- External search page results */ - -.pages b { - color: white; - padding: 5px 5px 3px 5px; - background-image: var(--nav-gradient-active-image-parent); - background-repeat: repeat-x; - text-shadow: 0 1px 1px #000000; -} - -.pages { - line-height: 17px; - margin-left: 4px; - text-decoration: none; -} - -.hl { - font-weight: bold; -} - -#searchresults { - margin-bottom: 20px; -} - -.searchpages { - margin-top: 10px; -} - diff --git a/docs/html/search/search.js b/docs/html/search/search.js deleted file mode 100644 index 6fd40c6..0000000 --- a/docs/html/search/search.js +++ /dev/null @@ -1,840 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file - */ -function convertToId(search) -{ - var result = ''; - for (i=0;i do a search - { - this.Search(); - } - } - - this.OnSearchSelectKey = function(evt) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex0) // Up - { - this.searchIndex--; - this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==13 || e.keyCode==27) - { - e.stopPropagation(); - this.OnSelectItem(this.searchIndex); - this.CloseSelectionWindow(); - this.DOMSearchField().focus(); - } - return false; - } - - // --------- Actions - - // Closes the results window. - this.CloseResultsWindow = function() - { - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.Activate(false); - } - - this.CloseSelectionWindow = function() - { - this.DOMSearchSelectWindow().style.display = 'none'; - } - - // Performs a search. - this.Search = function() - { - this.keyTimeout = 0; - - // strip leading whitespace - var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - - var code = searchValue.toLowerCase().charCodeAt(0); - var idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair - { - idxChar = searchValue.substr(0, 2); - } - - var jsFile; - - var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) - { - var hexCode=idx.toString(16); - jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; - } - - var loadJS = function(url, impl, loc){ - var scriptTag = document.createElement('script'); - scriptTag.src = url; - scriptTag.onload = impl; - scriptTag.onreadystatechange = impl; - loc.appendChild(scriptTag); - } - - var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - var domSearchBox = this.DOMSearchBox(); - var domPopupSearchResults = this.DOMPopupSearchResults(); - var domSearchClose = this.DOMSearchClose(); - var resultsPath = this.resultsPath; - - var handleResults = function() { - document.getElementById("Loading").style.display="none"; - if (typeof searchData !== 'undefined') { - createResults(resultsPath); - document.getElementById("NoMatches").style.display="none"; - } - - if (idx!=-1) { - searchResults.Search(searchValue); - } else { // no file with search results => force empty search results - searchResults.Search('===='); - } - - if (domPopupSearchResultsWindow.style.display!='block') - { - domSearchClose.style.display = 'inline-block'; - var left = getXPos(domSearchBox) + 150; - var top = getYPos(domSearchBox) + 20; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - var maxWidth = document.body.clientWidth; - var maxHeight = document.body.clientHeight; - var width = 300; - if (left<10) left=10; - if (width+left+8>maxWidth) width=maxWidth-left-8; - var height = 400; - if (height+top+8>maxHeight) height=maxHeight-top-8; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - domPopupSearchResultsWindow.style.width = width + 'px'; - domPopupSearchResultsWindow.style.height = height + 'px'; - } - } - - if (jsFile) { - loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); - } else { - handleResults(); - } - - this.lastSearchValue = searchValue; - } - - // -------- Activation Functions - - // Activates or deactivates the search panel, resetting things to - // their default values if necessary. - this.Activate = function(isActive) - { - if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) - { - this.DOMSearchBox().className = 'MSearchBoxActive'; - this.searchActive = true; - } - else if (!isActive) // directly remove the panel - { - this.DOMSearchBox().className = 'MSearchBoxInactive'; - this.searchActive = false; - this.lastSearchValue = '' - this.lastResultsPage = ''; - this.DOMSearchField().value = ''; - } - } -} - -// ----------------------------------------------------------------------- - -// The class that handles everything on the search results page. -function SearchResults(name) -{ - // The number of matches from the last run of . - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; - - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) - { - var parentElement = document.getElementById(id); - var element = parentElement.firstChild; - - while (element && element!=parentElement) - { - if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') - { - return element; - } - - if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) - { - element = element.firstChild; - } - else if (element.nextSibling) - { - element = element.nextSibling; - } - else - { - do - { - element = element.parentNode; - } - while (element && element!=parentElement && !element.nextSibling); - - if (element && element!=parentElement) - { - element = element.nextSibling; - } - } - } - } - - this.Toggle = function(id) - { - var element = this.FindChildElement(id); - if (element) - { - if (element.style.display == 'block') - { - element.style.display = 'none'; - } - else - { - element.style.display = 'block'; - } - } - } - - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) - { - if (!search) // get search word from URL - { - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); - } - - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - var resultRows = document.getElementsByTagName("div"); - var matches = 0; - - var i = 0; - while (i < resultRows.length) - { - var row = resultRows.item(i); - if (row.className == "SRResult") - { - var rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) - { - row.style.display = 'block'; - matches++; - } - else - { - row.style.display = 'none'; - } - } - i++; - } - document.getElementById("Searching").style.display='none'; - if (matches == 0) // no results - { - document.getElementById("NoMatches").style.display='block'; - } - else // at least one result - { - document.getElementById("NoMatches").style.display='none'; - } - this.lastMatchCount = matches; - return true; - } - - // return the first item with index index or higher that is visible - this.NavNext = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index++; - } - return focusItem; - } - - this.NavPrev = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index--; - } - return focusItem; - } - - this.ProcessKeys = function(e) - { - if (e.type == "keydown") - { - this.repeatOn = false; - this.lastKey = e.keyCode; - } - else if (e.type == "keypress") - { - if (!this.repeatOn) - { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } - } - else if (e.type == "keyup") - { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; - } - - this.Nav = function(evt,itemIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - var newIndex = itemIndex-1; - var focusItem = this.NavPrev(newIndex); - if (focusItem) - { - var child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') // children visible - { - var n=0; - var tmpElem; - while (1) // search for last child - { - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) - { - focusItem = tmpElem; - } - else // found it! - { - break; - } - n++; - } - } - } - if (focusItem) - { - focusItem.focus(); - } - else // return focus to search field - { - document.getElementById("MSearchField").focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = itemIndex+1; - var focusItem; - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') // children visible - { - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); - } - else if (this.lastKey==39) // Right - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } - else if (this.lastKey==37) // Left - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } - else if (this.lastKey==27) // Escape - { - e.stopPropagation(); - searchBox.CloseResultsWindow(); - document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } - - this.NavChild = function(evt,itemIndex,childIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - if (childIndex>0) - { - var newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } - else // already at first child, jump to parent - { - document.getElementById('Item'+itemIndex).focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = childIndex+1; - var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) // last child, jump to parent next parent - { - elem = this.NavNext(itemIndex+1); - } - if (elem) - { - elem.focus(); - } - } - else if (this.lastKey==27) // Escape - { - e.stopPropagation(); - searchBox.CloseResultsWindow(); - document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } -} - -function setKeyActions(elem,action) -{ - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); -} - -function setClassAttr(elem,attr) -{ - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); -} - -function createResults(resultsPath) -{ - var results = document.getElementById("SRResults"); - results.innerHTML = ''; - for (var e=0; eli>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file diff --git a/docs/latex/Makefile b/docs/latex/Makefile deleted file mode 100644 index 7f82972..0000000 --- a/docs/latex/Makefile +++ /dev/null @@ -1,27 +0,0 @@ -LATEX_CMD?=pdflatex -MKIDX_CMD?=makeindex -BIBTEX_CMD?=bibtex -LATEX_COUNT?=8 -MANUAL_FILE?=refman - -all: $(MANUAL_FILE).pdf - -pdf: $(MANUAL_FILE).pdf - -$(MANUAL_FILE).pdf: clean $(MANUAL_FILE).tex - $(LATEX_CMD) $(MANUAL_FILE) - $(MKIDX_CMD) $(MANUAL_FILE).idx - $(LATEX_CMD) $(MANUAL_FILE) - latex_count=$(LATEX_COUNT) ; \ - while grep -E -s 'Rerun (LaTeX|to get cross-references right|to get bibliographical references right)' $(MANUAL_FILE).log && [ $$latex_count -gt 0 ] ;\ - do \ - echo "Rerunning latex...." ;\ - $(LATEX_CMD) $(MANUAL_FILE) ;\ - latex_count=`expr $$latex_count - 1` ;\ - done - $(MKIDX_CMD) $(MANUAL_FILE).idx - $(LATEX_CMD) $(MANUAL_FILE) - - -clean: - rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl $(MANUAL_FILE).pdf diff --git a/docs/latex/client_8c.tex b/docs/latex/client_8c.tex deleted file mode 100644 index 05b5778..0000000 --- a/docs/latex/client_8c.tex +++ /dev/null @@ -1,233 +0,0 @@ -\doxysection{src/app/core\+\_\+logic/client.c File Reference} -\hypertarget{client_8c}{}\label{client_8c}\index{src/app/core\_logic/client.c@{src/app/core\_logic/client.c}} - - -Fonctions liées à la gestion des clients et de leur panier. - - -{\ttfamily \#include $<$stdio.\+h$>$}\newline -{\ttfamily \#include "{}client.\+h"{}}\newline -\doxysubsubsection*{Macros} -\begin{DoxyCompactItemize} -\item -\Hypertarget{client_8c_ad6a5b5050a3ed6cffbb52fe15c39e587}\label{client_8c_ad6a5b5050a3ed6cffbb52fe15c39e587} -\#define {\bfseries MAX\+\_\+\+ARTICLES}~100 -\item -\Hypertarget{client_8c_a0a8f91f93d75a07f0ae45077db45b3eb}\label{client_8c_a0a8f91f93d75a07f0ae45077db45b3eb} -\#define {\bfseries MAX\+\_\+\+CLIENTS}~100 -\end{DoxyCompactItemize} -\doxysubsubsection*{Functions} -\begin{DoxyCompactItemize} -\item -int \mbox{\hyperlink{client_8c_a8bc792436cb2773b638667f7a898a625}{charger\+\_\+clients}} (int numeros\mbox{[}$\,$\mbox{]}, float cagnottes\mbox{[}$\,$\mbox{]}, int suspendues\mbox{[}$\,$\mbox{]}, int t\+Physique) -\begin{DoxyCompactList}\small\item\em Charge les données des clients à partir d\textquotesingle{}un fichier. \end{DoxyCompactList}\item -void \mbox{\hyperlink{client_8c_a08acbb5bd9bf4235f8d5cdd2edb0749a}{ajouter\+\_\+article\+\_\+au\+\_\+panier}} (int numero\+Client, int references\mbox{[}$\,$\mbox{]}, float poids\mbox{[}$\,$\mbox{]}, float volume\mbox{[}$\,$\mbox{]}, float prix\+Unitaire\mbox{[}$\,$\mbox{]}, int numeros\mbox{[}$\,$\mbox{]}, float cagnottes\mbox{[}$\,$\mbox{]}, int suspendues\mbox{[}$\,$\mbox{]}, int nombre\+Articles, int nombre\+Clients, float volume\+Coffre, float charge\+Maximale, int panier\mbox{[}$\,$\mbox{]}, int quantites\mbox{[}$\,$\mbox{]}, int \texorpdfstring{$\ast$}{*}taille\+Panier) -\begin{DoxyCompactList}\small\item\em Ajoute un article au panier du client. \end{DoxyCompactList}\item -void \mbox{\hyperlink{client_8c_ae12d225761d8ad5a091665228bfe676e}{supprimer\+\_\+article\+\_\+du\+\_\+panier}} (int panier\mbox{[}$\,$\mbox{]}, int quantites\mbox{[}$\,$\mbox{]}, int \texorpdfstring{$\ast$}{*}taille\+Panier) -\begin{DoxyCompactList}\small\item\em Supprime un article du panier du client. \end{DoxyCompactList}\item -void \mbox{\hyperlink{client_8c_a927a335cb51f714f0e6e89c49f2d0258}{affiche\+\_\+recap\+\_\+panier}} (int panier\mbox{[}$\,$\mbox{]}, int taille\+Panier, int references\mbox{[}$\,$\mbox{]}, float poids\mbox{[}$\,$\mbox{]}, float volume\mbox{[}$\,$\mbox{]}, float prix\+Unitaire\mbox{[}$\,$\mbox{]}, int quantites\mbox{[}$\,$\mbox{]}) -\begin{DoxyCompactList}\small\item\em Affiche un récapitulatif du contenu du panier. \end{DoxyCompactList}\item -void \mbox{\hyperlink{client_8c_affb9999893c1599e32ff604b5b50899d}{modifier\+\_\+quantite\+\_\+article\+\_\+panier}} (int panier\mbox{[}$\,$\mbox{]}, int quantites\mbox{[}$\,$\mbox{]}, int \texorpdfstring{$\ast$}{*}taille\+Panier) -\begin{DoxyCompactList}\small\item\em Modifie la quantité d\textquotesingle{}un article dans le panier du client. \end{DoxyCompactList}\item -void \mbox{\hyperlink{client_8c_acbac92090885f76ac2ea79c3449af58e}{reinitialiser\+\_\+panier}} (int panier\mbox{[}$\,$\mbox{]}, int quantites\mbox{[}$\,$\mbox{]}, int \texorpdfstring{$\ast$}{*}taille\+Panier) -\begin{DoxyCompactList}\small\item\em Réinitialise le panier du client. \end{DoxyCompactList}\item -void \mbox{\hyperlink{client_8c_a7203df964d63cb07d7b19912d5e3c3bd}{deduire\+\_\+cagnotte}} (int numero\+Client, float montant, int numeros\mbox{[}$\,$\mbox{]}, float cagnottes\mbox{[}$\,$\mbox{]}, int nombre\+Clients, int suspendus\mbox{[}$\,$\mbox{]}) -\begin{DoxyCompactList}\small\item\em Déduit un montant de la cagnotte du client. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\doxysubsection{Detailed Description} -Fonctions liées à la gestion des clients et de leur panier. - - - -\doxysubsection{Function Documentation} -\Hypertarget{client_8c_a927a335cb51f714f0e6e89c49f2d0258}\label{client_8c_a927a335cb51f714f0e6e89c49f2d0258} -\index{client.c@{client.c}!affiche\_recap\_panier@{affiche\_recap\_panier}} -\index{affiche\_recap\_panier@{affiche\_recap\_panier}!client.c@{client.c}} -\doxysubsubsection{\texorpdfstring{affiche\_recap\_panier()}{affiche\_recap\_panier()}} -{\footnotesize\ttfamily void affiche\+\_\+recap\+\_\+panier (\begin{DoxyParamCaption}\item[{int}]{panier\mbox{[}$\,$\mbox{]}, }\item[{int}]{taille\+Panier, }\item[{int}]{references\mbox{[}$\,$\mbox{]}, }\item[{float}]{poids\mbox{[}$\,$\mbox{]}, }\item[{float}]{volume\mbox{[}$\,$\mbox{]}, }\item[{float}]{prix\+Unitaire\mbox{[}$\,$\mbox{]}, }\item[{int}]{quantites\mbox{[}$\,$\mbox{]} }\end{DoxyParamCaption})} - - - -Affiche un récapitulatif du contenu du panier. - -Cette fonction permet d\textquotesingle{}afficher un récapitulatif du contenu du panier. - - -\begin{DoxyParams}{Parameters} -{\em panier} & -\/ Tableau des références des articles dans le panier. \\ -\hline -{\em taille\+Panier} & -\/ Taille du panier. \\ -\hline -{\em references} & -\/ Tableau des références des articles. \\ -\hline -{\em poids} & -\/ Tableau des poids des articles. \\ -\hline -{\em volume} & -\/ Tableau des volumes des articles. \\ -\hline -{\em prix\+Unitaire} & -\/ Tableau des prix unitaires des articles. \\ -\hline -{\em quantites} & -\/ Tableau des quantités de chaque article dans le panier. \\ -\hline -\end{DoxyParams} -\Hypertarget{client_8c_a08acbb5bd9bf4235f8d5cdd2edb0749a}\label{client_8c_a08acbb5bd9bf4235f8d5cdd2edb0749a} -\index{client.c@{client.c}!ajouter\_article\_au\_panier@{ajouter\_article\_au\_panier}} -\index{ajouter\_article\_au\_panier@{ajouter\_article\_au\_panier}!client.c@{client.c}} -\doxysubsubsection{\texorpdfstring{ajouter\_article\_au\_panier()}{ajouter\_article\_au\_panier()}} -{\footnotesize\ttfamily void ajouter\+\_\+article\+\_\+au\+\_\+panier (\begin{DoxyParamCaption}\item[{int}]{numero\+Client, }\item[{int}]{references\mbox{[}$\,$\mbox{]}, }\item[{float}]{poids\mbox{[}$\,$\mbox{]}, }\item[{float}]{volume\mbox{[}$\,$\mbox{]}, }\item[{float}]{prix\+Unitaire\mbox{[}$\,$\mbox{]}, }\item[{int}]{numeros\mbox{[}$\,$\mbox{]}, }\item[{float}]{cagnottes\mbox{[}$\,$\mbox{]}, }\item[{int}]{suspendues\mbox{[}$\,$\mbox{]}, }\item[{int}]{nombre\+Articles, }\item[{int}]{nombre\+Clients, }\item[{float}]{volume\+Coffre, }\item[{float}]{charge\+Maximale, }\item[{int}]{panier\mbox{[}$\,$\mbox{]}, }\item[{int}]{quantites\mbox{[}$\,$\mbox{]}, }\item[{int \texorpdfstring{$\ast$}{*}}]{taille\+Panier }\end{DoxyParamCaption})} - - - -Ajoute un article au panier du client. - -Cette fonction permet d\textquotesingle{}ajouter un article au panier du client. - - -\begin{DoxyParams}{Parameters} -{\em numero\+Client} & -\/ Numéro du client. \\ -\hline -{\em references} & -\/ Tableau des références des articles. \\ -\hline -{\em poids} & -\/ Tableau des poids des articles. \\ -\hline -{\em volume} & -\/ Tableau des volumes des articles. \\ -\hline -{\em prix\+Unitaire} & -\/ Tableau des prix unitaires des articles. \\ -\hline -{\em numeros} & -\/ Tableau des numéros de clients. \\ -\hline -{\em cagnottes} & -\/ Tableau des cagnottes des clients. \\ -\hline -{\em suspendues} & -\/ Tableau des états de suspension des clients. \\ -\hline -{\em nombre\+Articles} & -\/ Nombre d\textquotesingle{}articles disponibles. \\ -\hline -{\em nombre\+Clients} & -\/ Nombre de clients. \\ -\hline -{\em volume\+Coffre} & -\/ Volume total du coffre. \\ -\hline -{\em charge\+Maximale} & -\/ Charge maximale du coffre. \\ -\hline -{\em panier} & -\/ Tableau des références des articles dans le panier. \\ -\hline -{\em quantites} & -\/ Tableau des quantités de chaque article dans le panier. \\ -\hline -{\em taille\+Panier} & -\/ Taille du panier. \\ -\hline -\end{DoxyParams} -\Hypertarget{client_8c_a8bc792436cb2773b638667f7a898a625}\label{client_8c_a8bc792436cb2773b638667f7a898a625} -\index{client.c@{client.c}!charger\_clients@{charger\_clients}} -\index{charger\_clients@{charger\_clients}!client.c@{client.c}} -\doxysubsubsection{\texorpdfstring{charger\_clients()}{charger\_clients()}} -{\footnotesize\ttfamily int charger\+\_\+clients (\begin{DoxyParamCaption}\item[{int}]{numeros\mbox{[}$\,$\mbox{]}, }\item[{float}]{cagnottes\mbox{[}$\,$\mbox{]}, }\item[{int}]{suspendues\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Physique }\end{DoxyParamCaption})} - - - -Charge les données des clients à partir d\textquotesingle{}un fichier. - -Cette fonction permet de charger les données des clients à partir d\textquotesingle{}un fichier. - - -\begin{DoxyParams}{Parameters} -{\em numeros} & -\/ Tableau des numéros de clients. \\ -\hline -{\em cagnottes} & -\/ Tableau des cagnottes des clients. \\ -\hline -{\em suspendues} & -\/ Tableau des états de suspension des clients. \\ -\hline -{\em t\+Physique} & -\/ Taille du tableau physique. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Le nombre de clients chargés ou -\/1 en cas d\textquotesingle{}erreur. -\end{DoxyReturn} -\Hypertarget{client_8c_a7203df964d63cb07d7b19912d5e3c3bd}\label{client_8c_a7203df964d63cb07d7b19912d5e3c3bd} -\index{client.c@{client.c}!deduire\_cagnotte@{deduire\_cagnotte}} -\index{deduire\_cagnotte@{deduire\_cagnotte}!client.c@{client.c}} -\doxysubsubsection{\texorpdfstring{deduire\_cagnotte()}{deduire\_cagnotte()}} -{\footnotesize\ttfamily void deduire\+\_\+cagnotte (\begin{DoxyParamCaption}\item[{int}]{numero\+Client, }\item[{float}]{montant, }\item[{int}]{numeros\mbox{[}$\,$\mbox{]}, }\item[{float}]{cagnottes\mbox{[}$\,$\mbox{]}, }\item[{int}]{nombre\+Clients, }\item[{int}]{suspendus\mbox{[}$\,$\mbox{]} }\end{DoxyParamCaption})} - - - -Déduit un montant de la cagnotte du client. - -Cette fonction permet de déduire un montant de la cagnotte du client. - - -\begin{DoxyParams}{Parameters} -{\em numero\+Client} & -\/ Numéro du client. \\ -\hline -{\em montant} & -\/ Montant à déduire de la cagnotte. \\ -\hline -{\em numeros} & -\/ Tableau des numéros de clients. \\ -\hline -{\em cagnottes} & -\/ Tableau des cagnottes des clients. \\ -\hline -{\em nombre\+Clients} & -\/ Nombre de clients. \\ -\hline -{\em suspendus} & -\/ Tableau des états de suspension des clients. \\ -\hline -\end{DoxyParams} -\Hypertarget{client_8c_affb9999893c1599e32ff604b5b50899d}\label{client_8c_affb9999893c1599e32ff604b5b50899d} -\index{client.c@{client.c}!modifier\_quantite\_article\_panier@{modifier\_quantite\_article\_panier}} -\index{modifier\_quantite\_article\_panier@{modifier\_quantite\_article\_panier}!client.c@{client.c}} -\doxysubsubsection{\texorpdfstring{modifier\_quantite\_article\_panier()}{modifier\_quantite\_article\_panier()}} -{\footnotesize\ttfamily void modifier\+\_\+quantite\+\_\+article\+\_\+panier (\begin{DoxyParamCaption}\item[{int}]{panier\mbox{[}$\,$\mbox{]}, }\item[{int}]{quantites\mbox{[}$\,$\mbox{]}, }\item[{int \texorpdfstring{$\ast$}{*}}]{taille\+Panier }\end{DoxyParamCaption})} - - - -Modifie la quantité d\textquotesingle{}un article dans le panier du client. - -Cette fonction permet de modifier la quantité d\textquotesingle{}un article dans le panier du client. - - -\begin{DoxyParams}{Parameters} -{\em panier} & -\/ Tableau des références des articles dans le panier. \\ -\hline -{\em quantites} & -\/ Tableau des quantités de chaque article dans le panier. \\ -\hline -{\em taille\+Panier} & -\/ Taille du panier. \\ -\hline -\end{DoxyParams} -\Hypertarget{client_8c_acbac92090885f76ac2ea79c3449af58e}\label{client_8c_acbac92090885f76ac2ea79c3449af58e} -\index{client.c@{client.c}!reinitialiser\_panier@{reinitialiser\_panier}} -\index{reinitialiser\_panier@{reinitialiser\_panier}!client.c@{client.c}} -\doxysubsubsection{\texorpdfstring{reinitialiser\_panier()}{reinitialiser\_panier()}} -{\footnotesize\ttfamily void reinitialiser\+\_\+panier (\begin{DoxyParamCaption}\item[{int}]{panier\mbox{[}$\,$\mbox{]}, }\item[{int}]{quantites\mbox{[}$\,$\mbox{]}, }\item[{int \texorpdfstring{$\ast$}{*}}]{taille\+Panier }\end{DoxyParamCaption})} - - - -Réinitialise le panier du client. - -Cette fonction permet de réinitialiser le panier du client. - - -\begin{DoxyParams}{Parameters} -{\em panier} & -\/ Tableau des références des articles dans le panier. \\ -\hline -{\em quantites} & -\/ Tableau des quantités de chaque article dans le panier. \\ -\hline -{\em taille\+Panier} & -\/ Taille du panier. \\ -\hline -\end{DoxyParams} -\Hypertarget{client_8c_ae12d225761d8ad5a091665228bfe676e}\label{client_8c_ae12d225761d8ad5a091665228bfe676e} -\index{client.c@{client.c}!supprimer\_article\_du\_panier@{supprimer\_article\_du\_panier}} -\index{supprimer\_article\_du\_panier@{supprimer\_article\_du\_panier}!client.c@{client.c}} -\doxysubsubsection{\texorpdfstring{supprimer\_article\_du\_panier()}{supprimer\_article\_du\_panier()}} -{\footnotesize\ttfamily void supprimer\+\_\+article\+\_\+du\+\_\+panier (\begin{DoxyParamCaption}\item[{int}]{panier\mbox{[}$\,$\mbox{]}, }\item[{int}]{quantites\mbox{[}$\,$\mbox{]}, }\item[{int \texorpdfstring{$\ast$}{*}}]{taille\+Panier }\end{DoxyParamCaption})} - - - -Supprime un article du panier du client. - -Cette fonction permet de supprimer un article du panier du client. - - -\begin{DoxyParams}{Parameters} -{\em panier} & -\/ Tableau des références des articles dans le panier. \\ -\hline -{\em quantites} & -\/ Tableau des quantités de chaque article dans le panier. \\ -\hline -{\em taille\+Panier} & -\/ Taille du panier. \\ -\hline -\end{DoxyParams} diff --git a/docs/latex/client_8h.tex b/docs/latex/client_8h.tex deleted file mode 100644 index e5743ec..0000000 --- a/docs/latex/client_8h.tex +++ /dev/null @@ -1,330 +0,0 @@ -\doxysection{src/app/core\+\_\+logic/client.h File Reference} -\hypertarget{client_8h}{}\label{client_8h}\index{src/app/core\_logic/client.h@{src/app/core\_logic/client.h}} - - -Fonctions liées à la gestion des clients et de leur panier. - - -{\ttfamily \#include $<$stdio.\+h$>$}\newline -{\ttfamily \#include $<$stdlib.\+h$>$}\newline -\doxysubsubsection*{Functions} -\begin{DoxyCompactItemize} -\item -int \mbox{\hyperlink{client_8h_a8bc792436cb2773b638667f7a898a625}{charger\+\_\+clients}} (int numeros\mbox{[}$\,$\mbox{]}, float cagnottes\mbox{[}$\,$\mbox{]}, int suspendues\mbox{[}$\,$\mbox{]}, int t\+Physique) -\begin{DoxyCompactList}\small\item\em Charge les données des clients à partir d\textquotesingle{}un fichier. \end{DoxyCompactList}\item -void \mbox{\hyperlink{client_8h_a08acbb5bd9bf4235f8d5cdd2edb0749a}{ajouter\+\_\+article\+\_\+au\+\_\+panier}} (int numero\+Client, int references\mbox{[}$\,$\mbox{]}, float poids\mbox{[}$\,$\mbox{]}, float volume\mbox{[}$\,$\mbox{]}, float prix\+Unitaire\mbox{[}$\,$\mbox{]}, int numeros\mbox{[}$\,$\mbox{]}, float cagnottes\mbox{[}$\,$\mbox{]}, int suspendues\mbox{[}$\,$\mbox{]}, int nombre\+Articles, int nombre\+Clients, float volume\+Coffre, float charge\+Maximale, int panier\mbox{[}$\,$\mbox{]}, int quantites\mbox{[}$\,$\mbox{]}, int \texorpdfstring{$\ast$}{*}taille\+Panier) -\begin{DoxyCompactList}\small\item\em Ajoute un article au panier du client. \end{DoxyCompactList}\item -void \mbox{\hyperlink{client_8h_ae12d225761d8ad5a091665228bfe676e}{supprimer\+\_\+article\+\_\+du\+\_\+panier}} (int panier\mbox{[}$\,$\mbox{]}, int quantites\mbox{[}$\,$\mbox{]}, int \texorpdfstring{$\ast$}{*}taille\+Panier) -\begin{DoxyCompactList}\small\item\em Supprime un article du panier du client. \end{DoxyCompactList}\item -void \mbox{\hyperlink{client_8h_a927a335cb51f714f0e6e89c49f2d0258}{affiche\+\_\+recap\+\_\+panier}} (int panier\mbox{[}$\,$\mbox{]}, int taille\+Panier, int references\mbox{[}$\,$\mbox{]}, float poids\mbox{[}$\,$\mbox{]}, float volume\mbox{[}$\,$\mbox{]}, float prix\+Unitaire\mbox{[}$\,$\mbox{]}, int quantites\mbox{[}$\,$\mbox{]}) -\begin{DoxyCompactList}\small\item\em Affiche un récapitulatif du contenu du panier. \end{DoxyCompactList}\item -void \mbox{\hyperlink{client_8h_affb9999893c1599e32ff604b5b50899d}{modifier\+\_\+quantite\+\_\+article\+\_\+panier}} (int panier\mbox{[}$\,$\mbox{]}, int quantites\mbox{[}$\,$\mbox{]}, int \texorpdfstring{$\ast$}{*}taille\+Panier) -\begin{DoxyCompactList}\small\item\em Modifie la quantité d\textquotesingle{}un article dans le panier du client. \end{DoxyCompactList}\item -void \mbox{\hyperlink{client_8h_acbac92090885f76ac2ea79c3449af58e}{reinitialiser\+\_\+panier}} (int panier\mbox{[}$\,$\mbox{]}, int quantites\mbox{[}$\,$\mbox{]}, int \texorpdfstring{$\ast$}{*}taille\+Panier) -\begin{DoxyCompactList}\small\item\em Réinitialise le panier du client. \end{DoxyCompactList}\item -void \mbox{\hyperlink{client_8h_a7203df964d63cb07d7b19912d5e3c3bd}{deduire\+\_\+cagnotte}} (int numero\+Client, float montant, int numeros\mbox{[}$\,$\mbox{]}, float cagnottes\mbox{[}$\,$\mbox{]}, int nombre\+Clients, int suspendus\mbox{[}$\,$\mbox{]}) -\begin{DoxyCompactList}\small\item\em Déduit un montant de la cagnotte du client. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\doxysubsection{Detailed Description} -Fonctions liées à la gestion des clients et de leur panier. - - - -\doxysubsection{Function Documentation} -\Hypertarget{client_8h_a927a335cb51f714f0e6e89c49f2d0258}\label{client_8h_a927a335cb51f714f0e6e89c49f2d0258} -\index{client.h@{client.h}!affiche\_recap\_panier@{affiche\_recap\_panier}} -\index{affiche\_recap\_panier@{affiche\_recap\_panier}!client.h@{client.h}} -\doxysubsubsection{\texorpdfstring{affiche\_recap\_panier()}{affiche\_recap\_panier()}} -{\footnotesize\ttfamily void affiche\+\_\+recap\+\_\+panier (\begin{DoxyParamCaption}\item[{int}]{panier\mbox{[}$\,$\mbox{]}, }\item[{int}]{taille\+Panier, }\item[{int}]{references\mbox{[}$\,$\mbox{]}, }\item[{float}]{poids\mbox{[}$\,$\mbox{]}, }\item[{float}]{volume\mbox{[}$\,$\mbox{]}, }\item[{float}]{prix\+Unitaire\mbox{[}$\,$\mbox{]}, }\item[{int}]{quantites\mbox{[}$\,$\mbox{]} }\end{DoxyParamCaption})} - - - -Affiche un récapitulatif du contenu du panier. - - -\begin{DoxyParams}{Parameters} -{\em panier} & -\/ Tableau des références des articles dans le panier. \\ -\hline -{\em taille\+Panier} & -\/ Taille du panier. \\ -\hline -{\em references} & -\/ Tableau des références des articles. \\ -\hline -{\em poids} & -\/ Tableau des poids des articles. \\ -\hline -{\em volume} & -\/ Tableau des volumes des articles. \\ -\hline -{\em prix\+Unitaire} & -\/ Tableau des prix unitaires des articles. \\ -\hline -{\em quantites} & -\/ Tableau des quantités de chaque article dans le panier.\\ -\hline -\end{DoxyParams} -Cette fonction permet d\textquotesingle{}afficher un récapitulatif du contenu du panier. - - -\begin{DoxyParams}{Parameters} -{\em panier} & -\/ Tableau des références des articles dans le panier. \\ -\hline -{\em taille\+Panier} & -\/ Taille du panier. \\ -\hline -{\em references} & -\/ Tableau des références des articles. \\ -\hline -{\em poids} & -\/ Tableau des poids des articles. \\ -\hline -{\em volume} & -\/ Tableau des volumes des articles. \\ -\hline -{\em prix\+Unitaire} & -\/ Tableau des prix unitaires des articles. \\ -\hline -{\em quantites} & -\/ Tableau des quantités de chaque article dans le panier. \\ -\hline -\end{DoxyParams} -\Hypertarget{client_8h_a08acbb5bd9bf4235f8d5cdd2edb0749a}\label{client_8h_a08acbb5bd9bf4235f8d5cdd2edb0749a} -\index{client.h@{client.h}!ajouter\_article\_au\_panier@{ajouter\_article\_au\_panier}} -\index{ajouter\_article\_au\_panier@{ajouter\_article\_au\_panier}!client.h@{client.h}} -\doxysubsubsection{\texorpdfstring{ajouter\_article\_au\_panier()}{ajouter\_article\_au\_panier()}} -{\footnotesize\ttfamily void ajouter\+\_\+article\+\_\+au\+\_\+panier (\begin{DoxyParamCaption}\item[{int}]{numero\+Client, }\item[{int}]{references\mbox{[}$\,$\mbox{]}, }\item[{float}]{poids\mbox{[}$\,$\mbox{]}, }\item[{float}]{volume\mbox{[}$\,$\mbox{]}, }\item[{float}]{prix\+Unitaire\mbox{[}$\,$\mbox{]}, }\item[{int}]{numeros\mbox{[}$\,$\mbox{]}, }\item[{float}]{cagnottes\mbox{[}$\,$\mbox{]}, }\item[{int}]{suspendues\mbox{[}$\,$\mbox{]}, }\item[{int}]{nombre\+Articles, }\item[{int}]{nombre\+Clients, }\item[{float}]{volume\+Coffre, }\item[{float}]{charge\+Maximale, }\item[{int}]{panier\mbox{[}$\,$\mbox{]}, }\item[{int}]{quantites\mbox{[}$\,$\mbox{]}, }\item[{int \texorpdfstring{$\ast$}{*}}]{taille\+Panier }\end{DoxyParamCaption})} - - - -Ajoute un article au panier du client. - - -\begin{DoxyParams}{Parameters} -{\em numero\+Client} & -\/ Numéro du client. \\ -\hline -{\em references} & -\/ Tableau des références des articles. \\ -\hline -{\em poids} & -\/ Tableau des poids des articles. \\ -\hline -{\em volume} & -\/ Tableau des volumes des articles. \\ -\hline -{\em prix\+Unitaire} & -\/ Tableau des prix unitaires des articles. \\ -\hline -{\em numeros} & -\/ Tableau des numéros de clients. \\ -\hline -{\em cagnottes} & -\/ Tableau des cagnottes des clients. \\ -\hline -{\em suspendues} & -\/ Tableau des états de suspension des clients. \\ -\hline -{\em nombre\+Articles} & -\/ Nombre d\textquotesingle{}articles disponibles. \\ -\hline -{\em nombre\+Clients} & -\/ Nombre de clients. \\ -\hline -{\em volume\+Coffre} & -\/ Volume total du coffre. \\ -\hline -{\em charge\+Maximale} & -\/ Charge maximale du coffre. \\ -\hline -{\em panier} & -\/ Tableau des références des articles dans le panier. \\ -\hline -{\em quantites} & -\/ Tableau des quantités de chaque article dans le panier. \\ -\hline -{\em taille\+Panier} & -\/ Taille du panier.\\ -\hline -\end{DoxyParams} -Cette fonction permet d\textquotesingle{}ajouter un article au panier du client. - - -\begin{DoxyParams}{Parameters} -{\em numero\+Client} & -\/ Numéro du client. \\ -\hline -{\em references} & -\/ Tableau des références des articles. \\ -\hline -{\em poids} & -\/ Tableau des poids des articles. \\ -\hline -{\em volume} & -\/ Tableau des volumes des articles. \\ -\hline -{\em prix\+Unitaire} & -\/ Tableau des prix unitaires des articles. \\ -\hline -{\em numeros} & -\/ Tableau des numéros de clients. \\ -\hline -{\em cagnottes} & -\/ Tableau des cagnottes des clients. \\ -\hline -{\em suspendues} & -\/ Tableau des états de suspension des clients. \\ -\hline -{\em nombre\+Articles} & -\/ Nombre d\textquotesingle{}articles disponibles. \\ -\hline -{\em nombre\+Clients} & -\/ Nombre de clients. \\ -\hline -{\em volume\+Coffre} & -\/ Volume total du coffre. \\ -\hline -{\em charge\+Maximale} & -\/ Charge maximale du coffre. \\ -\hline -{\em panier} & -\/ Tableau des références des articles dans le panier. \\ -\hline -{\em quantites} & -\/ Tableau des quantités de chaque article dans le panier. \\ -\hline -{\em taille\+Panier} & -\/ Taille du panier. \\ -\hline -\end{DoxyParams} -\Hypertarget{client_8h_a8bc792436cb2773b638667f7a898a625}\label{client_8h_a8bc792436cb2773b638667f7a898a625} -\index{client.h@{client.h}!charger\_clients@{charger\_clients}} -\index{charger\_clients@{charger\_clients}!client.h@{client.h}} -\doxysubsubsection{\texorpdfstring{charger\_clients()}{charger\_clients()}} -{\footnotesize\ttfamily int charger\+\_\+clients (\begin{DoxyParamCaption}\item[{int}]{numeros\mbox{[}$\,$\mbox{]}, }\item[{float}]{cagnottes\mbox{[}$\,$\mbox{]}, }\item[{int}]{suspendues\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Physique }\end{DoxyParamCaption})} - - - -Charge les données des clients à partir d\textquotesingle{}un fichier. - - -\begin{DoxyParams}{Parameters} -{\em numeros} & -\/ Tableau des numéros de clients. \\ -\hline -{\em cagnottes} & -\/ Tableau des cagnottes des clients. \\ -\hline -{\em suspendues} & -\/ Tableau des états de suspension des clients. \\ -\hline -{\em t\+Physique} & -\/ Taille du tableau physique. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Le nombre de clients chargés ou -\/1 en cas d\textquotesingle{}erreur. -\end{DoxyReturn} -Cette fonction permet de charger les données des clients à partir d\textquotesingle{}un fichier. - - -\begin{DoxyParams}{Parameters} -{\em numeros} & -\/ Tableau des numéros de clients. \\ -\hline -{\em cagnottes} & -\/ Tableau des cagnottes des clients. \\ -\hline -{\em suspendues} & -\/ Tableau des états de suspension des clients. \\ -\hline -{\em t\+Physique} & -\/ Taille du tableau physique. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Le nombre de clients chargés ou -\/1 en cas d\textquotesingle{}erreur. -\end{DoxyReturn} -\Hypertarget{client_8h_a7203df964d63cb07d7b19912d5e3c3bd}\label{client_8h_a7203df964d63cb07d7b19912d5e3c3bd} -\index{client.h@{client.h}!deduire\_cagnotte@{deduire\_cagnotte}} -\index{deduire\_cagnotte@{deduire\_cagnotte}!client.h@{client.h}} -\doxysubsubsection{\texorpdfstring{deduire\_cagnotte()}{deduire\_cagnotte()}} -{\footnotesize\ttfamily void deduire\+\_\+cagnotte (\begin{DoxyParamCaption}\item[{int}]{numero\+Client, }\item[{float}]{montant, }\item[{int}]{numeros\mbox{[}$\,$\mbox{]}, }\item[{float}]{cagnottes\mbox{[}$\,$\mbox{]}, }\item[{int}]{nombre\+Clients, }\item[{int}]{suspendus\mbox{[}$\,$\mbox{]} }\end{DoxyParamCaption})} - - - -Déduit un montant de la cagnotte du client. - - -\begin{DoxyParams}{Parameters} -{\em numero\+Client} & -\/ Numéro du client. \\ -\hline -{\em montant} & -\/ Montant à déduire de la cagnotte. \\ -\hline -{\em numeros} & -\/ Tableau des numéros de clients. \\ -\hline -{\em cagnottes} & -\/ Tableau des cagnottes des clients. \\ -\hline -{\em nombre\+Clients} & -\/ Nombre de clients. \\ -\hline -{\em suspendus} & -\/ Tableau des états de suspension des clients.\\ -\hline -\end{DoxyParams} -Cette fonction permet de déduire un montant de la cagnotte du client. - - -\begin{DoxyParams}{Parameters} -{\em numero\+Client} & -\/ Numéro du client. \\ -\hline -{\em montant} & -\/ Montant à déduire de la cagnotte. \\ -\hline -{\em numeros} & -\/ Tableau des numéros de clients. \\ -\hline -{\em cagnottes} & -\/ Tableau des cagnottes des clients. \\ -\hline -{\em nombre\+Clients} & -\/ Nombre de clients. \\ -\hline -{\em suspendus} & -\/ Tableau des états de suspension des clients. \\ -\hline -\end{DoxyParams} -\Hypertarget{client_8h_affb9999893c1599e32ff604b5b50899d}\label{client_8h_affb9999893c1599e32ff604b5b50899d} -\index{client.h@{client.h}!modifier\_quantite\_article\_panier@{modifier\_quantite\_article\_panier}} -\index{modifier\_quantite\_article\_panier@{modifier\_quantite\_article\_panier}!client.h@{client.h}} -\doxysubsubsection{\texorpdfstring{modifier\_quantite\_article\_panier()}{modifier\_quantite\_article\_panier()}} -{\footnotesize\ttfamily void modifier\+\_\+quantite\+\_\+article\+\_\+panier (\begin{DoxyParamCaption}\item[{int}]{panier\mbox{[}$\,$\mbox{]}, }\item[{int}]{quantites\mbox{[}$\,$\mbox{]}, }\item[{int \texorpdfstring{$\ast$}{*}}]{taille\+Panier }\end{DoxyParamCaption})} - - - -Modifie la quantité d\textquotesingle{}un article dans le panier du client. - - -\begin{DoxyParams}{Parameters} -{\em panier} & -\/ Tableau des références des articles dans le panier. \\ -\hline -{\em quantites} & -\/ Tableau des quantités de chaque article dans le panier. \\ -\hline -{\em taille\+Panier} & -\/ Taille du panier.\\ -\hline -\end{DoxyParams} -Cette fonction permet de modifier la quantité d\textquotesingle{}un article dans le panier du client. - - -\begin{DoxyParams}{Parameters} -{\em panier} & -\/ Tableau des références des articles dans le panier. \\ -\hline -{\em quantites} & -\/ Tableau des quantités de chaque article dans le panier. \\ -\hline -{\em taille\+Panier} & -\/ Taille du panier. \\ -\hline -\end{DoxyParams} -\Hypertarget{client_8h_acbac92090885f76ac2ea79c3449af58e}\label{client_8h_acbac92090885f76ac2ea79c3449af58e} -\index{client.h@{client.h}!reinitialiser\_panier@{reinitialiser\_panier}} -\index{reinitialiser\_panier@{reinitialiser\_panier}!client.h@{client.h}} -\doxysubsubsection{\texorpdfstring{reinitialiser\_panier()}{reinitialiser\_panier()}} -{\footnotesize\ttfamily void reinitialiser\+\_\+panier (\begin{DoxyParamCaption}\item[{int}]{panier\mbox{[}$\,$\mbox{]}, }\item[{int}]{quantites\mbox{[}$\,$\mbox{]}, }\item[{int \texorpdfstring{$\ast$}{*}}]{taille\+Panier }\end{DoxyParamCaption})} - - - -Réinitialise le panier du client. - - -\begin{DoxyParams}{Parameters} -{\em panier} & -\/ Tableau des références des articles dans le panier. \\ -\hline -{\em quantites} & -\/ Tableau des quantités de chaque article dans le panier. \\ -\hline -{\em taille\+Panier} & -\/ Taille du panier.\\ -\hline -\end{DoxyParams} -Cette fonction permet de réinitialiser le panier du client. - - -\begin{DoxyParams}{Parameters} -{\em panier} & -\/ Tableau des références des articles dans le panier. \\ -\hline -{\em quantites} & -\/ Tableau des quantités de chaque article dans le panier. \\ -\hline -{\em taille\+Panier} & -\/ Taille du panier. \\ -\hline -\end{DoxyParams} -\Hypertarget{client_8h_ae12d225761d8ad5a091665228bfe676e}\label{client_8h_ae12d225761d8ad5a091665228bfe676e} -\index{client.h@{client.h}!supprimer\_article\_du\_panier@{supprimer\_article\_du\_panier}} -\index{supprimer\_article\_du\_panier@{supprimer\_article\_du\_panier}!client.h@{client.h}} -\doxysubsubsection{\texorpdfstring{supprimer\_article\_du\_panier()}{supprimer\_article\_du\_panier()}} -{\footnotesize\ttfamily void supprimer\+\_\+article\+\_\+du\+\_\+panier (\begin{DoxyParamCaption}\item[{int}]{panier\mbox{[}$\,$\mbox{]}, }\item[{int}]{quantites\mbox{[}$\,$\mbox{]}, }\item[{int \texorpdfstring{$\ast$}{*}}]{taille\+Panier }\end{DoxyParamCaption})} - - - -Supprime un article du panier du client. - - -\begin{DoxyParams}{Parameters} -{\em panier} & -\/ Tableau des références des articles dans le panier. \\ -\hline -{\em quantites} & -\/ Tableau des quantités de chaque article dans le panier. \\ -\hline -{\em taille\+Panier} & -\/ Taille du panier.\\ -\hline -\end{DoxyParams} -Cette fonction permet de supprimer un article du panier du client. - - -\begin{DoxyParams}{Parameters} -{\em panier} & -\/ Tableau des références des articles dans le panier. \\ -\hline -{\em quantites} & -\/ Tableau des quantités de chaque article dans le panier. \\ -\hline -{\em taille\+Panier} & -\/ Taille du panier. \\ -\hline -\end{DoxyParams} diff --git a/docs/latex/client_8h_source.tex b/docs/latex/client_8h_source.tex deleted file mode 100644 index 8cdcf61..0000000 --- a/docs/latex/client_8h_source.tex +++ /dev/null @@ -1,30 +0,0 @@ -\doxysection{client.\+h} -\hypertarget{client_8h_source}{}\label{client_8h_source}\index{src/app/core\_logic/client.h@{src/app/core\_logic/client.h}} -\mbox{\hyperlink{client_8h}{Go to the documentation of this file.}} -\begin{DoxyCode}{0} -\DoxyCodeLine{00001\ \textcolor{preprocessor}{\#ifndef\ SAE\_101\_CLIENT\_H}} -\DoxyCodeLine{00002\ \textcolor{preprocessor}{\#define\ SAE\_101\_CLIENT\_H}} -\DoxyCodeLine{00003\ } -\DoxyCodeLine{00004\ \textcolor{preprocessor}{\#include\ }} -\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#include\ }} -\DoxyCodeLine{00006\ } -\DoxyCodeLine{00021\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{client_8h_a8bc792436cb2773b638667f7a898a625}{charger\_clients}}(\textcolor{keywordtype}{int}\ numeros[],\ \textcolor{keywordtype}{float}\ cagnottes[],\ \textcolor{keywordtype}{int}\ suspendues[],\ \textcolor{keywordtype}{int}\ tPhysique);} -\DoxyCodeLine{00022\ } -\DoxyCodeLine{00042\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{client_8h_a08acbb5bd9bf4235f8d5cdd2edb0749a}{ajouter\_article\_au\_panier}}(\textcolor{keywordtype}{int}\ numeroClient,\ \textcolor{keywordtype}{int}\ references[],\ \textcolor{keywordtype}{float}\ poids[],\ \textcolor{keywordtype}{float}\ volume[],\ \textcolor{keywordtype}{float}\ prixUnitaire[],} -\DoxyCodeLine{00043\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{int}\ numeros[],\ \textcolor{keywordtype}{float}\ cagnottes[],\ \textcolor{keywordtype}{int}\ suspendues[],\ \textcolor{keywordtype}{int}\ nombreArticles,\ \textcolor{keywordtype}{int}\ nombreClients,} -\DoxyCodeLine{00044\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ volumeCoffre,\ \textcolor{keywordtype}{float}\ chargeMaximale,\ \textcolor{keywordtype}{int}\ panier[],\ \textcolor{keywordtype}{int}\ quantites[],\ \textcolor{keywordtype}{int}\ *taillePanier);} -\DoxyCodeLine{00045\ } -\DoxyCodeLine{00053\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{client_8h_ae12d225761d8ad5a091665228bfe676e}{supprimer\_article\_du\_panier}}(\textcolor{keywordtype}{int}\ panier[],\ \textcolor{keywordtype}{int}\ quantites[],\ \textcolor{keywordtype}{int}\ *taillePanier);} -\DoxyCodeLine{00054\ } -\DoxyCodeLine{00066\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{client_8h_a927a335cb51f714f0e6e89c49f2d0258}{affiche\_recap\_panier}}(\textcolor{keywordtype}{int}\ panier[],\ \textcolor{keywordtype}{int}\ taillePanier,\ \textcolor{keywordtype}{int}\ references[],\ \textcolor{keywordtype}{float}\ poids[],\ \textcolor{keywordtype}{float}\ volume[],} -\DoxyCodeLine{00067\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{float}\ prixUnitaire[],\ \textcolor{keywordtype}{int}\ quantites[]);} -\DoxyCodeLine{00068\ } -\DoxyCodeLine{00076\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{client_8h_affb9999893c1599e32ff604b5b50899d}{modifier\_quantite\_article\_panier}}(\textcolor{keywordtype}{int}\ panier[],\ \textcolor{keywordtype}{int}\ quantites[],\ \textcolor{keywordtype}{int}\ *taillePanier);} -\DoxyCodeLine{00077\ } -\DoxyCodeLine{00085\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{client_8h_acbac92090885f76ac2ea79c3449af58e}{reinitialiser\_panier}}(\textcolor{keywordtype}{int}\ panier[],\ \textcolor{keywordtype}{int}\ quantites[],\ \textcolor{keywordtype}{int}\ *taillePanier);} -\DoxyCodeLine{00086\ } -\DoxyCodeLine{00097\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{client_8h_a7203df964d63cb07d7b19912d5e3c3bd}{deduire\_cagnotte}}(\textcolor{keywordtype}{int}\ numeroClient,\ \textcolor{keywordtype}{float}\ montant,\ \textcolor{keywordtype}{int}\ numeros[],\ \textcolor{keywordtype}{float}\ cagnottes[],\ \textcolor{keywordtype}{int}\ nombreClients,\ \textcolor{keywordtype}{int}\ suspendus[]);} -\DoxyCodeLine{00098\ } -\DoxyCodeLine{00099\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ SAE\_101\_CLIENT\_H}} - -\end{DoxyCode} diff --git a/docs/latex/doxygen.sty b/docs/latex/doxygen.sty deleted file mode 100644 index 4bfc17f..0000000 --- a/docs/latex/doxygen.sty +++ /dev/null @@ -1,694 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{doxygen} - -% Packages used by this style file -\RequirePackage{alltt} -%%\RequirePackage{array} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package -\RequirePackage{calc} -\RequirePackage{float} -%%\RequirePackage{ifthen} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package -\RequirePackage{verbatim} -\RequirePackage[table]{xcolor} -\RequirePackage{longtable_doxygen} -\RequirePackage{tabu_doxygen} -\RequirePackage{fancyvrb} -\RequirePackage{tabularx} -\RequirePackage{multicol} -\RequirePackage{multirow} -\RequirePackage{hanging} -\RequirePackage{ifpdf} -\RequirePackage{adjustbox} -\RequirePackage{amssymb} -\RequirePackage{stackengine} -\RequirePackage{enumitem} -\RequirePackage{alphalph} -\RequirePackage[normalem]{ulem} % for strikeout, but don't modify emphasis - -%---------- Internal commands used in this style file ---------------- - -\newcommand{\ensurespace}[1]{% - \begingroup% - \setlength{\dimen@}{#1}% - \vskip\z@\@plus\dimen@% - \penalty -100\vskip\z@\@plus -\dimen@% - \vskip\dimen@% - \penalty 9999% - \vskip -\dimen@% - \vskip\z@skip% hide the previous |\vskip| from |\addvspace| - \endgroup% -} - -\newcommand{\DoxyHorRuler}[1]{% - \setlength{\parskip}{0ex plus 0ex minus 0ex}% - \ifthenelse{#1=0}% - {% - \hrule% - }% - {% - \hrulefilll% - }% -} -\newcommand{\DoxyLabelFont}{} -\newcommand{\entrylabel}[1]{% - {% - \parbox[b]{\labelwidth-4pt}{% - \makebox[0pt][l]{\DoxyLabelFont#1}% - \vspace{1.5\baselineskip}% - }% - }% -} - -\newenvironment{DoxyDesc}[1]{% - \ensurespace{4\baselineskip}% - \begin{list}{}{% - \settowidth{\labelwidth}{20pt}% - %\setlength{\parsep}{0pt}% - \setlength{\itemsep}{0pt}% - \setlength{\leftmargin}{\labelwidth+\labelsep}% - \renewcommand{\makelabel}{\entrylabel}% - }% - \item[#1]% -}{% - \end{list}% -} - -\newsavebox{\xrefbox} -\newlength{\xreflength} -\newcommand{\xreflabel}[1]{% - \sbox{\xrefbox}{#1}% - \setlength{\xreflength}{\wd\xrefbox}% - \ifthenelse{\xreflength>\labelwidth}{% - \begin{minipage}{\textwidth}% - \setlength{\parindent}{0pt}% - \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}% - \end{minipage}% - }{% - \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}% - }% -} - -%---------- Commands used by doxygen LaTeX output generator ---------- - -% Used by
     ... 
    -\newenvironment{DoxyPre}{% - \small% - \begin{alltt}% -}{% - \end{alltt}% - \normalsize% -} -% Necessary for redefining not defined characters, i.e. "Replacement Character" in tex output. -\newlength{\CodeWidthChar} -\newlength{\CodeHeightChar} -\settowidth{\CodeWidthChar}{?} -\settoheight{\CodeHeightChar}{?} -% Necessary for hanging indent -\newlength{\DoxyCodeWidth} - -\newcommand\DoxyCodeLine[1]{ - \ifthenelse{\equal{\detokenize{#1}}{}} - { - \vspace*{\baselineskip} - } - { - \hangpara{\DoxyCodeWidth}{1}{#1}\par - } -} - -\newcommand\NiceSpace{% - \discretionary{}{\kern\fontdimen2\font}{\kern\fontdimen2\font}% -} - -% Used by @code ... @endcode -\newenvironment{DoxyCode}[1]{% - \par% - \scriptsize% - \normalfont\ttfamily% - \rightskip0pt plus 1fil% - \settowidth{\DoxyCodeWidth}{000000}% - \settowidth{\CodeWidthChar}{?}% - \settoheight{\CodeHeightChar}{?}% - \setlength{\parskip}{0ex plus 0ex minus 0ex}% - \ifthenelse{\equal{#1}{0}} - { - {\lccode`~32 \lowercase{\global\let~}\NiceSpace}\obeyspaces% - } - { - {\lccode`~32 \lowercase{\global\let~}}\obeyspaces% - } - -}{% - \normalfont% - \normalsize% - \settowidth{\CodeWidthChar}{?}% - \settoheight{\CodeHeightChar}{?}% -} - -% Redefining not defined characters, i.e. "Replacement Character" in tex output. -\def\ucr{\adjustbox{width=\CodeWidthChar,height=\CodeHeightChar}{\stackinset{c}{}{c}{-.2pt}{% - \textcolor{white}{\sffamily\bfseries\small ?}}{% - \rotatebox{45}{$\blacksquare$}}}} - -% Used by @example, @include, @includelineno and @dontinclude -\newenvironment{DoxyCodeInclude}[1]{% - \DoxyCode{#1}% -}{% - \endDoxyCode% -} - -% Used by @verbatim ... @endverbatim -\newenvironment{DoxyVerb}{% - \par% - \footnotesize% - \verbatim% -}{% - \endverbatim% - \normalsize% -} - -% Used by @verbinclude -\newenvironment{DoxyVerbInclude}{% - \DoxyVerb% -}{% - \endDoxyVerb% -} - -% Used by numbered lists (using '-#' or
      ...
    ) -\setlistdepth{12} -\newlist{DoxyEnumerate}{enumerate}{12} -\setlist[DoxyEnumerate,1]{label=\arabic*.} -\setlist[DoxyEnumerate,2]{label=(\enumalphalphcnt*)} -\setlist[DoxyEnumerate,3]{label=\roman*.} -\setlist[DoxyEnumerate,4]{label=\enumAlphAlphcnt*.} -\setlist[DoxyEnumerate,5]{label=\arabic*.} -\setlist[DoxyEnumerate,6]{label=(\enumalphalphcnt*)} -\setlist[DoxyEnumerate,7]{label=\roman*.} -\setlist[DoxyEnumerate,8]{label=\enumAlphAlphcnt*.} -\setlist[DoxyEnumerate,9]{label=\arabic*.} -\setlist[DoxyEnumerate,10]{label=(\enumalphalphcnt*)} -\setlist[DoxyEnumerate,11]{label=\roman*.} -\setlist[DoxyEnumerate,12]{label=\enumAlphAlphcnt*.} - -% Used by bullet lists (using '-', @li, @arg, or
      ...
    ) -\setlistdepth{12} -\newlist{DoxyItemize}{itemize}{12} -\setlist[DoxyItemize]{label=\textperiodcentered} - -\setlist[DoxyItemize,1]{label=\textbullet} -\setlist[DoxyItemize,2]{label=\normalfont\bfseries \textendash} -\setlist[DoxyItemize,3]{label=\textasteriskcentered} -\setlist[DoxyItemize,4]{label=\textperiodcentered} - -% Used by description lists (using
    ...
    ) -\newenvironment{DoxyDescription}{% - \description% -}{% - \enddescription% -} - -% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc -% (only if caption is specified) -\newenvironment{DoxyImage}{% - \begin{figure}[H]% - \centering% -}{% - \end{figure}% -} - -% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc -% (only if no caption is specified) -\newenvironment{DoxyImageNoCaption}{% - \begin{center}% -}{% - \end{center}% -} - -% Used by @image -% (only if inline is specified) -\newenvironment{DoxyInlineImage}{% -}{% -} - -% Used by @attention -\newenvironment{DoxyAttention}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @author and @authors -\newenvironment{DoxyAuthor}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @date -\newenvironment{DoxyDate}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @invariant -\newenvironment{DoxyInvariant}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @note -\newenvironment{DoxyNote}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @post -\newenvironment{DoxyPostcond}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @pre -\newenvironment{DoxyPrecond}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @copyright -\newenvironment{DoxyCopyright}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @remark -\newenvironment{DoxyRemark}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @return and @returns -\newenvironment{DoxyReturn}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @since -\newenvironment{DoxySince}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @see -\newenvironment{DoxySeeAlso}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @version -\newenvironment{DoxyVersion}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @warning -\newenvironment{DoxyWarning}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @par and @paragraph -\newenvironment{DoxyParagraph}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by parameter lists -\newenvironment{DoxyParams}[2][]{% - \tabulinesep=1mm% - \par% - \ifthenelse{\equal{#1}{}}% - {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description - {\ifthenelse{\equal{#1}{1}}% - {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc - {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc - } - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu*}% - \vspace{6pt}% -} - -% Used for fields of simple structs -\newenvironment{DoxyFields}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}% - \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu*}% - \vspace{6pt}% -} - -% Used for fields simple class style enums -\newenvironment{DoxyEnumFields}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu*}% - \vspace{6pt}% -} - -% Used for parameters within a detailed function description -\newenvironment{DoxyParamCaption}{% - \renewcommand{\item}[2][]{\\ \hspace*{2.0cm} ##1 {\em ##2}}% -}{% -} - -% Used by return value lists -\newenvironment{DoxyRetVals}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu*}% - \vspace{6pt}% -} - -% Used by exception lists -\newenvironment{DoxyExceptions}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu*}% - \vspace{6pt}% -} - -% Used by template parameter lists -\newenvironment{DoxyTemplParams}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu*}% - \vspace{6pt}% -} - -% Used for member lists -\newenvironment{DoxyCompactItemize}{% - \begin{itemize}% - \setlength{\itemsep}{-3pt}% - \setlength{\parsep}{0pt}% - \setlength{\topsep}{0pt}% - \setlength{\partopsep}{0pt}% -}{% - \end{itemize}% -} - -% Used for member descriptions -\newenvironment{DoxyCompactList}{% - \begin{list}{}{% - \setlength{\leftmargin}{0.5cm}% - \setlength{\itemsep}{0pt}% - \setlength{\parsep}{0pt}% - \setlength{\topsep}{0pt}% - \renewcommand{\makelabel}{\hfill}% - }% -}{% - \end{list}% -} - -% Used for reference lists (@bug, @deprecated, @todo, etc.) -\newenvironment{DoxyRefList}{% - \begin{list}{}{% - \setlength{\labelwidth}{10pt}% - \setlength{\leftmargin}{\labelwidth}% - \addtolength{\leftmargin}{\labelsep}% - \renewcommand{\makelabel}{\xreflabel}% - }% -}{% - \end{list}% -} - -% Used by @bug, @deprecated, @todo, etc. -\newenvironment{DoxyRefDesc}[1]{% - \begin{list}{}{% - \renewcommand\makelabel[1]{\textbf{##1}}% - \settowidth\labelwidth{\makelabel{#1}}% - \setlength\leftmargin{\labelwidth+\labelsep}% - }% -}{% - \end{list}% -} - -% Used by parameter lists and simple sections -\newenvironment{Desc} -{\begin{list}{}{% - \settowidth{\labelwidth}{20pt}% - \setlength{\parsep}{0pt}% - \setlength{\itemsep}{0pt}% - \setlength{\leftmargin}{\labelwidth+\labelsep}% - \renewcommand{\makelabel}{\entrylabel}% - } -}{% - \end{list}% -} - -% Used by tables -\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}% -\newenvironment{TabularC}[1]% -{\tabulinesep=1mm -\begin{longtabu*}spread 0pt [c]{*#1{|X[-1]}|}}% -{\end{longtabu*}\par}% - -\newenvironment{TabularNC}[1]% -{\begin{tabu}spread 0pt [l]{*#1{|X[-1]}|}}% -{\end{tabu}\par}% - -% Used for member group headers -\newenvironment{Indent}{% - \begin{list}{}{% - \setlength{\leftmargin}{0.5cm}% - }% - \item[]\ignorespaces% -}{% - \unskip% - \end{list}% -} - -% Used when hyperlinks are turned on -\newcommand{\doxylink}[2]{% - \mbox{\hyperlink{#1}{#2}}% -} - -% Used when hyperlinks are turned on -% Third argument is the SectionType, see the doxygen internal -% documentation for the values (relevant: Page ... Subsubsection). -\newcommand{\doxysectlink}[3]{% - \mbox{\hyperlink{#1}{#2}}% -} -% Used when hyperlinks are turned off -\newcommand{\doxyref}[3]{% - \textbf{#1} (\textnormal{#2}\,\pageref{#3})% -} - -% Used when hyperlinks are turned off -% Fourth argument is the SectionType, see the doxygen internal -% documentation for the values (relevant: Page ... Subsubsection). -\newcommand{\doxysectref}[4]{% - \textbf{#1} (\textnormal{#2}\,\pageref{#3})% -} - -% Used to link to a table when hyperlinks are turned on -\newcommand{\doxytablelink}[2]{% - \ref{#1}% -} - -% Used to link to a table when hyperlinks are turned off -\newcommand{\doxytableref}[3]{% - \ref{#3}% -} - -% Used by @addindex -\newcommand{\lcurly}{\{} -\newcommand{\rcurly}{\}} - -% Colors used for syntax highlighting -\definecolor{comment}{rgb}{0.5,0.0,0.0} -\definecolor{keyword}{rgb}{0.0,0.5,0.0} -\definecolor{keywordtype}{rgb}{0.38,0.25,0.125} -\definecolor{keywordflow}{rgb}{0.88,0.5,0.0} -\definecolor{preprocessor}{rgb}{0.5,0.38,0.125} -\definecolor{stringliteral}{rgb}{0.0,0.125,0.25} -\definecolor{charliteral}{rgb}{0.0,0.5,0.5} -\definecolor{xmlcdata}{rgb}{0.0,0.0,0.0} -\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0} -\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43} -\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0} -\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0} - -% Color used for table heading -\newcommand{\tableheadbgcolor}{lightgray}% - -% Version of hypertarget with correct landing location -\newcommand{\Hypertarget}[1]{\Hy@raisedlink{\hypertarget{#1}{}}} - -% possibility to have sections etc. be within the margins -% unfortunately had to copy part of book.cls and add \raggedright -\makeatletter -\newcounter{subsubsubsection}[subsubsection] -\newcounter{subsubsubsubsection}[subsubsubsection] -\newcounter{subsubsubsubsubsection}[subsubsubsubsection] -\newcounter{subsubsubsubsubsubsection}[subsubsubsubsubsection] -\renewcommand{\thesubsubsubsection}{\thesubsubsection.\arabic{subsubsubsection}} -\renewcommand{\thesubsubsubsubsection}{\thesubsubsubsection.\arabic{subsubsubsubsection}} -\renewcommand{\thesubsubsubsubsubsection}{\thesubsubsubsubsection.\arabic{subsubsubsubsubsection}} -\renewcommand{\thesubsubsubsubsubsubsection}{\thesubsubsubsubsubsection.\arabic{subsubsubsubsubsubsection}} -\newcommand{\subsubsubsectionmark}[1]{} -\newcommand{\subsubsubsubsectionmark}[1]{} -\newcommand{\subsubsubsubsubsectionmark}[1]{} -\newcommand{\subsubsubsubsubsubsectionmark}[1]{} -\def\toclevel@subsubsubsection{4} -\def\toclevel@subsubsubsubsection{5} -\def\toclevel@subsubsubsubsubsection{6} -\def\toclevel@subsubsubsubsubsubsection{7} -\def\toclevel@paragraph{8} -\def\toclevel@subparagraph{9} - -\newcommand\doxysection{\@startsection {section}{1}{\z@}% - {-3.5ex \@plus -1ex \@minus -.2ex}% - {2.3ex \@plus.2ex}% - {\raggedright\normalfont\Large\bfseries}} -\newcommand\doxysubsection{\@startsection{subsection}{2}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\raggedright\normalfont\large\bfseries}} -\newcommand\doxysubsubsection{\@startsection{subsubsection}{3}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\raggedright\normalfont\normalsize\bfseries}} -\newcommand\doxysubsubsubsection{\@startsection{subsubsubsection}{4}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\raggedright\normalfont\normalsize\bfseries}} -\newcommand\doxysubsubsubsubsection{\@startsection{subsubsubsubsection}{5}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\raggedright\normalfont\normalsize\bfseries}} -\newcommand\doxysubsubsubsubsubsection{\@startsection{subsubsubsubsubsection}{6}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\raggedright\normalfont\normalsize\bfseries}} -\newcommand\doxysubsubsubsubsubsubsection{\@startsection{subsubsubsubsubsubsection}{7}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\raggedright\normalfont\normalsize\bfseries}} -\newcommand\doxyparagraph{\@startsection{paragraph}{8}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\raggedright\normalfont\normalsize\bfseries}} -\newcommand\doxysubparagraph{\@startsection{subparagraph}{9}{\parindent}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\raggedright\normalfont\normalsize\bfseries}} - -\newcommand\l@subsubsubsection{\@dottedtocline{4}{6.1em}{7.8em}} -\newcommand\l@subsubsubsubsection{\@dottedtocline{5}{6.1em}{9.4em}} -\newcommand\l@subsubsubsubsubsection{\@dottedtocline{6}{6.1em}{11em}} -\newcommand\l@subsubsubsubsubsubsection{\@dottedtocline{7}{6.1em}{12.6em}} -\renewcommand\l@paragraph{\@dottedtocline{8}{6.1em}{14.2em}} -\renewcommand\l@subparagraph{\@dottedtocline{9}{6.1em}{15.8em}} -\makeatother -% the sectsty doesn't look to be maintained but gives, in our case, some warning like: -% LaTeX Warning: Command \underline has changed. -% Check if current package is valid. -% unfortunately had to copy the relevant part -\newcommand*{\doxypartfont} [1] - {\gdef\SS@partnumberfont{\SS@sectid{0}\SS@nopart\SS@makeulinepartchap#1} - \gdef\SS@parttitlefont{\SS@sectid{0}\SS@titlepart\SS@makeulinepartchap#1}} -\newcommand*{\doxychapterfont} [1] - {\gdef\SS@chapnumfont{\SS@sectid{1}\SS@nopart\SS@makeulinepartchap#1} - \gdef\SS@chaptitlefont{\SS@sectid{1}\SS@titlepart\SS@makeulinepartchap#1}} -\newcommand*{\doxysectionfont} [1] - {\gdef\SS@sectfont{\SS@sectid{2}\SS@rr\SS@makeulinesect#1}} -\newcommand*{\doxysubsectionfont} [1] - {\gdef\SS@subsectfont{\SS@sectid{3}\SS@rr\SS@makeulinesect#1}} -\newcommand*{\doxysubsubsectionfont} [1] - {\gdef\SS@subsubsectfont{\SS@sectid{4}\SS@rr\SS@makeulinesect#1}} -\newcommand*{\doxyparagraphfont} [1] - {\gdef\SS@parafont{\SS@sectid{5}\SS@rr\SS@makeulinesect#1}} -\newcommand*{\doxysubparagraphfont} [1] - {\gdef\SS@subparafont{\SS@sectid{6}\SS@rr\SS@makeulinesect#1}} -\newcommand*{\doxyminisecfont} [1] - {\gdef\SS@minisecfont{\SS@sectid{7}\SS@rr\SS@makeulinepartchap#1}} -\newcommand*{\doxyallsectionsfont} [1] {\doxypartfont{#1}% - \doxychapterfont{#1}% - \doxysectionfont{#1}% - \doxysubsectionfont{#1}% - \doxysubsubsectionfont{#1}% - \doxyparagraphfont{#1}% - \doxysubparagraphfont{#1}% - \doxyminisecfont{#1}}% -% Define caption that is also suitable in a table -\makeatletter -\def\doxyfigcaption{% -\H@refstepcounter{figure}% -\@dblarg{\@caption{figure}}} -\makeatother - -% Define alpha enumarative names for counters > 26 -\makeatletter -\def\enumalphalphcnt#1{\expandafter\@enumalphalphcnt\csname c@#1\endcsname} -\def\@enumalphalphcnt#1{\alphalph{#1}} -\def\enumAlphAlphcnt#1{\expandafter\@enumAlphAlphcnt\csname c@#1\endcsname} -\def\@enumAlphAlphcnt#1{\AlphAlph{#1}} -\makeatother -\AddEnumerateCounter{\enumalphalphcnt}{\@enumalphalphcnt}{aa} -\AddEnumerateCounter{\enumAlphAlphcnt}{\@enumAlphAlphcnt}{AA} diff --git a/docs/latex/etoc_doxygen.sty b/docs/latex/etoc_doxygen.sty deleted file mode 100644 index 5f7e127..0000000 --- a/docs/latex/etoc_doxygen.sty +++ /dev/null @@ -1,2178 +0,0 @@ -%% -%% This is file etoc_doxygen.sty -%% -%% Apart from this header notice and the renaming from etoc to -%% etoc_doxygen (also in \ProvidesPackage) it is an identical -%% copy of -%% -%% etoc.sty -%% -%% at version 1.2b of 2023/07/01. -%% -%% This file has been provided to Doxygen team courtesy of the -%% author for benefit of users having a LaTeX installation not -%% yet providing version 1.2a or later of etoc, whose -%% deeplevels feature is required. -%% -%% The original source etoc.dtx (only of the latest version at -%% any given time) is available at -%% -%% https://ctan.org/pkg/etoc -%% -%% and contains the terms for copying and modification as well -%% as author contact information. -%% -%% In brief any modified versions of this file must be renamed -%% with new filenames distinct from etoc.sty. -%% -%% Package: etoc -%% Version: 1.2b -%% License: LPPL 1.3c -%% Copyright (C) 2012-2023 Jean-Francois B. -\NeedsTeXFormat{LaTeX2e}[2003/12/01] -\ProvidesPackage{etoc_doxygen}[2023/07/01 v1.2b Completely customisable TOCs (JFB)] -\newif\ifEtoc@oldLaTeX -\@ifl@t@r\fmtversion{2020/10/01} - {} - {\Etoc@oldLaTeXtrue - \PackageInfo{etoc}{Old LaTeX (\fmtversion) detected!\MessageBreak - Since 1.1a (2023/01/14), etoc prefers LaTeX at least\MessageBreak - as recent as 2020-10-01, for reasons of the .toc file,\MessageBreak - and used to require it (from 1.1a to 1.2).\MessageBreak - This etoc (1.2b) does not *require* it, but has not been\MessageBreak - tested thoroughly on old LaTeX (especially if document\MessageBreak - does not use hyperref) and retrofitting was done only\MessageBreak - on basis of author partial remembrances of old context.\MessageBreak - Reported}} -\RequirePackage{kvoptions} -\SetupKeyvalOptions{prefix=Etoc@} -\newif\ifEtoc@lof -\DeclareVoidOption{lof}{\Etoc@loftrue - \PackageInfo{etoc}{Experimental support for \string\locallistoffigures.\MessageBreak - Barely tested, use at own risk}% -} -\newif\ifEtoc@lot -\DeclareVoidOption{lot}{\Etoc@lottrue - \PackageInfo{etoc}{Experimental support for \string\locallistoftables.\MessageBreak - Barely tested, use at own risk}% -} -\@ifclassloaded{memoir}{ -\PackageInfo{etoc} - {As this is with memoir class, all `...totoc' options\MessageBreak - are set true by default. Reported} -\DeclareBoolOption[true]{maintoctotoc} -\DeclareBoolOption[true]{localtoctotoc} -\DeclareBoolOption[true]{localloftotoc} -\DeclareBoolOption[true]{locallottotoc} -}{ -\DeclareBoolOption[false]{maintoctotoc} -\DeclareBoolOption[false]{localtoctotoc} -\DeclareBoolOption[false]{localloftotoc} -\DeclareBoolOption[false]{locallottotoc} -} -\DeclareBoolOption[true]{ouroboros} -\DeclareBoolOption[false]{deeplevels} -\DeclareDefaultOption{\PackageWarning{etoc}{Option `\CurrentOption' is unknown.}} -\ProcessKeyvalOptions* -\DisableKeyvalOption[action=error,package=etoc]{etoc}{lof} -\DisableKeyvalOption[action=error,package=etoc]{etoc}{lot} -\DisableKeyvalOption[action=error,package=etoc]{etoc}{deeplevels} -\def\etocsetup#1{\setkeys{etoc}{#1}} -\def\etocifmaintoctotoc{\ifEtoc@maintoctotoc - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} -\def\etociflocaltoctotoc{\ifEtoc@localtoctotoc - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} -\def\etociflocalloftotoc{\ifEtoc@localloftotoc - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} -\def\etociflocallottotoc{\ifEtoc@locallottotoc - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} -\RequirePackage{multicol} -\def\etoc@{\etoc@} -\long\def\Etoc@gobtoetoc@ #1\etoc@{} -\newtoks\Etoc@toctoks -\def\Etoc@par{\par} -\def\etocinline{\def\Etoc@par{}} -\let\etocnopar\etocinline -\def\etocdisplay{\def\Etoc@par{\par}} -\let\Etoc@global\@empty -\def\etocglobaldefs{\let\Etoc@global\global\let\tof@global\global} -\def\etoclocaldefs {\let\Etoc@global\@empty\let\tof@global\@empty} -\newif\ifEtoc@numbered -\newif\ifEtoc@hyperref -\newif\ifEtoc@parskip -\newif\ifEtoc@tocwithid -\newif\ifEtoc@standardlines -\newif\ifEtoc@etocstyle -\newif\ifEtoc@classstyle -\newif\ifEtoc@keeporiginaltoc -\newif\ifEtoc@skipprefix -\newif\ifEtoc@isfirst -\newif\ifEtoc@localtoc -\newif\ifEtoc@skipthisone -\newif\ifEtoc@stoptoc -\newif\ifEtoc@notactive -\newif\ifEtoc@mustclosegroup -\newif\ifEtoc@isemptytoc -\newif\ifEtoc@checksemptiness -\def\etocchecksemptiness {\Etoc@checksemptinesstrue } -\def\etocdoesnotcheckemptiness {\Etoc@checksemptinessfalse } -\newif\ifEtoc@notocifnotoc -\def\etocnotocifnotoc {\Etoc@checksemptinesstrue\Etoc@notocifnotoctrue } -\newcounter{etoc@tocid} -\def\Etoc@tocext{toc} -\def\Etoc@lofext{lof} -\def\Etoc@lotext{lot} -\let\Etoc@currext\Etoc@tocext -\def\etocifislocal{\ifEtoc@localtoc\expandafter\@firstoftwo\else - \expandafter\@secondoftwo\fi - } -\def\etocifislocaltoc{\etocifislocal{\ifx\Etoc@currext\Etoc@tocext - \expandafter\@firstoftwo\else - \expandafter\@secondoftwo\fi}% - {\@secondoftwo}% - } -\def\etocifislocallof{\etocifislocal{\ifx\Etoc@currext\Etoc@lofext - \expandafter\@firstoftwo\else - \expandafter\@secondoftwo\fi}% - {\@secondoftwo}% - } -\def\etocifislocallot{\etocifislocal{\ifx\Etoc@currext\Etoc@lotext - \expandafter\@firstoftwo\else - \expandafter\@secondoftwo\fi}% - {\@secondoftwo}% - } -\expandafter\def\csname Etoc@-3@@\endcsname {-\thr@@} -\expandafter\def\csname Etoc@-2@@\endcsname {-\tw@} -\expandafter\let\csname Etoc@-1@@\endcsname \m@ne -\expandafter\let\csname Etoc@0@@\endcsname \z@ -\expandafter\let\csname Etoc@1@@\endcsname \@ne -\expandafter\let\csname Etoc@2@@\endcsname \tw@ -\expandafter\let\csname Etoc@3@@\endcsname \thr@@ -\expandafter\chardef\csname Etoc@4@@\endcsname 4 -\expandafter\chardef\csname Etoc@5@@\endcsname 5 -\expandafter\chardef\csname Etoc@6@@\endcsname 6 -\ifEtoc@deeplevels - \expandafter\chardef\csname Etoc@7@@\endcsname 7 - \expandafter\chardef\csname Etoc@8@@\endcsname 8 - \expandafter\chardef\csname Etoc@9@@\endcsname 9 - \expandafter\chardef\csname Etoc@10@@\endcsname 10 - \expandafter\chardef\csname Etoc@11@@\endcsname 11 - \expandafter\chardef\csname Etoc@12@@\endcsname 12 -\fi -\expandafter\let\expandafter\Etoc@maxlevel - \csname Etoc@\ifEtoc@deeplevels12\else6\fi @@\endcsname -\edef\etocthemaxlevel{\number\Etoc@maxlevel} -\@ifclassloaded{memoir}{\def\Etoc@minf{-\thr@@}}{\def\Etoc@minf{-\tw@}} -\let\Etoc@none@@ \Etoc@minf -\expandafter\let\expandafter\Etoc@all@@ - \csname Etoc@\ifEtoc@deeplevels11\else5\fi @@\endcsname -\let\Etoc@dolevels\@empty -\def\Etoc@newlevel #1{\expandafter\def\expandafter\Etoc@dolevels\expandafter - {\Etoc@dolevels\Etoc@do{#1}}} -\ifdefined\expanded - \def\etocsetlevel#1#2{\expanded{\noexpand\etoc@setlevel{#1}{#2}}}% -\else - \def\etocsetlevel#1#2{{\edef\Etoc@tmp{\noexpand\etoc@setlevel{#1}{#2}}\expandafter}\Etoc@tmp}% -\fi -\def\etoc@setlevel#1#2{% - \edef\Etoc@tmp{\the\numexpr#2}% - \if1\ifnum\Etoc@tmp>\Etoc@maxlevel0\fi\unless\ifnum\Etoc@minf<\Etoc@tmp;\fi1% - \ifEtoc@deeplevels - \in@{.#1,}{.none,.all,.figure,.table,.-3,.-2,.-1,.0,.1,.2,.3,.4,.5,.6,% - .7,.8,.9,.10,.11,.12,}% - \else - \in@{.#1,}{.none,.all,.figure,.table,.-3,.-2,.-1,.0,.1,.2,.3,.4,.5,.6,}% - \fi - \ifin@\else\if\@car#1\@nil @\in@true\fi\fi - \ifin@ - \PackageWarning{etoc} - {Sorry, but `#1' is forbidden as level name.\MessageBreak - \if\@car#1\@nil @% - (because of the @ as first character)\MessageBreak\fi - Reported}% - \else - \etocifunknownlevelTF{#1}{\Etoc@newlevel{#1}}{}% - \expandafter\let\csname Etoc@#1@@\expandafter\endcsname - \csname Etoc@\Etoc@tmp @@\endcsname - \expandafter\edef\csname Etoc@@#1@@\endcsname - {\expandafter\noexpand\csname Etoc@#1@@\endcsname}% - \expandafter\edef\csname toclevel@@#1\endcsname - {\expandafter\noexpand\csname toclevel@#1\endcsname}% - \fi - \else - \PackageWarning{etoc} - {Argument `\detokenize{#2}' of \string\etocsetlevel\space should - represent one of\MessageBreak - \ifnum\Etoc@minf=-\thr@@-2, \fi-1, 0, 1, 2, \ifEtoc@deeplevels ...\else3, 4\fi, - \the\numexpr\Etoc@maxlevel-1, or \number\Etoc@maxlevel\space - but evaluates to \Etoc@tmp.\MessageBreak - The level of `#1' will be set to \number\Etoc@maxlevel.\MessageBreak - Tables of contents will ignore `#1' as long\MessageBreak - as its level is \number\Etoc@maxlevel\space (=\string\etocthemaxlevel).% - \MessageBreak - Reported}% - \etocifunknownlevelTF{#1}{\Etoc@newlevel{#1}}{}% - \expandafter\let\csname Etoc@#1@@\endcsname\Etoc@maxlevel - \fi -} -\def\etoclevel#1{\csname Etoc@#1@@\endcsname} -\def\etocthelevel#1{\number\csname Etoc@#1@@\endcsname} -\def\etocifunknownlevelTF#1{\@ifundefined{Etoc@#1@@}} -\@ifclassloaded{memoir}{\etocsetlevel{book}{-2}}{} -\etocsetlevel{part}{-1} -\etocsetlevel{chapter}{0} -\etocsetlevel{section}{1} -\etocsetlevel{subsection}{2} -\etocsetlevel{subsubsection}{3} -\etocsetlevel{paragraph}{4} -\etocsetlevel{subparagraph}{5} -\ifdefined\c@chapter - \etocsetlevel{appendix}{0} -\else - \etocsetlevel{appendix}{1} -\fi -\def\Etoc@do#1{\@namedef{l@@#1}{\csname l@#1\endcsname}} -\Etoc@dolevels -\let\Etoc@figure@@\Etoc@maxlevel -\let\Etoc@table@@ \Etoc@maxlevel -\let\Etoc@gobblethreeorfour\@gobblefour -\ifdefined\@gobblethree - \let\Etoc@gobblethree\@gobblethree -\else - \long\def\Etoc@gobblethree#1#2#3{}% -\fi -\AtBeginDocument{% -\@ifpackageloaded{parskip}{\Etoc@parskiptrue}{}% -\@ifpackageloaded{hyperref} - {\Etoc@hyperreftrue} - {\ifEtoc@oldLaTeX - \let\Etoc@gobblethreeorfour\Etoc@gobblethree - \let\Etoc@etoccontentsline@fourargs\Etoc@etoccontentsline@ - \long\def\Etoc@etoccontentsline@#1#2#3{% - \Etoc@etoccontentsline@fourargs{#1}{#2}{#3}{}% - }% - \fi - }% -} -\def\etocskipfirstprefix {\global\Etoc@skipprefixtrue } -\def\Etoc@updatestackofends#1\etoc@{\gdef\Etoc@stackofends{#1}} -\def\Etoc@stackofends{{-3}{}} -\def\Etoc@doendsandbegin{% - \expandafter\Etoc@traversestackofends\Etoc@stackofends\etoc@ -} -\def\Etoc@traversestackofends#1{% - \ifnum#1>\Etoc@level - \csname Etoc@end@#1\endcsname - \expandafter\Etoc@traversestackofends - \else - \Etoc@traversestackofends@done{#1}% - \fi -} -\def\Etoc@traversestackofends@done#1#2{#2% - \ifnum#1<\Etoc@level - \csname Etoc@begin@\the\numexpr\Etoc@level\endcsname - \Etoc@global\Etoc@isfirsttrue - \edef\Etoc@tmp{{\the\numexpr\Etoc@level}}% - \else - \Etoc@global\Etoc@isfirstfalse - \let\Etoc@tmp\@empty - \fi - \expandafter\Etoc@updatestackofends\Etoc@tmp{#1}% -} -\def\Etoc@etoccontentsline #1{% - \let\Etoc@next\Etoc@gobblethreeorfour - \ifnum\csname Etoc@#1@@\endcsname=\Etoc@maxlevel - \else - \Etoc@skipthisonefalse - \global\expandafter\let\expandafter\Etoc@level\csname Etoc@#1@@\endcsname - \if @\@car#1\@nil\else\global\let\Etoc@virtualtop\Etoc@level\fi - \ifEtoc@localtoc - \ifEtoc@stoptoc - \Etoc@skipthisonetrue - \else - \ifEtoc@notactive - \Etoc@skipthisonetrue - \else - \unless\ifnum\Etoc@level>\etoclocaltop - \Etoc@skipthisonetrue - \global\Etoc@stoptoctrue - \fi - \fi - \fi - \fi - \ifEtoc@skipthisone - \else - \unless\ifnum\Etoc@level>\c@tocdepth - \ifEtoc@standardlines - \let\Etoc@next\Etoc@savedcontentsline - \else - \let\Etoc@next\Etoc@etoccontentsline@ - \fi - \fi - \fi - \fi - \Etoc@next{#1}% -} -\def\Etoc@etoccontentsline@ #1#2#3#4{% - \Etoc@doendsandbegin - \Etoc@global\edef\Etoc@prefix {\expandafter\noexpand - \csname Etoc@prefix@\the\numexpr\Etoc@level\endcsname }% - \Etoc@global\edef\Etoc@contents{\expandafter\noexpand - \csname Etoc@contents@\the\numexpr\Etoc@level\endcsname }% - \ifEtoc@skipprefix \Etoc@global\def\Etoc@prefix{\@empty}\fi - \global\Etoc@skipprefixfalse - \Etoc@lxyz{#2}{#3}{#4}% - \Etoc@prefix - \Etoc@contents -} -\def\Etoc@lxyz #1#2#3{% - \ifEtoc@hyperref - \Etoc@global\def\etocthelink##1{\hyperlink{#3}{##1}}% - \else - \Etoc@global\let\etocthelink\@firstofone - \fi - \Etoc@global\def\etocthepage {#2}% - \ifEtoc@hyperref - \ifx\etocthepage\@empty - \Etoc@global\let\etocthelinkedpage\@empty - \else - \Etoc@global\def\etocthelinkedpage{\hyperlink {#3}{#2}}% - \fi - \else - \Etoc@global\let\etocthelinkedpage\etocthepage - \fi - \Etoc@global\def\etocthename{#1}% - \futurelet\Etoc@getnb@token\Etoc@@getnb #1\hspace\etoc@ - \ifEtoc@hyperref - \def\Etoc@tmp##1##2{\Etoc@global\def##2{\hyperlink{#3}{##1}}}% - \expandafter\Etoc@tmp\expandafter{\etocthename}\etocthelinkedname - \ifEtoc@numbered - \expandafter\Etoc@tmp\expandafter{\etocthenumber}\etocthelinkednumber - \else - \Etoc@global\let\etocthelinkednumber\@empty - \fi - \else - \Etoc@global\let\etocthelinkedname \etocthename - \Etoc@global\let\etocthelinkednumber\etocthenumber - \fi - \Etoc@global\expandafter\let\csname etoclink \endcsname \etocthelink - \Etoc@global\expandafter\let\csname etocname \endcsname \etocthename - \Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthenumber - \Etoc@global\expandafter\let\csname etocpage \endcsname \etocthepage - \ifEtoc@hyperref - \Etoc@lxyz@linktoc - \fi -} -\def\Etoc@lxyz@linktoc{% - \ifcase\Hy@linktoc - \or - \Etoc@global\expandafter\let\csname etocname \endcsname\etocthelinkedname - \Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthelinkednumber - \or % page - \Etoc@global\expandafter\let\csname etocpage \endcsname\etocthelinkedpage - \else % all - \Etoc@global\expandafter\let\csname etocname \endcsname\etocthelinkedname - \Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthelinkednumber - \Etoc@global\expandafter\let\csname etocpage \endcsname\etocthelinkedpage - \fi -} -\def\Etoc@@getnb {% - \let\Etoc@next\Etoc@getnb - \ifx\Etoc@getnb@token\@sptoken\let\Etoc@next\Etoc@getnb@nonbr\fi - \ifx\Etoc@getnb@token\bgroup \let\Etoc@next\Etoc@getnb@nonbr\fi - \Etoc@next -} -\def\Etoc@getnb #1{% - \in@{#1}{\numberline\chapternumberline\partnumberline\booknumberline}% - \ifin@ - \let\Etoc@next\Etoc@getnb@nmbrd - \else - \ifnum\Etoc@level=\m@ne - \let\Etoc@next\Etoc@@getit - \else - \let\Etoc@next\Etoc@getnb@nonbr - \fi - \in@{#1}{\nonumberline}% - \ifin@ - \let\Etoc@next\Etoc@getnb@nonumberline - \fi - \fi - \Etoc@next #1% -} -\def\Etoc@getnb@nmbrd #1#2{% - \Etoc@global\Etoc@numberedtrue - \Etoc@global\def\etocthenumber {#2}% - \Etoc@getnb@nmbrd@getname\@empty -}% -\def\Etoc@getnb@nmbrd@getname #1\hspace\etoc@ {% - \Etoc@global\expandafter\def\expandafter\etocthename\expandafter{#1}% -} -\def\Etoc@getnb@nonbr #1\etoc@ {% - \Etoc@global\Etoc@numberedfalse - \Etoc@global\let\etocthenumber \@empty -} -\def\Etoc@getnb@nonumberline #1\hspace\etoc@ {% - \Etoc@global\Etoc@numberedfalse - \Etoc@global\let\etocthenumber \@empty - \Etoc@global\expandafter\def\expandafter\etocthename\expandafter{\@gobble#1}% -} -\def\Etoc@@getit #1\hspace#2{% - \ifx\etoc@#2% - \Etoc@global\Etoc@numberedfalse - \Etoc@global\let\etocthenumber \@empty - \else - \Etoc@global\Etoc@numberedtrue - \Etoc@global\def\etocthenumber {#1}% - \expandafter\Etoc@getit@getname \expandafter\@empty - \fi -} -\def\Etoc@getit@getname #1\hspace\etoc@ {% - \Etoc@global\expandafter\def\expandafter\etocthename\expandafter{#1}% -} -\let\etocthename \@empty -\let\etocthenumber \@empty -\let\etocthepage \@empty -\let\etocthelinkedname \@empty -\let\etocthelinkednumber \@empty -\let\etocthelinkedpage \@empty -\let\etocthelink \@firstofone -\DeclareRobustCommand*{\etocname} {} -\DeclareRobustCommand*{\etocnumber}{} -\DeclareRobustCommand*{\etocpage} {} -\DeclareRobustCommand*{\etoclink} {\@firstofone} -\DeclareRobustCommand*{\etocifnumbered} - {\ifEtoc@numbered\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi} -\expandafter\let\expandafter\etocxifnumbered\csname etocifnumbered \endcsname -\DeclareRobustCommand*{\etociffirst} - {\ifEtoc@isfirst\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi} -\expandafter\let\expandafter\etocxiffirst\csname etociffirst \endcsname -\def\Etoc@readtoc {% - \ifeof \Etoc@tf - \else - \read \Etoc@tf to \Etoc@buffer - \Etoc@toctoks=\expandafter\expandafter\expandafter - {\expandafter\the\expandafter\Etoc@toctoks\Etoc@buffer}% - \expandafter\Etoc@readtoc - \fi -} -\Etoc@toctoks {}% (superfluous, but for clarity) -\AtBeginDocument{\IfFileExists{\jobname.toc} - {{\endlinechar=\m@ne - \makeatletter - \newread\Etoc@tf - \openin\Etoc@tf\@filef@und - \Etoc@readtoc - \global\Etoc@toctoks=\expandafter{\the\Etoc@toctoks}% - \closein\Etoc@tf}} - {\typeout{No file \jobname.toc.}}} -\def\Etoc@openouttoc{% - \ifEtoc@hyperref - \ifx\hyper@last\@undefined - \IfFileExists{\jobname .toc} - {\Hy@WarningNoLine - {old toc file detected; run LaTeX again (cheers from `etoc')}% - \global\Etoc@toctoks={}% - } - {}% - \fi - \fi - \if@filesw - \newwrite \tf@toc - \immediate \openout \tf@toc \jobname .toc\relax - \fi - \global\let\Etoc@openouttoc\empty -} -\def\Etoc@toctoc{% - \gdef\Etoc@stackofends{{-3}{}}% - \global\let\Etoc@level\Etoc@minf - \global\let\Etoc@virtualtop\Etoc@minf - \the\Etoc@toctoks - \ifEtoc@notactive - \else - \gdef\Etoc@level{-\thr@@}% - \Etoc@doendsandbegin - \fi -} -\def\Etoc@@startlocaltoc#1#2{% - \ifEtoc@localtoc - \ifnum #1=#2\relax - \global\let\etoclocaltop\Etoc@virtualtop - \Etoc@@startlocaltochook - \etoclocaltableofcontentshook - \ifEtoc@etocstyle - \etocetoclocaltocmaketitle - \fi - \ifx\Etoc@aftertitlehook\@empty - \else - \ifEtoc@localtoctotoc - \ifEtoc@ouroboros - \else - \let\Etoc@tmp\contentsline - \def\contentsline{\let\contentsline\Etoc@tmp\Etoc@gobblethreeorfour}% - \fi - \fi - \fi - \global\Etoc@notactivefalse - \fi - \fi -} -\let\etoc@startlocaltoc\@gobble -\let\Etoc@@startlocaltoc@toc\Etoc@@startlocaltoc -\let\Etoc@@startlocaltochook\@empty -\unless\ifEtoc@deeplevels - \def\etocdivisionnameatlevel#1{% - \ifcase\numexpr#1\relax - \ifdefined\c@chapter chapter\else section\fi% - \or section% - \or subsection% - \or subsubsection% - \or paragraph% - \or subparagraph% - \or empty% - \else\ifnum\numexpr#1<\m@ne - book% - \else - part% - \fi - \fi - } -\else - \def\etocdivisionnameatlevel#1{% - \ifcase\numexpr#1\relax - \ifdefined\c@chapter chapter\else section\fi% - \or section% - \or subsection% - \or subsubsection% - \or subsubsubsection% - \or subsubsubsubsection% - \or subsubsubsubsubsection% - \or subsubsubsubsubsubsection% - \or paragraph% - \or subparagraph% - \else\ifnum\numexpr#1>\z@ - empty% - \else\ifnum\numexpr#1=\m@ne - part% - \else - book% - \fi\fi - \fi - } -\fi -\def\etoclocalheadtotoc#1#2{\addcontentsline{toc}{@#1}{#2}} -\def\etocglobalheadtotoc{\addcontentsline{toc}} -\providecommand*\UseName{\@nameuse} -\def\etocetoclocaltocmaketitle{% - \UseName{\etocdivisionnameatlevel{\etoclocaltop+1}}*{\localcontentsname}% - \if@noskipsec\leavevmode\par\fi - \etociflocaltoctotoc - {\etocifisstarred - {}% star variant, do not add to toc - {\etoclocalheadtotoc - {\etocdivisionnameatlevel{\etoclocaltop+1}}% - {\localcontentsname}% - }% - }% - {}% -}% -\def\localcontentsname {\contentsname}% -\let\etoclocaltableofcontentshook\@empty -\if1\ifEtoc@lof0\fi\ifEtoc@lot0\fi1% -\else -\AtBeginDocument{% - \let\Etoc@originaladdcontentsline\addcontentsline - \def\addcontentsline{\Etoc@hackedaddcontentsline}% -}% -\fi -\ifEtoc@lof - \ifEtoc@lot - \def\Etoc@hackedaddcontentsline#1{% - \expanded{\noexpand\in@{.#1,}}{.lof,.lot,}% - \ifin@\expandafter\Etoc@hackedaddcontentsline@i - \else\expandafter\Etoc@originaladdcontentsline - \fi {#1}} - \else - \def\Etoc@hackedaddcontentsline#1{% - \expanded{\noexpand\in@{.#1,}}{.lof,}% - \ifin@\expandafter\Etoc@hackedaddcontentsline@i - \else\expandafter\Etoc@originaladdcontentsline - \fi {#1}} - \fi -\else - \def\Etoc@hackedaddcontentsline#1{% - \expanded{\noexpand\in@{.#1,}}{.lot,}% - \ifin@\expandafter\Etoc@hackedaddcontentsline@i - \else\expandafter\Etoc@originaladdcontentsline - \fi {#1}} -\fi -\def\Etoc@hackedaddcontentsline@i#1#2#3{% - \expanded{\noexpand\in@{.#1;#2,}}{.lof;figure,.lot;table,}% - \ifin@ - \addtocontents {toc}{% - \protect\contentsline{#2}{#3}{\thepage}{\ifEtoc@hyperref\@currentHref\fi}% - \ifdefined\protected@file@percent\protected@file@percent\fi - }% - \fi - \Etoc@originaladdcontentsline{#1}{#2}{#3}% -} -\unless\ifdefined\expanded - \def\Etoc@hackedaddcontentsline#1{% - {\edef\Etoc@tmp{\noexpand\in@{.#1,}{\ifEtoc@lof.lof,\fi\ifEtoc@lot.lot,\fi}}\expandafter}% - \Etoc@tmp - \ifin@\expandafter\Etoc@hackedaddcontentsline@i - \else\expandafter\Etoc@originaladdcontentsline - \fi {#1}% - } - \def\Etoc@hackedaddcontentsline@i#1#2#3{% - {\edef\Etoc@tmp{\noexpand\in@{.#1;#2,}}\expandafter}% - \Etoc@tmp{.lof;figure,.lot;table,}% - \ifin@ - \addtocontents {toc}{% - \protect\contentsline{#2}{#3}{\thepage}{\ifEtoc@hyperref\@currentHref\fi}% - \ifdefined\protected@file@percent\protected@file@percent\fi - }% - \fi - \Etoc@originaladdcontentsline{#1}{#2}{#3}% - } -\fi -\def\Etoc@@startlocallistof#1#2#3{% - \ifEtoc@localtoc - \ifnum #2=#3\relax - \global\let\etoclocaltop\Etoc@virtualtop - \global\Etoc@notactivefalse - \Etoc@@startlocaltochook - \csname etoclocallistof#1shook\endcsname - \ifEtoc@etocstyle - \csname etocetoclistof#1smaketitle\endcsname - \fi - \fi - \fi -} -\def\Etoc@@startlocallistof@setlevels#1{% - \ifnum\etoclocaltop<\z@ - \expandafter\let\csname Etoc@#1@@\endcsname\@ne - \else - \expandafter\let\csname Etoc@#1@@\expandafter\endcsname - \csname Etoc@\the\numexpr\etoclocaltop+\@ne @@\endcsname - \fi - \def\Etoc@do##1{% - \ifnum\etoclevel{##1}>\etoclocaltop - \expandafter\let\csname Etoc@##1@@\endcsname\Etoc@maxlevel - \fi}% - \Etoc@dolevels -} -\def\etoclocallistoffigureshook{\etocstandardlines} -\def\etoclocallistoftableshook {\etocstandardlines} -\def\locallistfigurename{\listfigurename} -\def\locallisttablename {\listtablename} -\def\etocetoclistoffiguresmaketitle{% - \UseName{\etocdivisionnameatlevel{\etoclocaltop+1}}*{\locallistfigurename}% - \ifnum\etoclocaltop>\tw@\mbox{}\par\fi - \etociflocalloftotoc - {\etocifisstarred - {}% star variant, do not add to toc - {\etoclocalheadtotoc - {\etocdivisionnameatlevel{\etoclocaltop+1}}% - {\locallistfigurename}% - }% - }% - {}% -}% -\def\etocetoclistoftablesmaketitle{% - \UseName{\etocdivisionnameatlevel{\etoclocaltop+1}}*{\locallisttablename}% - \ifnum\etoclocaltop>\tw@\mbox{}\par\fi - \etociflocallottotoc - {\etocifisstarred - {}% star variant, do not add to toc - {\etoclocalheadtotoc - {\etocdivisionnameatlevel{\etoclocaltop+1}}% - {\locallisttablename}% - }% - }% - {}% -}% -\let\Etoc@listofreset\@empty -\ifEtoc@lof - \def\locallistoffigures{% - \def\Etoc@listofreset{% - \let\Etoc@currext\Etoc@tocext - \let\Etoc@@startlocaltoc\Etoc@@startlocaltoc@toc - \let\Etoc@@startlocaltochook\@empty - \let\Etoc@listofreset\@empty - \let\Etoc@listofhook\@empty - }% - \let\Etoc@currext\Etoc@lofext - \def\Etoc@@startlocaltoc{\Etoc@@startlocallistof{figure}}% - \def\Etoc@@startlocaltochook{\Etoc@@startlocallistof@setlevels{figure}}% - \def\Etoc@listofhook{% - \def\Etoc@do####1{% - \expandafter\let\csname Etoc@@####1@@\endcsname\Etoc@maxlevel - }% - \Etoc@dolevels - }% - \localtableofcontents - } -\else - \def\locallistoffigures{% - \PackageError{etoc}{% - \string\locallistoffigures \on@line\space but\MessageBreak - package was loaded without `lof' option}% - {Try again with \string\usepackage[lof]{etoc}}% - } -\fi -\ifEtoc@lot - \def\locallistoftables{% - \def\Etoc@listofreset{% - \let\Etoc@currext\Etoc@tocext - \let\Etoc@@startlocaltoc\Etoc@@startlocaltoc@toc - \let\Etoc@@startlocaltochook\@empty - \let\Etoc@listofreset\@empty - \let\Etoc@listofhook\@empty - }% - \let\Etoc@currext\Etoc@lotext - \def\Etoc@@startlocaltoc{\Etoc@@startlocallistof{table}}% - \def\Etoc@@startlocaltochook{\Etoc@@startlocallistof@setlevels{table}}% - \def\Etoc@listofhook{% - \def\Etoc@do####1{% - \expandafter\let\csname Etoc@@####1@@\endcsname\Etoc@maxlevel - }% - \Etoc@dolevels - }% - \localtableofcontents - } -\else - \def\locallistoftables{% - \PackageError{etoc}{% - \string\locallistoftable \on@line\space but\MessageBreak - package was loaded without `lot' option}% - {Try again with \string\usepackage[lot]{etoc}}% - } -\fi -\def\Etoc@checkifempty {% - \global\Etoc@isemptytoctrue - \global\Etoc@stoptocfalse - \global\let\Etoc@level\Etoc@minf - \global\let\Etoc@virtualtop\Etoc@minf - \gdef\Etoc@stackofends{{-3}{}}% - \begingroup - \ifEtoc@localtoc - \def\etoc@startlocaltoc##1{% - \ifnum##1=\Etoc@tocid\relax - \global\let\etoclocaltop\Etoc@virtualtop - \Etoc@@startlocaltochook - \global\Etoc@notactivefalse - \fi - }% - \let\contentsline\Etoc@testingcontentslinelocal - \else - \let\contentsline\Etoc@testingcontentsline - \fi - \Etoc@storetocdepth - \let\Etoc@setlocaltop@doendsandbegin\@empty - \the\Etoc@toctoks - \Etoc@restoretocdepth - \endgroup -} -\DeclareRobustCommand*\etocifwasempty - {\ifEtoc@isemptytoc\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi } -\expandafter\let\expandafter\etocxifwasempty\csname etocifwasempty \endcsname -\def\Etoc@testingcontentslinelocal #1{% - \ifEtoc@stoptoc - \else - \ifnum\csname Etoc@#1@@\endcsname=\Etoc@maxlevel - \else - \global\expandafter\let\expandafter\Etoc@level\csname Etoc@#1@@\endcsname - \if @\@car#1\@nil\else\global\let\Etoc@virtualtop\Etoc@level\fi - \ifEtoc@notactive - \else - \ifnum\Etoc@level>\etoclocaltop - \unless\ifnum\Etoc@level>\c@tocdepth - \global\Etoc@isemptytocfalse - \global\Etoc@stoptoctrue - \fi - \else - \global\Etoc@stoptoctrue - \fi - \fi - \fi - \fi - \Etoc@gobblethreeorfour{}% -} -\def\Etoc@testingcontentsline #1{% - \ifEtoc@stoptoc - \else - \ifnum\csname Etoc@#1@@\endcsname=\Etoc@maxlevel - \else - \unless\ifnum\csname Etoc@#1@@\endcsname>\c@tocdepth - \global\Etoc@isemptytocfalse - \global\Etoc@stoptoctrue - \fi - \fi - \fi - \Etoc@gobblethreeorfour{}% -} -\def\Etoc@localtableofcontents#1{% - \gdef\etoclocaltop{-\@m}% - \Etoc@localtoctrue - \global\Etoc@isemptytocfalse - \edef\Etoc@tocid{#1}% - \ifnum\Etoc@tocid<\@ne - \setbox0\hbox{\ref{Unknown toc ref \@secondoftwo#1. \space Rerun LaTeX}}% - \global\Etoc@stoptoctrue - \gdef\etoclocaltop{-\thr@@}% - \Etoc@tableofcontents - \expandafter\Etoc@gobtoetoc@ - \fi - \global\Etoc@notactivetrue - \ifEtoc@checksemptiness - \Etoc@checkifempty - \fi - \ifEtoc@isemptytoc - \ifEtoc@notactive - \setbox0\hbox{\ref{Unknown toc ID \number\Etoc@tocid. \space Rerun LaTeX}}% - \global\Etoc@isemptytocfalse - \global\Etoc@stoptoctrue - \gdef\etoclocaltop{-\thr@@}% - \Etoc@tableofcontents - \expandafter\expandafter\expandafter\Etoc@gobtoetoc@ - \fi - \else - \global\Etoc@stoptocfalse - \global\Etoc@notactivetrue - \edef\etoc@startlocaltoc##1% - {\noexpand\Etoc@@startlocaltoc{##1}{\Etoc@tocid}}% - \Etoc@tableofcontents - \fi - \@gobble\etoc@ - \endgroup\ifEtoc@mustclosegroup\endgroup\fi - \Etoc@tocdepthreset - \Etoc@listofreset - \etocaftertochook -}% \Etoc@localtableofcontents -\def\Etoc@getref #1{% - \@ifundefined{r@#1} - {0} - {\expandafter\Etoc@getref@i\romannumeral-`0% - \expandafter\expandafter\expandafter - \@car\csname r@#1\endcsname0\@nil\@etoc - }% -} -\def\Etoc@getref@i#1#2\@etoc{\ifnum9<1\string#1 #1#2\else 0\fi} -\def\Etoc@ref#1{\Etoc@localtableofcontents{\Etoc@getref{#1}}} -\def\Etoc@label#1{\label{#1}\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents} -\@firstofone{\def\Etoc@again} {\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents} -\def\Etoc@dothis #1#2\etoc@ {\fi #1} -\def\Etoc@t@bleofcontents{% - \gdef\etoclocaltop{-\@M}% - \ifx\Etoc@nexttoken\label\Etoc@dothis{\expandafter\Etoc@label\@gobble}\fi - \ifx\Etoc@nexttoken\@sptoken\Etoc@dothis{\Etoc@again}\fi - \ifx\Etoc@nexttoken\ref\Etoc@dothis{\expandafter\Etoc@ref\@gobble}\fi - \ifEtoc@tocwithid\Etoc@dothis{\Etoc@localtableofcontents{\c@etoc@tocid}}\fi - \global\Etoc@isemptytocfalse - \ifEtoc@checksemptiness\Etoc@checkifempty\fi - \ifEtoc@isemptytoc - \ifEtoc@notocifnotoc - \expandafter\expandafter\expandafter\@gobble - \fi - \fi - \Etoc@tableofcontents - \endgroup - \ifEtoc@mustclosegroup\endgroup\fi - \Etoc@tocdepthreset - \Etoc@listofreset - \etocaftertochook - \@gobble\etoc@ - }% \Etoc@t@bleofcontents -\def\Etoc@table@fcontents{% - \refstepcounter{etoc@tocid}% - \Etoc@tocwithidfalse - \futurelet\Etoc@nexttoken\Etoc@t@bleofcontents -} -\def\Etoc@localtable@fcontents{% - \refstepcounter{etoc@tocid}% - \addtocontents{toc}{\string\etoc@startlocaltoc{\the\c@etoc@tocid}}% - \Etoc@tocwithidtrue - \futurelet\Etoc@nexttoken\Etoc@t@bleofcontents -} -\def\etoctableofcontents{% - \Etoc@openouttoc - \Etoc@tocdepthset - \begingroup - \@ifstar - {\let\Etoc@aftertitlehook\@empty\Etoc@table@fcontents} - {\def\Etoc@aftertitlehook{\etocaftertitlehook}\Etoc@table@fcontents}% -}% \etoctableofcontents -\def\etocifisstarred{\ifx\Etoc@aftertitlehook\@empty - \expandafter\@firstoftwo\else - \expandafter\@secondoftwo - \fi} -\let\etocoriginaltableofcontents\tableofcontents -\let\tableofcontents\etoctableofcontents -\let\Etoc@listofhook\@empty -\newcommand*\localtableofcontents{% - \Etoc@openouttoc - \Etoc@tocdepthset - \begingroup - \Etoc@listofhook - \@ifstar - {\let\Etoc@aftertitlehook\@empty\Etoc@localtable@fcontents} - {\def\Etoc@aftertitlehook{\etocaftertitlehook}\Etoc@localtable@fcontents}% -}% \localtableofcontents -\newcommand*\localtableofcontentswithrelativedepth[1]{% - \def\Etoc@@startlocaltochook{% - \global\c@tocdepth\numexpr\etoclocaltop+#1\relax - }% - \def\Etoc@listofreset{\let\Etoc@@startlocaltochook\@empty - \let\Etoc@listofreset\@empty}% - \localtableofcontents -}% \localtableofcontentswithrelativedepth -\newcommand\etocsettocstyle[2]{% - \Etoc@etocstylefalse - \Etoc@classstylefalse - \def\Etoc@tableofcontents@user@before{#1}% - \def\Etoc@tableofcontents@user@after {#2}% -}% -\def\etocstoretocstyleinto#1{% -%% \@ifdefinable#1{% - \edef#1{\noexpand\Etoc@etocstylefalse\noexpand\Etoc@classstylefalse - \def\noexpand\Etoc@tableofcontents@user@before{% - \unexpanded\expandafter{\Etoc@tableofcontents@user@before}% - }% - \def\noexpand\Etoc@tableofcontents@user@after{% - \unexpanded\expandafter{\Etoc@tableofcontents@user@after}% - }% - }% -%% }% -}% -\def\Etoc@tableofcontents {% - \Etoc@tableofcontents@etoc@before - \ifEtoc@localtoc\ifEtoc@etocstyle\expandafter\expandafter\expandafter\@gobble\fi\fi - \Etoc@tableofcontents@user@before - \Etoc@tableofcontents@contents - \ifEtoc@localtoc\ifEtoc@etocstyle\expandafter\expandafter\expandafter\@gobble\fi\fi - \Etoc@tableofcontents@user@after - \Etoc@tableofcontents@etoc@after - \@gobble\etoc@ -} -\def\Etoc@tableofcontents@etoc@before{% - \ifnum\c@tocdepth>\Etoc@minf - \else - \expandafter\Etoc@gobtoetoc@ - \fi - \Etoc@par - \Etoc@beforetitlehook - \etocbeforetitlehook - \Etoc@storetocdepth - \let\Etoc@savedcontentsline\contentsline - \let\contentsline\Etoc@etoccontentsline - \ifEtoc@standardlines - \else - \def\Etoc@do##1{% - \expandafter\def\csname etocsaved##1tocline\endcsname - {\PackageError{etoc}{% - \expandafter\string\csname etocsaved##1tocline\endcsname\space - has been deprecated\MessageBreak - at 1.1a and is removed at 1.2.\MessageBreak - Use \expandafter\string\csname l@##1\endcsname\space directly.\MessageBreak - Reported \on@line}% - {I will use \expandafter\string - \csname l@##1\endcsname\space myself for this time.% - }% - \csname l@##1\endcsname - }% - }% - \Etoc@dolevels - \fi -}% -\def\Etoc@tableofcontents@contents{% - \Etoc@tocdepthset - \ifEtoc@parskip\parskip\z@skip\fi - \Etoc@aftertitlehook - \gdef\etoclocaltop{-\thr@@}% - \Etoc@toctoc - \etocaftercontentshook -}% -\def\Etoc@tableofcontents@etoc@after{% - \@nobreakfalse - \Etoc@restoretocdepth - \ifx\Etoc@global\global - \@ifundefined{tof@finish} - {} - {\ifx\tof@finish\@empty - \else - \global\let\contentsline\Etoc@savedcontentsline - \fi - }% - \fi -} -\def\etocsetstyle#1{\ifcsname Etoc@#1@@\endcsname - \expandafter\Etoc@setstyle@a - \else - \expandafter\Etoc@setstyle@error - \fi {#1}% -} -\def\Etoc@setstyle@error #1{% - \PackageWarning{etoc}{`#1' is unknown to etoc. \space Did you\MessageBreak - forget some \string\etocsetlevel{#1}{}?\MessageBreak - Reported}% - \@gobblefour -} -\def\Etoc@setstyle@a #1{% - \edef\Etoc@tmp{\the\numexpr\csname Etoc@#1@@\endcsname}% - \if1\unless\ifnum\Etoc@tmp<\Etoc@maxlevel 0\fi - \unless\ifnum\Etoc@tmp>\Etoc@minf 0\fi1% - \Etoc@standardlinesfalse - \expandafter\Etoc@setstyle@b\expandafter\Etoc@tmp - \else - \ifnum\Etoc@tmp=\Etoc@maxlevel - \in@{.#1,}{.figure,.table,}% - \ifin@ - \PackageWarning{etoc} - {You can not use \string\etocsetstyle\space with `#1'.\MessageBreak - Check the package documentation (in particular about\MessageBreak - \string\etoclocallistoffigureshook/\string\etoclocallistoftableshook)% - \MessageBreak on how to customize - figure and table entries in local\MessageBreak lists. Reported}% - \else - \PackageInfo{etoc} - {Attempt to set the style of `#1',\MessageBreak - whose level is currently the maximal one \etocthemaxlevel,\MessageBreak - which is never displayed. \space This will be ignored\MessageBreak - but note that we do quit compatibility mode.\MessageBreak - Reported}% - \Etoc@standardlinesfalse - \fi - \else - \PackageWarning{etoc}{This should not happen. Reported}% - \fi - \expandafter\@gobblefour - \fi -} -\long\def\Etoc@setstyle@b#1#2#3#4#5{% - \expandafter\def\csname Etoc@begin@#1\endcsname {#2}% - \expandafter\def\csname Etoc@prefix@#1\endcsname {#3}% - \expandafter\def\csname Etoc@contents@#1\endcsname {#4}% - \expandafter\def\csname Etoc@end@#1\endcsname {#5}% -} -\def\Etoc@setstyle@e#1{% - \expandafter\let\csname Etoc@begin@#1\endcsname \@empty - \expandafter\let\csname Etoc@prefix@#1\endcsname \@empty - \expandafter\let\csname Etoc@contents@#1\endcsname \@empty - \expandafter\let\csname Etoc@end@#1\endcsname \@empty -} -\def\Etoc@storelines@a#1{% - \noexpand\Etoc@setstyle@b{#1}% - {\expandafter\Etoc@expandonce\csname Etoc@begin@#1\endcsname}% - {\expandafter\Etoc@expandonce\csname Etoc@prefix@#1\endcsname}% - {\expandafter\Etoc@expandonce\csname Etoc@contents@#1\endcsname}% - {\expandafter\Etoc@expandonce\csname Etoc@end@#1\endcsname}% -} -\def\Etoc@expandonce#1{\unexpanded\expandafter{#1}} -\def\etocstorelinestylesinto#1{% - \edef#1{\Etoc@storelines@a{-2}\Etoc@storelines@a{-1}\Etoc@storelines@a{0}% - \Etoc@storelines@a {1}\Etoc@storelines@a {2}\Etoc@storelines@a{3}% - \Etoc@storelines@a {4}\Etoc@storelines@a {5}% - \ifEtoc@deeplevels - \Etoc@storelines@a{6}\Etoc@storelines@a{7}\Etoc@storelines@a{8}% - \Etoc@storelines@a{9}\Etoc@storelines@a{10}\Etoc@storelines@a{11}% - \fi - }% -} -\def\etocstorethislinestyleinto#1#2{% - \edef#2{\expandafter\Etoc@storelines@a\expandafter{\number\etoclevel{#1}}}% -}% -\def\etocfontminustwo {\normalfont \LARGE \bfseries} -\def\etocfontminusone {\normalfont \large \bfseries} -\def\etocfontzero {\normalfont \large \bfseries} -\def\etocfontone {\normalfont \normalsize \bfseries} -\def\etocfonttwo {\normalfont \normalsize} -\def\etocfontthree {\normalfont \footnotesize} -\def\etocsepminustwo {4ex \@plus .5ex \@minus .5ex} -\def\etocsepminusone {4ex \@plus .5ex \@minus .5ex} -\def\etocsepzero {2.5ex \@plus .4ex \@minus .4ex} -\def\etocsepone {1.5ex \@plus .3ex \@minus .3ex} -\def\etocseptwo {.5ex \@plus .1ex \@minus .1ex} -\def\etocsepthree {.25ex \@plus .05ex \@minus .05ex} -\def\etocbaselinespreadminustwo {1} -\def\etocbaselinespreadminusone {1} -\def\etocbaselinespreadzero {1} -\def\etocbaselinespreadone {1} -\def\etocbaselinespreadtwo {1} -\def\etocbaselinespreadthree {.9} -\def\etocminustwoleftmargin {1.5em plus 0.5fil} -\def\etocminustworightmargin {1.5em plus -0.5fil} -\def\etocminusoneleftmargin {1em} -\def\etocminusonerightmargin {1em} -\def\etoctoclineleaders - {\hbox{\normalfont\normalsize\hb@xt@2ex {\hss.\hss}}} -\def\etocabbrevpagename {p.~} -\def\etocpartname {Part} -\def\etocbookname {Book} -\def\etocdefaultlines{% - \Etoc@standardlinesfalse - \etocdefaultlines@setbook - \etocdefaultlines@setpart - \etocdefaultlines@setchapter - \etocdefaultlines@setsection - \etocdefaultlines@setsubsection - \etocdefaultlines@setsubsubsection - \etocdefaultlines@setdeeperones -} -\def\etocnoprotrusion{\leavevmode\kern-\p@\kern\p@} -\@ifclassloaded{memoir}{% - \def\etocdefaultlines@setbook{% - \Etoc@setstyle@b - {-2}% - {\addpenalty\@M\etocskipfirstprefix} - {\addpenalty\@secpenalty} - {\begingroup - \etocfontminustwo - \addvspace{\etocsepminustwo}% - \parindent \z@ - \leftskip \etocminustwoleftmargin - \rightskip \etocminustworightmargin - \parfillskip \@flushglue - \vbox{\etocifnumbered{\etoclink{\etocbookname\enspace\etocthenumber:\quad}}{}% - \etocname - \baselineskip\etocbaselinespreadminustwo\baselineskip - \par}% - \addpenalty\@M\addvspace{\etocsepminusone}% - \endgroup} - {}% - } - }{\let\etocdefaultlines@setbook\@empty} -\def\etocdefaultlines@setpart{% -\Etoc@setstyle@b - {-1}% - {\addpenalty\@M\etocskipfirstprefix} - {\addpenalty\@secpenalty} - {\begingroup - \etocfontminusone - \addvspace{\etocsepminusone}% - \parindent \z@ - \leftskip \etocminusoneleftmargin - \rightskip \etocminusonerightmargin - \parfillskip \@flushglue - \vbox{\etocifnumbered{\etoclink{\etocpartname\enspace\etocthenumber.\quad}}{}% - \etocname - \baselineskip\etocbaselinespreadminusone\baselineskip - \par}% - \addpenalty\@M\addvspace{\etocsepzero}% - \endgroup} - {}% -} -\def\etocdefaultlines@setchapter{% -\Etoc@setstyle@b - {0}% - {\addpenalty\@M\etocskipfirstprefix} - {\addpenalty\@itempenalty} - {\begingroup - \etocfontzero - \addvspace{\etocsepzero}% - \parindent \z@ \parfillskip \@flushglue - \vbox{\etocifnumbered{\etocnumber.\enspace}{}\etocname - \baselineskip\etocbaselinespreadzero\baselineskip - \par}% - \endgroup} - {\addpenalty{-\@highpenalty}\addvspace{\etocsepminusone}}% -} -\def\etocdefaultlines@setsection{% -\Etoc@setstyle@b - {1}% - {\addpenalty\@M\etocskipfirstprefix} - {\addpenalty\@itempenalty} - {\begingroup - \etocfontone - \addvspace{\etocsepone}% - \parindent \z@ \parfillskip \z@ - \setbox\z@\vbox{\parfillskip\@flushglue - \etocname\par - \setbox\tw@\lastbox - \global\setbox\@ne\hbox{\unhbox\tw@\ }}% - \dimen\z@=\wd\@ne - \setbox\z@=\etoctoclineleaders - \advance\dimen\z@\wd\z@ - \etocifnumbered - {\setbox\tw@\hbox{\etocnumber, \etocabbrevpagename\etocpage\etocnoprotrusion}} - {\setbox\tw@\hbox{\etocabbrevpagename\etocpage\etocnoprotrusion}}% - \advance\dimen\z@\wd\tw@ - \ifdim\dimen\z@ < \linewidth - \vbox{\etocname~% - \leaders\box\z@\hfil\box\tw@ - \baselineskip\etocbaselinespreadone\baselineskip - \par}% - \else - \vbox{\etocname~% - \leaders\copy\z@\hfil\break - \hbox{}\leaders\box\z@\hfil\box\tw@ - \baselineskip\etocbaselinespreadone\baselineskip - \par}% - \fi - \endgroup} - {\addpenalty\@secpenalty\addvspace{\etocsepzero}}% -} -\def\etocdefaultlines@setsubsection{% -\Etoc@setstyle@b - {2}% - {\addpenalty\@medpenalty\etocskipfirstprefix} - {\addpenalty\@itempenalty} - {\begingroup - \etocfonttwo - \addvspace{\etocseptwo}% - \parindent \z@ \parfillskip \z@ - \setbox\z@\vbox{\parfillskip\@flushglue - \etocname\par\setbox\tw@\lastbox - \global\setbox\@ne\hbox{\unhbox\tw@}}% - \dimen\z@=\wd\@ne - \setbox\z@=\etoctoclineleaders - \advance\dimen\z@\wd\z@ - \etocifnumbered - {\setbox\tw@\hbox{\etocnumber, \etocabbrevpagename\etocpage\etocnoprotrusion}} - {\setbox\tw@\hbox{\etocabbrevpagename\etocpage\etocnoprotrusion}}% - \advance\dimen\z@\wd\tw@ - \ifdim\dimen\z@ < \linewidth - \vbox{\etocname~% - \leaders\box\z@\hfil\box\tw@ - \baselineskip\etocbaselinespreadtwo\baselineskip - \par}% - \else - \vbox{\etocname~% - \leaders\copy\z@\hfil\break - \hbox{}\leaders\box\z@\hfil\box\tw@ - \baselineskip\etocbaselinespreadtwo\baselineskip - \par}% - \fi - \endgroup} - {\addpenalty\@secpenalty\addvspace{\etocsepone}}% -} -\def\etocdefaultlines@setsubsubsection{% -\Etoc@setstyle@b - {3}% - {\addpenalty\@M - \etocfontthree - \vspace{\etocsepthree}% - \noindent - \etocskipfirstprefix} - {\allowbreak\,--\,} - {\etocname} - {.\hfil - \begingroup - \baselineskip\etocbaselinespreadthree\baselineskip - \par - \endgroup - \addpenalty{-\@highpenalty}} -} -\def\etocdefaultlines@setdeeperones{% -\Etoc@setstyle@e{4}% -\Etoc@setstyle@e{5}% -\ifEtoc@deeplevels - \Etoc@setstyle@e{6}% - \Etoc@setstyle@e{7}% - \Etoc@setstyle@e{8}% - \Etoc@setstyle@e{9}% - \Etoc@setstyle@e{10}% - \Etoc@setstyle@e{11}% -\fi -} -\def\etocabovetocskip{3.5ex \@plus 1ex \@minus .2ex} -\def\etocbelowtocskip{3.5ex \@plus 1ex \@minus .2ex} -\def\etoccolumnsep{2em} -\def\etocmulticolsep{0ex} -\def\etocmulticolpretolerance{-1} -\def\etocmulticoltolerance{200} -\def\etocdefaultnbcol{2} -\def\etocinnertopsep{2ex} -\newcommand\etocmulticolstyle[2][\etocdefaultnbcol]{% -\etocsettocstyle - {\let\etocoldpar\par - \addvspace{\etocabovetocskip}% - \ifnum #1>\@ne - \expandafter\@firstoftwo - \else \expandafter\@secondoftwo - \fi - {\multicolpretolerance\etocmulticolpretolerance - \multicoltolerance\etocmulticoltolerance - \setlength{\columnsep}{\etoccolumnsep}% - \setlength{\multicolsep}{\etocmulticolsep}% - \begin{multicols}{#1}[#2\etocoldpar\addvspace{\etocinnertopsep}]} - {#2\ifvmode\else\begingroup\interlinepenalty\@M\parskip\z@skip - \@@par\endgroup - \fi - \nobreak\addvspace{\etocinnertopsep}% - \pretolerance\etocmulticolpretolerance - \tolerance\etocmulticoltolerance}% - }% - {\ifnum #1>\@ne - \expandafter\@firstofone - \else \expandafter\@gobble - \fi - {\end{multicols}}% - \addvspace{\etocbelowtocskip}}% -} -\def\etocinnerbottomsep{3.5ex} -\def\etocinnerleftsep{2em} -\def\etocinnerrightsep{2em} -\def\etoctoprule{\hrule} -\def\etocleftrule{\vrule} -\def\etocrightrule{\vrule} -\def\etocbottomrule{\hrule} -\def\etoctoprulecolorcmd{\relax} -\def\etocbottomrulecolorcmd{\relax} -\def\etocleftrulecolorcmd{\relax} -\def\etocrightrulecolorcmd{\relax} -\def\etoc@ruledheading #1{% - \hb@xt@\linewidth{\color@begingroup - \hss #1\hss\hskip-\linewidth - \etoctoprulecolorcmd\leaders\etoctoprule\hss - \phantom{#1}% - \leaders\etoctoprule\hss\color@endgroup}% - \nointerlineskip\nobreak\vskip\etocinnertopsep} -\newcommand*\etocruledstyle[2][\etocdefaultnbcol]{% -\etocsettocstyle - {\addvspace{\etocabovetocskip}% - \ifnum #1>\@ne - \expandafter\@firstoftwo - \else \expandafter\@secondoftwo - \fi - {\multicolpretolerance\etocmulticolpretolerance - \multicoltolerance\etocmulticoltolerance - \setlength{\columnsep}{\etoccolumnsep}% - \setlength{\multicolsep}{\etocmulticolsep}% - \begin{multicols}{#1}[\etoc@ruledheading{#2}]} - {\etoc@ruledheading{#2}% - \pretolerance\etocmulticolpretolerance - \tolerance\etocmulticoltolerance}} - {\ifnum #1>\@ne\expandafter\@firstofone - \else \expandafter\@gobble - \fi - {\end{multicols}}% - \addvspace{\etocbelowtocskip}}} -\def\etocframedmphook{\relax} -\long\def\etocbkgcolorcmd{\relax} -\long\def\Etoc@relax{\relax} -\newbox\etoc@framed@titlebox -\newbox\etoc@framed@contentsbox -\newcommand*\etocframedstyle[2][\etocdefaultnbcol]{% -\etocsettocstyle{% - \addvspace{\etocabovetocskip}% - \sbox\z@{#2}% - \dimen\z@\dp\z@ - \ifdim\wd\z@<\linewidth \dp\z@\z@ \else \dimen\z@\z@ \fi - \setbox\etoc@framed@titlebox=\hb@xt@\linewidth{\color@begingroup - \hss - \ifx\etocbkgcolorcmd\Etoc@relax - \else - \sbox\tw@{\color{white}% - \vrule\@width\wd\z@\@height\ht\z@\@depth\dimen\z@}% - \ifdim\wd\z@<\linewidth \dp\tw@\z@\fi - \box\tw@ - \hskip-\wd\z@ - \fi - \copy\z@ - \hss - \hskip-\linewidth - \etoctoprulecolorcmd\leaders\etoctoprule\hss - \hskip\wd\z@ - \etoctoprulecolorcmd\leaders\etoctoprule\hss\color@endgroup}% - \setbox\z@\hbox{\etocleftrule\etocrightrule}% - \dimen\tw@\linewidth\advance\dimen\tw@-\wd\z@ - \advance\dimen\tw@-\etocinnerleftsep - \advance\dimen\tw@-\etocinnerrightsep - \setbox\etoc@framed@contentsbox=\vbox\bgroup - \hsize\dimen\tw@ - \kern\dimen\z@ - \vskip\etocinnertopsep - \hbox\bgroup - \begin{minipage}{\hsize}% - \etocframedmphook - \ifnum #1>\@ne - \expandafter\@firstoftwo - \else \expandafter\@secondoftwo - \fi - {\multicolpretolerance\etocmulticolpretolerance - \multicoltolerance\etocmulticoltolerance - \setlength{\columnsep}{\etoccolumnsep}% - \setlength{\multicolsep}{\etocmulticolsep}% - \begin{multicols}{#1}} - {\pretolerance\etocmulticolpretolerance - \tolerance\etocmulticoltolerance}} - {\ifnum #1>\@ne\expandafter\@firstofone - \else \expandafter\@gobble - \fi - {\end{multicols}\unskip }% - \end{minipage}% - \egroup - \vskip\etocinnerbottomsep - \egroup - \vbox{\hsize\linewidth - \ifx\etocbkgcolorcmd\Etoc@relax - \else - \kern\ht\etoc@framed@titlebox - \kern\dp\etoc@framed@titlebox - \hb@xt@\linewidth{\color@begingroup - \etocleftrulecolorcmd\etocleftrule - \etocbkgcolorcmd - \leaders\vrule - \@height\ht\etoc@framed@contentsbox - \@depth\dp\etoc@framed@contentsbox - \hss - \etocrightrulecolorcmd\etocrightrule - \color@endgroup}\nointerlineskip - \vskip-\dp\etoc@framed@contentsbox - \vskip-\ht\etoc@framed@contentsbox - \vskip-\dp\etoc@framed@titlebox - \vskip-\ht\etoc@framed@titlebox - \fi - \box\etoc@framed@titlebox\nointerlineskip - \hb@xt@\linewidth{\color@begingroup - {\etocleftrulecolorcmd\etocleftrule}% - \hss\box\etoc@framed@contentsbox\hss - \etocrightrulecolorcmd\etocrightrule\color@endgroup} - \nointerlineskip - \vskip\ht\etoc@framed@contentsbox - \vskip\dp\etoc@framed@contentsbox - \hb@xt@\linewidth{\color@begingroup\etocbottomrulecolorcmd - \leaders\etocbottomrule\hss\color@endgroup}} - \addvspace{\etocbelowtocskip}}} -\newcommand\etoc@multicoltoc[2][\etocdefaultnbcol]{% - \etocmulticolstyle[#1]{#2}% - \tableofcontents} -\newcommand\etoc@multicoltoci[2][\etocdefaultnbcol]{% - \etocmulticolstyle[#1]{#2}% - \tableofcontents*} -\newcommand\etoc@local@multicoltoc[2][\etocdefaultnbcol]{% - \etocmulticolstyle[#1]{#2}% - \localtableofcontents} -\newcommand\etoc@local@multicoltoci[2][\etocdefaultnbcol]{% - \etocmulticolstyle[#1]{#2}% - \localtableofcontents*} -\newcommand*\etoc@ruledtoc[2][\etocdefaultnbcol]{% - \etocruledstyle[#1]{#2}% - \tableofcontents} -\newcommand*\etoc@ruledtoci[2][\etocdefaultnbcol]{% - \etocruledstyle[#1]{#2}% - \tableofcontents*} -\newcommand*\etoc@local@ruledtoc[2][\etocdefaultnbcol]{% - \etocruledstyle[#1]{#2}% - \localtableofcontents} -\newcommand*\etoc@local@ruledtoci[2][\etocdefaultnbcol]{% - \etocruledstyle[#1]{#2}% - \localtableofcontents*} -\newcommand*\etoc@framedtoc[2][\etocdefaultnbcol]{% - \etocframedstyle[#1]{#2}% - \tableofcontents} -\newcommand*\etoc@framedtoci[2][\etocdefaultnbcol]{% - \etocframedstyle[#1]{#2}% - \tableofcontents*} -\newcommand*\etoc@local@framedtoc[2][\etocdefaultnbcol]{% - \etocframedstyle[#1]{#2}% - \localtableofcontents} -\newcommand*\etoc@local@framedtoci[2][\etocdefaultnbcol]{% - \etocframedstyle[#1]{#2}% - \localtableofcontents*} -\def\etocmulticol{\begingroup - \Etoc@mustclosegrouptrue - \@ifstar - {\etoc@multicoltoci} - {\etoc@multicoltoc}} -\def\etocruled{\begingroup - \Etoc@mustclosegrouptrue - \@ifstar - {\etoc@ruledtoci} - {\etoc@ruledtoc}} -\def\etocframed{\begingroup - \Etoc@mustclosegrouptrue - \@ifstar - {\etoc@framedtoci} - {\etoc@framedtoc}} -\def\etoclocalmulticol{\begingroup - \Etoc@mustclosegrouptrue - \@ifstar - {\etoc@local@multicoltoci} - {\etoc@local@multicoltoc}} -\def\etoclocalruled{\begingroup - \Etoc@mustclosegrouptrue - \@ifstar - {\etoc@local@ruledtoci} - {\etoc@local@ruledtoc}} -\def\etoclocalframed{\begingroup - \Etoc@mustclosegrouptrue - \@ifstar - {\etoc@local@framedtoci} - {\etoc@local@framedtoc}} -\def\etocmemoirtoctotocfmt #1#2{% - \PackageWarning{etoc} - {\string\etocmemoirtoctotocfmt\space is deprecated.\MessageBreak - Use in its place \string\etocsettoclineforclasstoc,\MessageBreak - and \string\etocsettoclineforclasslistof{toc} (or {lof}, {lot}). - I will do this now.\MessageBreak - Reported}% - \etocsettoclineforclasstoc{#1}{#2}% - \etocsettoclineforclasslistof{toc}{#1}{#2}% -} -\def\etocsettoclineforclasstoc #1#2{% - \def\etocclassmaintocaddtotoc{\etocglobalheadtotoc{#1}{#2}}% -} -\def\etocsettoclineforclasslistof #1#2#3{% - \@namedef{etocclasslocal#1addtotoc}{\etoclocalheadtotoc{#2}{#3}}% -} -\let\etocclasslocaltocaddtotoc\@empty -\let\etocclasslocallofaddtotoc\@empty -\let\etocclasslocallotaddtotoc\@empty -\ifdefined\c@chapter - \def\etocclasslocaltocmaketitle{\section*{\localcontentsname}} - \def\etocclasslocallofmaketitle{\section*{\locallistfigurename}} - \def\etocclasslocallotmaketitle{\section*{\locallisttablename}} - \etocsettoclineforclasstoc {chapter}{\contentsname} - \etocsettoclineforclasslistof{toc}{section}{\localcontentsname} - \etocsettoclineforclasslistof{lof}{section}{\locallistfigurename} - \etocsettoclineforclasslistof{lot}{section}{\locallisttablename} -\else - \def\etocclasslocaltocmaketitle{\subsection*{\localcontentsname}}% - \def\etocclasslocallofmaketitle{\subsection*{\locallistfigurename}}% - \def\etocclasslocallotmaketitle{\subsection*{\locallisttablename}}% - \etocsettoclineforclasstoc {section}{\contentsname} - \etocsettoclineforclasslistof{toc}{subsection}{\localcontentsname} - \etocsettoclineforclasslistof{lof}{subsection}{\locallistfigurename} - \etocsettoclineforclasslistof{lot}{subsection}{\locallisttablename} -\fi -\def\etocclasslocalperhapsaddtotoc #1{% - \etocifisstarred - {} - {\csname ifEtoc@local#1totoc\endcsname - \csname etocclasslocal#1addtotoc\endcsname - \fi - }% -} -\def\etocarticlestyle{% - \etocsettocstyle - {\ifEtoc@localtoc - \@nameuse{etocclasslocal\Etoc@currext maketitle}% - \etocclasslocalperhapsaddtotoc\Etoc@currext - \else - \section *{\contentsname - \@mkboth {\MakeUppercase \contentsname} - {\MakeUppercase \contentsname}}% - \etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}% - \fi - } - {}% -} -\def\etocarticlestylenomarks{% - \etocsettocstyle - {\ifEtoc@localtoc - \@nameuse{etocclasslocal\Etoc@currext maketitle}% - \etocclasslocalperhapsaddtotoc\Etoc@currext - \else - \section *{\contentsname}% - \etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}% - \fi - } - {}% -} -\def\etocbookstyle{% - \etocsettocstyle - {\if@twocolumn \@restonecoltrue \onecolumn \else \@restonecolfalse \fi - \ifEtoc@localtoc - \@nameuse{etocclasslocal\Etoc@currext maketitle}% - \etocclasslocalperhapsaddtotoc\Etoc@currext - \else - \chapter *{\contentsname - \@mkboth {\MakeUppercase \contentsname} - {\MakeUppercase \contentsname}}% - \etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}% - \fi - }% - {\if@restonecol \twocolumn \fi}% -} -\def\etocbookstylenomarks{% - \etocsettocstyle - {\if@twocolumn \@restonecoltrue \onecolumn \else \@restonecolfalse \fi - \ifEtoc@localtoc - \@nameuse{etocclasslocal\Etoc@currext maketitle}% - \etocclasslocalperhapsaddtotoc\Etoc@currext - \else - \chapter *{\contentsname}% - \etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}% - \fi - }% - {\if@restonecol \twocolumn \fi}% -} -\let\etocreportstyle\etocbookstyle -\let\etocreportstylenomarks\etocbookstylenomarks -\def\etocmemoirstyle{% - \etocsettocstyle - {\ensureonecol \par \begingroup \phantomsection - \ifx\Etoc@aftertitlehook\@empty - \else - \ifmem@em@starred@listof - \else - \ifEtoc@localtoc - \etocclasslocalperhapsaddtotoc\Etoc@currext - \else - \ifEtoc@maintoctotoc - \etocclassmaintocaddtotoc - \fi - \fi - \fi - \fi - \ifEtoc@localtoc - \@namedef{@\Etoc@currext maketitle}{% - \@nameuse{etocclasslocal\Etoc@currext maketitle}% - }% - \fi - \@nameuse {@\Etoc@currext maketitle} %<< space token here from memoir code - \ifx\Etoc@aftertitlehook\@empty - \else - \Etoc@aftertitlehook \let \Etoc@aftertitlehook \relax - \fi - \parskip \cftparskip \@nameuse {cft\Etoc@currext beforelisthook}% - }% - {\@nameuse {cft\Etoc@currext afterlisthook}% - \endgroup\restorefromonecol - }% -} -\let\Etoc@beforetitlehook\@empty -\if1\@ifclassloaded{scrartcl}0{\@ifclassloaded{scrbook}0{\@ifclassloaded{scrreprt}01}}% -\expandafter\@gobble -\else - \ifdefined\setuptoc - \def\Etoc@beforetitlehook{% - \ifEtoc@localtoc - \etocclasslocalperhapsaddtotoc\Etoc@currext - \setuptoc{\Etoc@currext}{leveldown}% - \else - \etocifisstarred{}{\etocifmaintoctotoc{\setuptoc{toc}{totoc}}}% - \fi - }% - \fi -\expandafter\@firstofone -\fi -{\def\etocclasslocalperhapsaddtotoc #1{% - \etocifisstarred - {}% - {\csname ifEtoc@local#1totoc\endcsname - \setuptoc{\Etoc@currext}{totoc}% - \fi - }% - }% -} -\ifdefined\Iftocfeature - \def\etoc@Iftocfeature{\Iftocfeature}% -\else - \def\etoc@Iftocfeature{\iftocfeature}% -\fi -\def\etocscrartclstyle{% - \etocsettocstyle - {\ifx\Etoc@currext\Etoc@tocext - \expandafter\@firstofone - \else - \expandafter\@gobble - \fi - {\let\if@dynlist\if@tocleft}% - \edef\@currext{\Etoc@currext}% - \@ifundefined{listof\@currext name}% - {\def\list@fname{\listofname~\@currext}}% - {\expandafter\let\expandafter\list@fname - \csname listof\@currext name\endcsname}% - \etoc@Iftocfeature {\@currext}{onecolumn} - {\etoc@Iftocfeature {\@currext}{leveldown} - {} - {\if@twocolumn \aftergroup \twocolumn \onecolumn \fi }} - {}% - \etoc@Iftocfeature {\@currext}{numberline}% - {\def \nonumberline {\numberline {}}}{}% - \expandafter\tocbasic@listhead\expandafter {\list@fname}% - \begingroup \expandafter \expandafter \expandafter - \endgroup \expandafter - \ifx - \csname microtypesetup\endcsname \relax - \else - \etoc@Iftocfeature {\@currext}{noprotrusion}{} - {\microtypesetup {protrusion=false}% - \PackageInfo {tocbasic}% - {character protrusion at \@currext\space deactivated}}% - \fi - \etoc@Iftocfeature{\@currext}{noparskipfake}{}{% - \ifvmode \@tempskipa\lastskip \vskip-\lastskip - \addtolength{\@tempskipa}{\parskip}\vskip\@tempskipa\fi - }% - \setlength {\parskip }{\z@ }% - \setlength {\parindent }{\z@ }% - \setlength {\parfillskip }{\z@ \@plus 1fil}% - \csname tocbasic@@before@hook\endcsname - \csname tb@\@currext @before@hook\endcsname - }% end of before_toc - {% start of after_toc - \providecommand\tocbasic@end@toc@file{}\tocbasic@end@toc@file - \edef\@currext{\Etoc@currext}% - \csname tb@\@currext @after@hook\endcsname - \csname tocbasic@@after@hook\endcsname - }% end of after_toc -} -\let\etocscrbookstyle\etocscrartclstyle -\let\etocscrreprtstyle\etocscrartclstyle -\def\etocclasstocstyle{\etocarticlestyle} -\newcommand*\etocmarkboth[1]{% - \@mkboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}} -\newcommand*\etocmarkbothnouc[1]{\@mkboth{#1}{#1}} -\newcommand\etoctocstyle[3][section]{\etocmulticolstyle[#2]% - {\csname #1\endcsname *{#3}}} -\newcommand\etoctocstylewithmarks[4][section]{\etocmulticolstyle[#2]% - {\csname #1\endcsname *{#3\etocmarkboth{#4}}}} -\newcommand\etoctocstylewithmarksnouc[4][section]{\etocmulticolstyle[#2]% - {\csname #1\endcsname *{#3\etocmarkbothnouc{#4}}}} -\def\Etoc@redefetocstylesforchapters{% - \renewcommand\etoctocstylewithmarks[4][chapter]{% - \etocmulticolstyle[##2]{\csname ##1\endcsname *{##3\etocmarkboth{##4}}}% - } - \renewcommand\etoctocstylewithmarksnouc[4][chapter]{% - \etocmulticolstyle[##2]{\csname ##1\endcsname *{##3\etocmarkbothnouc{##4}}}% - } - \renewcommand\etoctocstyle[3][chapter]{% - \etocmulticolstyle[##2]{\csname ##1\endcsname *{##3}} - } -} -\@ifclassloaded{scrartcl} - {\renewcommand*\etocclasstocstyle{\etocscrartclstyle}}{} -\@ifclassloaded{book} - {\renewcommand*\etocfontone{\normalfont\normalsize} - \renewcommand*\etocclasstocstyle{\etocbookstyle} - \Etoc@redefetocstylesforchapters}{} -\@ifclassloaded{report} - {\renewcommand*\etocfontone{\normalfont\normalsize} - \renewcommand*\etocclasstocstyle{\etocreportstyle} - \Etoc@redefetocstylesforchapters}{} -\@ifclassloaded{scrbook} - {\renewcommand*\etocfontone{\normalfont\normalsize} - \renewcommand*\etocclasstocstyle{\etocscrbookstyle} - \Etoc@redefetocstylesforchapters}{} -\@ifclassloaded{scrreprt} - {\renewcommand*\etocfontone{\normalfont\normalsize} - \renewcommand*\etocclasstocstyle{\etocscrreprtstyle} - \Etoc@redefetocstylesforchapters}{} -\@ifclassloaded{memoir} - {\renewcommand*\etocfontone{\normalfont\normalsize} - \renewcommand*\etocclasstocstyle{\etocmemoirstyle} - \Etoc@redefetocstylesforchapters}{} -\def\etoctocloftstyle {% - \etocsettocstyle{% - \@cfttocstart - \par - \begingroup - \parindent\z@ \parskip\cftparskip - \@nameuse{@cftmake\Etoc@currext title}% - \ifEtoc@localtoc - \etoctocloftlocalperhapsaddtotoc\Etoc@currext - \else - \etocifisstarred {}{\ifEtoc@maintoctotoc\@cftdobibtoc\fi}% - \fi - }% - {% - \endgroup - \@cfttocfinish - }% -} -\def\etoctocloftlocalperhapsaddtotoc#1{% - \etocifisstarred - {}% - {\csname ifEtoc@local#1totoc\endcsname - \ifdefined\c@chapter\def\@tocextra{@section}\else\def\@tocextra{@subsection}\fi - \csname @cftdobib#1\endcsname - \fi - }% -} -\def\etoctocbibindstyle {% - \etocsettocstyle {% - \toc@start - \ifEtoc@localtoc - \@nameuse{etocclasslocal\Etoc@currext maketitle}% - \etocclasslocalperhapsaddtotoc\Etoc@currext - \else - \etoc@tocbibind@dotoctitle - \fi - }% - {\toc@finish}% -} -\def\etoc@tocbibind@dotoctitle {% - \if@bibchapter - \etocifisstarred - {\chapter*{\contentsname}\prw@mkboth{\contentsname} % id. - }% - {\ifEtoc@maintoctotoc - \toc@chapter{\contentsname} %<-space from original - \else - \chapter*{\contentsname}\prw@mkboth{\contentsname} % id. - \fi - }% - \else - \etocifisstarred - {\@nameuse{\@tocextra}*{\contentsname\prw@mkboth{\contentsname}} %<-space - } - {\ifEtoc@maintoctotoc - \toc@section{\@tocextra}{\contentsname} %<-space from original - \else - \@nameuse{\@tocextra}*{\contentsname\prw@mkboth{\contentsname}} % id. - \fi - }% - \fi -}% -\@ifclassloaded{memoir} -{} -{% memoir not loaded - \@ifpackageloaded{tocloft} - {\if@cftnctoc\else - \ifEtoc@keeporiginaltoc - \else - \AtBeginDocument{\let\tableofcontents\etoctableofcontents}% - \fi - \fi } - {\AtBeginDocument - {\@ifpackageloaded{tocloft} - {\if@cftnctoc\else - \PackageWarningNoLine {etoc} - {Package `tocloft' was loaded after `etoc'.\MessageBreak - To prevent it from overwriting \protect\tableofcontents, it will\MessageBreak - be tricked into believing to have been loaded with its\MessageBreak - option `titles'. \space But this will cause the `tocloft'\MessageBreak - customization of the titles of the main list of figures\MessageBreak - and list of tables to not apply either.\MessageBreak - You should load `tocloft' before `etoc'.}% - \AtEndDocument{\PackageWarning{etoc} - {Please load `tocloft' before `etoc'!\@gobbletwo}}% - \fi - \@cftnctoctrue }% - {}% - }% - }% -} -\@ifclassloaded{memoir} -{} -{% memoir not loaded - \AtBeginDocument{% - \@ifpackageloaded{tocloft} - {% - \def\etocclasstocstyle{% - \etoctocloftstyle - \Etoc@classstyletrue - }% - \ifEtoc@etocstyle - \ifEtoc@classstyle - \etocclasstocstyle - \Etoc@etocstyletrue - \fi - \else - \ifEtoc@classstyle - \etocclasstocstyle - \fi - \fi - }% - {% no tocloft - \@ifpackageloaded {tocbibind} - {\if@dotoctoc - \def\etocclasstocstyle{% - \etoctocbibindstyle - \Etoc@classstyletrue - }% - \ifEtoc@etocstyle - \ifEtoc@classstyle - \etocclasstocstyle - \Etoc@etocstyletrue - \fi - \else - \ifEtoc@classstyle - \etocclasstocstyle - \fi - \fi - \ifEtoc@keeporiginaltoc - \else - \let\tableofcontents\etoctableofcontents - \fi - }% - {}% - }% - \@ifpackageloaded{tocbibind} - {% tocbibind, perhaps with tocloft - \if@dotoctoc - \ifEtoc@keeporiginaltoc - \else - \let\tableofcontents\etoctableofcontents - \fi - \etocsetup{maintoctotoc,localtoctotoc}% - \PackageInfo{etoc}{% - Setting (or re-setting) the options `maintoctotoc' and\MessageBreak - `localtoctotoc' to true as tocbibind was detected and\MessageBreak - found to be configured for `TOC to toc'.\MessageBreak - Reported at begin document}% - \fi - \if@dotoclof - \ifEtoc@lof - \etocsetup{localloftotoc}% - \PackageInfo{etoc}{% - Setting (or re-setting) `localloftotoc=true' as the\MessageBreak - package tocbibind was detected and is configured for\MessageBreak - `LOF to toc'. Reported at begin document}% - \fi - \fi - \if@dotoclot - \ifEtoc@lot - \etocsetup{locallottotoc}% - \PackageInfo{etoc}{% - Setting (or re-setting) `locallottotoc=true' as the\MessageBreak - package tocbibind was detected and is configured for\MessageBreak - `LOT to toc'. Reported at begin document}% - \fi - \fi - }% end of tocbibind branch - {}% - }% end of at begin document -}% end of not with memoir branch -\def\Etoc@addtocontents #1#2{% - \addtocontents {toc}{% - \protect\contentsline{#1}{#2}{\thepage}{\ifEtoc@hyperref\@currentHref\fi}% - \ifdefined\protected@file@percent\protected@file@percent\fi - }% -} -\def\Etoc@addcontentsline@ #1#2#3{% - \@namedef{toclevel@#1}{#3}\addcontentsline {toc}{#1}{#2}% -} -\DeclareRobustCommand*{\etoctoccontentsline} - {\@ifstar{\Etoc@addcontentsline@}{\Etoc@addtocontents}} -\def\Etoc@addtocontents@immediately#1#2{% - \begingroup - \let\Etoc@originalwrite\write - \def\write{\immediate\Etoc@originalwrite}% - \Etoc@addtocontents{#1}{#2}% - \endgroup -} -\def\Etoc@addcontentsline@@immediately#1#2#3{% - \begingroup - \let\Etoc@originalwrite\write - \def\write{\immediate\Etoc@originalwrite}% - \Etoc@addcontentsline@{#1}{#2}{#3}% - \endgoroup -} -\DeclareRobustCommand*{\etocimmediatetoccontentsline} - {\@ifstar{\Etoc@addcontentsline@@immediately}{\Etoc@addtocontents@immediately}} -\def\Etoc@storetocdepth {\xdef\Etoc@savedtocdepth{\number\c@tocdepth}} -\def\Etoc@restoretocdepth {\global\c@tocdepth\Etoc@savedtocdepth\relax} -\def\etocobeytoctocdepth {\def\etoc@settocdepth - {\afterassignment\Etoc@@nottoodeep \global\c@tocdepth}} -\def\Etoc@@nottoodeep {\ifnum\Etoc@savedtocdepth<\c@tocdepth - \global\c@tocdepth\Etoc@savedtocdepth\relax\fi } -\def\etocignoretoctocdepth {\let\etoc@settocdepth\@gobble } -\def\etocsettocdepth {\futurelet\Etoc@nexttoken\Etoc@set@tocdepth } -\def\Etoc@set@tocdepth {\ifx\Etoc@nexttoken\bgroup - \expandafter\Etoc@set@tocdepth@ - \else\expandafter\Etoc@set@toctocdepth - \fi } -\def\Etoc@set@tocdepth@ #1{\@ifundefined {Etoc@#1@@} - {\PackageWarning{etoc} - {Unknown sectioning unit #1, \protect\etocsettocdepth\space ignored}} - {\global\c@tocdepth\csname Etoc@#1@@\endcsname}% -} -\def\Etoc@set@toctocdepth #1#{\Etoc@set@toctocdepth@ } -\def\Etoc@set@toctocdepth@ #1{% - \@ifundefined{Etoc@#1@@}% - {\PackageWarning{etoc} - {Unknown sectioning depth #1, \protect\etocsettocdepth.toc ignored}}% - {\addtocontents {toc} - {\protect\etoc@settocdepth\expandafter\protect\csname Etoc@#1@@\endcsname}}% -} -\def\etocimmediatesettocdepth #1#{\Etoc@set@toctocdepth@immediately} -\def\Etoc@set@toctocdepth@immediately #1{% - \@ifundefined{Etoc@#1@@}% - {\PackageWarning{etoc} - {Unknown sectioning depth #1, \protect\etocimmediatesettocdepth.toc ignored}}% - {\begingroup - \let\Etoc@originalwrite\write - \def\write{\immediate\Etoc@originalwrite}% - \addtocontents {toc} - {\protect\etoc@settocdepth\expandafter\protect - \csname Etoc@#1@@\endcsname}% - \endgroup - }% -} -\def\etocdepthtag #1#{\Etoc@depthtag } -\def\Etoc@depthtag #1{\addtocontents {toc}{\protect\etoc@depthtag {#1}}} -\def\etocimmediatedepthtag #1#{\Etoc@depthtag@immediately } -\def\Etoc@depthtag@immediately #1{% - \begingroup - \let\Etoc@originalwrite\write - \def\write{\immediate\Etoc@originalwrite}% - \addtocontents {toc}{\protect\etoc@depthtag {#1}}% - \endgroup -} -\def\etocignoredepthtags {\let\etoc@depthtag \@gobble } -\def\etocobeydepthtags {\let\etoc@depthtag \Etoc@depthtag@ } -\def\Etoc@depthtag@ #1{\@ifundefined{Etoc@depthof@#1}% - {}% ignore in silence if tag has no associated depth - {\afterassignment\Etoc@@nottoodeep - \global\c@tocdepth\csname Etoc@depthof@#1\endcsname}% -} -\def\etocsettagdepth #1#2{\@ifundefined{Etoc@#2@@}% - {\PackageWarning{etoc} - {Unknown sectioning depth #2, \protect\etocsettagdepth\space ignored}}% - {\@namedef{Etoc@depthof@#1}{\@nameuse{Etoc@#2@@}}}% -} -\def\Etoc@tocvsec@err #1{\PackageError {etoc} - {The command \protect#1\space is incompatible with `etoc'} - {Use \protect\etocsettocdepth.toc as replacement}% -}% -\AtBeginDocument {% - \@ifclassloaded{memoir} - {\PackageInfo {etoc} - {Regarding `memoir' class command \protect\settocdepth, consider\MessageBreak - \protect\etocsettocdepth.toc as a drop-in replacement with more\MessageBreak - capabilities (see `etoc' manual). \space - Also, \protect\etocsettocdepth\MessageBreak - and \protect\etocsetnexttocdepth\space should be used in place of\MessageBreak - `memoir' command \protect\maxtocdepth\@gobble}% - }% - {\@ifpackageloaded {tocvsec2}{% - \def\maxtocdepth #1{\Etoc@tocvsec@err \maxtocdepth }% - \def\settocdepth #1{\Etoc@tocvsec@err \settocdepth }% - \def\resettocdepth {\@ifstar {\Etoc@tocvsec@err \resettocdepth }% - {\Etoc@tocvsec@err \resettocdepth }% - }% - \def\save@tocdepth #1#2#3{}% - \let\reset@tocdepth\relax - \let\remax@tocdepth\relax - \let\tableofcontents\etoctableofcontents - \PackageWarningNoLine {etoc} - {Package `tocvsec2' detected and its modification of\MessageBreak - \protect\tableofcontents\space reverted. \space Use - \protect\etocsettocdepth.toc\MessageBreak as a replacement - for `tocvsec2' toc-related commands}% - }% tocvsec2 loaded - {}% tocvsec2 not loaded - }% -}% -\def\invisibletableofcontents {\etocsetnexttocdepth {-3}\tableofcontents }% -\def\invisiblelocaltableofcontents - {\etocsetnexttocdepth {-3}\localtableofcontents }% -\def\etocsetnexttocdepth #1{% - \@ifundefined{Etoc@#1@@} - {\PackageWarning{etoc} - {Unknown sectioning unit #1, \protect\etocsetnextocdepth\space ignored}} - {\Etoc@setnexttocdepth{\csname Etoc@#1@@\endcsname}}% -}% -\def\Etoc@setnexttocdepth#1{% - \def\Etoc@tocdepthset{% - \Etoc@tocdepthreset - \edef\Etoc@tocdepthreset {% - \global\c@tocdepth\the\c@tocdepth\space - \global\let\noexpand\Etoc@tocdepthreset\noexpand\@empty - }% - \global\c@tocdepth#1% - \global\let\Etoc@tocdepthset\@empty - }% -}% -\let\Etoc@tocdepthreset\@empty -\let\Etoc@tocdepthset \@empty -\def\etocsetlocaltop #1#{\Etoc@set@localtop}% -\def\Etoc@set@localtop #1{% - \@ifundefined{Etoc@#1@@}% - {\PackageWarning{etoc} - {Unknown sectioning depth #1, \protect\etocsetlocaltop.toc ignored}}% - {\addtocontents {toc} - {\protect\etoc@setlocaltop\expandafter\protect\csname Etoc@#1@@\endcsname}}% -}% -\def\etocimmediatesetlocaltop #1#{\Etoc@set@localtop@immediately}% -\def\Etoc@set@localtop@immediately #1{% - \@ifundefined{Etoc@#1@@}% - {\PackageWarning{etoc} - {Unknown sectioning depth #1, \protect\etocimmediatesetlocaltop.toc ignored}}% - {\begingroup - \let\Etoc@originalwrite\write - \def\write{\immediate\Etoc@originalwrite}% - \addtocontents {toc} - {\protect\etoc@setlocaltop\expandafter\protect - \csname Etoc@#1@@\endcsname}% - \endgroup - }% -}% -\def\etoc@setlocaltop #1{% - \ifnum#1=\Etoc@maxlevel - \Etoc@skipthisonetrue - \else - \Etoc@skipthisonefalse - \global\let\Etoc@level #1% - \global\let\Etoc@virtualtop #1% - \ifEtoc@localtoc - \ifEtoc@stoptoc - \Etoc@skipthisonetrue - \else - \ifEtoc@notactive - \Etoc@skipthisonetrue - \else - \unless\ifnum\Etoc@level>\etoclocaltop - \Etoc@skipthisonetrue - \global\Etoc@stoptoctrue - \fi - \fi - \fi - \fi - \fi - \let\Etoc@next\@empty - \ifEtoc@skipthisone - \else - \ifnum\Etoc@level>\c@tocdepth - \else - \ifEtoc@standardlines - \else - \let\Etoc@next\Etoc@setlocaltop@doendsandbegin - \fi - \fi - \fi - \Etoc@next -}% -\def\Etoc@setlocaltop@doendsandbegin{% - \Etoc@doendsandbegin - \global\Etoc@skipprefixfalse -} -\addtocontents {toc}{\protect\@ifundefined{etoctocstyle}% - {\let\protect\etoc@startlocaltoc\protect\@gobble - \let\protect\etoc@settocdepth\protect\@gobble - \let\protect\etoc@depthtag\protect\@gobble - \let\protect\etoc@setlocaltop\protect\@gobble}{}}% -\def\etocstandardlines {\Etoc@standardlinestrue} -\def\etoctoclines {\Etoc@standardlinesfalse} -\etocdefaultlines -\etocstandardlines -\def\etocstandarddisplaystyle{% - \PackageWarningNoLine{etoc}{% - \string\etocstandarddisplaystyle \on@line\MessageBreak - is deprecated. \space Please use \string\etocclasstocstyle}% -} -\expandafter\def\expandafter\etocclasstocstyle\expandafter{% - \etocclasstocstyle - \Etoc@classstyletrue -} -\def\etocetoclocaltocstyle{\Etoc@etocstyletrue} -\def\etocusertocstyle{\Etoc@etocstylefalse} -\etocclasstocstyle -\etocetoclocaltocstyle -\etocobeytoctocdepth -\etocobeydepthtags -\let\etocbeforetitlehook \@empty -\let\etocaftertitlehook \@empty -\let\etocaftercontentshook \@empty -\let\etocaftertochook \@empty -\def\etockeeporiginaltableofcontents - {\Etoc@keeporiginaltoctrue\let\tableofcontents\etocoriginaltableofcontents}% -\endinput -%% -%% End of file `etoc.sty'. diff --git a/docs/latex/files.tex b/docs/latex/files.tex deleted file mode 100644 index d112b4e..0000000 --- a/docs/latex/files.tex +++ /dev/null @@ -1,12 +0,0 @@ -\doxysection{File List} -Here is a list of all documented files with brief descriptions\+:\begin{DoxyCompactList} -\item\contentsline{section}{src/\mbox{\hyperlink{main_8c}{main.\+c}} \\*Programme principal pour choisir une interface et lancer l\textquotesingle{}application }{\pageref{main_8c}}{} -\item\contentsline{section}{src/app/core\+\_\+logic/\mbox{\hyperlink{client_8c}{client.\+c}} \\*Fonctions liées à la gestion des clients et de leur panier }{\pageref{client_8c}}{} -\item\contentsline{section}{src/app/core\+\_\+logic/\mbox{\hyperlink{client_8h}{client.\+h}} \\*Fonctions liées à la gestion des clients et de leur panier }{\pageref{client_8h}}{} -\item\contentsline{section}{src/app/core\+\_\+logic/\mbox{\hyperlink{responsable_8c}{responsable.\+c}} \\*Définition des fonctions de \doxylink{responsable_8c}{responsable.\+c} }{\pageref{responsable_8c}}{} -\item\contentsline{section}{src/app/core\+\_\+logic/\mbox{\hyperlink{responsable_8h}{responsable.\+h}} \\*Déclaration des fonctions de \doxylink{responsable_8c}{responsable.\+c} }{\pageref{responsable_8h}}{} -\item\contentsline{section}{src/app/interface/\mbox{\hyperlink{interface__client_8c}{interface\+\_\+client.\+c}} \\*Implémentation des fonctions liées à l\textquotesingle{}interface client }{\pageref{interface__client_8c}}{} -\item\contentsline{section}{src/app/interface/\mbox{\hyperlink{interface__client_8h}{interface\+\_\+client.\+h}} \\*En-\/tête des fonctions liées à l\textquotesingle{}interface client }{\pageref{interface__client_8h}}{} -\item\contentsline{section}{src/app/interface/\mbox{\hyperlink{interface__resp_8c}{interface\+\_\+resp.\+c}} \\*Implémentation des fonctions liées à l\textquotesingle{}interface du responsable }{\pageref{interface__resp_8c}}{} -\item\contentsline{section}{src/app/interface/\mbox{\hyperlink{interface__resp_8h}{interface\+\_\+resp.\+h}} \\*En-\/tête des fonctions liées à l\textquotesingle{}interface du responsable }{\pageref{interface__resp_8h}}{} -\end{DoxyCompactList} diff --git a/docs/latex/interface__client_8c.tex b/docs/latex/interface__client_8c.tex deleted file mode 100644 index 84785bc..0000000 --- a/docs/latex/interface__client_8c.tex +++ /dev/null @@ -1,62 +0,0 @@ -\doxysection{src/app/interface/interface\+\_\+client.c File Reference} -\hypertarget{interface__client_8c}{}\label{interface__client_8c}\index{src/app/interface/interface\_client.c@{src/app/interface/interface\_client.c}} - - -Implémentation des fonctions liées à l\textquotesingle{}interface client. - - -{\ttfamily \#include "{}interface\+\_\+client.\+h"{}}\newline -{\ttfamily \#include "{}app/core\+\_\+logic/client.\+h"{}}\newline -{\ttfamily \#include "{}app/core\+\_\+logic/responsable.\+h"{}}\newline -\doxysubsubsection*{Macros} -\begin{DoxyCompactItemize} -\item -\Hypertarget{interface__client_8c_ad6a5b5050a3ed6cffbb52fe15c39e587}\label{interface__client_8c_ad6a5b5050a3ed6cffbb52fe15c39e587} -\#define {\bfseries MAX\+\_\+\+ARTICLES}~100 -\item -\Hypertarget{interface__client_8c_a0a8f91f93d75a07f0ae45077db45b3eb}\label{interface__client_8c_a0a8f91f93d75a07f0ae45077db45b3eb} -\#define {\bfseries MAX\+\_\+\+CLIENTS}~100 -\end{DoxyCompactItemize} -\doxysubsubsection*{Functions} -\begin{DoxyCompactItemize} -\item -\Hypertarget{interface__client_8c_a98012af1d373da58fa7dc041f97216bc}\label{interface__client_8c_a98012af1d373da58fa7dc041f97216bc} -void {\bfseries affiche\+\_\+client} () -\begin{DoxyCompactList}\small\item\em Affiche le menu principal de l\textquotesingle{}interface client. \end{DoxyCompactList}\item -void \mbox{\hyperlink{interface__client_8c_a49de18c6560633af132a56085d28a8ba}{menu\+\_\+client}} (int \texorpdfstring{$\ast$}{*}choix) -\begin{DoxyCompactList}\small\item\em Laisse l\textquotesingle{}utilisateur choisir une option du menu. \end{DoxyCompactList}\item -void \mbox{\hyperlink{interface__client_8c_aace0a1bcc32fda795f57fa76de7ec276}{global\+\_\+client}} () -\begin{DoxyCompactList}\small\item\em Fonction principale de l\textquotesingle{}interface client. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\doxysubsection{Detailed Description} -Implémentation des fonctions liées à l\textquotesingle{}interface client. - - - -\doxysubsection{Function Documentation} -\Hypertarget{interface__client_8c_aace0a1bcc32fda795f57fa76de7ec276}\label{interface__client_8c_aace0a1bcc32fda795f57fa76de7ec276} -\index{interface\_client.c@{interface\_client.c}!global\_client@{global\_client}} -\index{global\_client@{global\_client}!interface\_client.c@{interface\_client.c}} -\doxysubsubsection{\texorpdfstring{global\_client()}{global\_client()}} -{\footnotesize\ttfamily void global\+\_\+client (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} - - - -Fonction principale de l\textquotesingle{}interface client. - -Cette fonction permet aux clients d\textquotesingle{}utiliser l\textquotesingle{}application pour gérer leur panier et effectuer des opérations telles que l\textquotesingle{}ajout, la suppression ou la modification d\textquotesingle{}articles dans le panier. \Hypertarget{interface__client_8c_a49de18c6560633af132a56085d28a8ba}\label{interface__client_8c_a49de18c6560633af132a56085d28a8ba} -\index{interface\_client.c@{interface\_client.c}!menu\_client@{menu\_client}} -\index{menu\_client@{menu\_client}!interface\_client.c@{interface\_client.c}} -\doxysubsubsection{\texorpdfstring{menu\_client()}{menu\_client()}} -{\footnotesize\ttfamily void menu\+\_\+client (\begin{DoxyParamCaption}\item[{int \texorpdfstring{$\ast$}{*}}]{choix }\end{DoxyParamCaption})} - - - -Laisse l\textquotesingle{}utilisateur choisir une option du menu. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\texttt{ in,out}} & {\em choix} & -\/ L\textquotesingle{}option choisie par l\textquotesingle{}utilisateur. \\ -\hline -\end{DoxyParams} diff --git a/docs/latex/interface__client_8h.tex b/docs/latex/interface__client_8h.tex deleted file mode 100644 index 6cb7e35..0000000 --- a/docs/latex/interface__client_8h.tex +++ /dev/null @@ -1,51 +0,0 @@ -\doxysection{src/app/interface/interface\+\_\+client.h File Reference} -\hypertarget{interface__client_8h}{}\label{interface__client_8h}\index{src/app/interface/interface\_client.h@{src/app/interface/interface\_client.h}} - - -En-\/tête des fonctions liées à l\textquotesingle{}interface client. - - -{\ttfamily \#include $<$stdio.\+h$>$}\newline -\doxysubsubsection*{Functions} -\begin{DoxyCompactItemize} -\item -\Hypertarget{interface__client_8h_a98012af1d373da58fa7dc041f97216bc}\label{interface__client_8h_a98012af1d373da58fa7dc041f97216bc} -void {\bfseries affiche\+\_\+client} () -\begin{DoxyCompactList}\small\item\em Affiche le menu principal de l\textquotesingle{}interface client. \end{DoxyCompactList}\item -void \mbox{\hyperlink{interface__client_8h_a49de18c6560633af132a56085d28a8ba}{menu\+\_\+client}} (int \texorpdfstring{$\ast$}{*}choix) -\begin{DoxyCompactList}\small\item\em Laisse l\textquotesingle{}utilisateur choisir une option du menu. \end{DoxyCompactList}\item -void \mbox{\hyperlink{interface__client_8h_aace0a1bcc32fda795f57fa76de7ec276}{global\+\_\+client}} () -\begin{DoxyCompactList}\small\item\em Fonction principale de l\textquotesingle{}interface client. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\doxysubsection{Detailed Description} -En-\/tête des fonctions liées à l\textquotesingle{}interface client. - - - -\doxysubsection{Function Documentation} -\Hypertarget{interface__client_8h_aace0a1bcc32fda795f57fa76de7ec276}\label{interface__client_8h_aace0a1bcc32fda795f57fa76de7ec276} -\index{interface\_client.h@{interface\_client.h}!global\_client@{global\_client}} -\index{global\_client@{global\_client}!interface\_client.h@{interface\_client.h}} -\doxysubsubsection{\texorpdfstring{global\_client()}{global\_client()}} -{\footnotesize\ttfamily void global\+\_\+client (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} - - - -Fonction principale de l\textquotesingle{}interface client. - -Cette fonction permet aux clients d\textquotesingle{}utiliser l\textquotesingle{}application pour gérer leur panier et effectuer des opérations telles que l\textquotesingle{}ajout, la suppression ou la modification d\textquotesingle{}articles dans le panier. \Hypertarget{interface__client_8h_a49de18c6560633af132a56085d28a8ba}\label{interface__client_8h_a49de18c6560633af132a56085d28a8ba} -\index{interface\_client.h@{interface\_client.h}!menu\_client@{menu\_client}} -\index{menu\_client@{menu\_client}!interface\_client.h@{interface\_client.h}} -\doxysubsubsection{\texorpdfstring{menu\_client()}{menu\_client()}} -{\footnotesize\ttfamily void menu\+\_\+client (\begin{DoxyParamCaption}\item[{int \texorpdfstring{$\ast$}{*}}]{choix }\end{DoxyParamCaption})} - - - -Laisse l\textquotesingle{}utilisateur choisir une option du menu. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\texttt{ in,out}} & {\em choix} & -\/ L\textquotesingle{}option choisie par l\textquotesingle{}utilisateur. \\ -\hline -\end{DoxyParams} diff --git a/docs/latex/interface__client_8h_source.tex b/docs/latex/interface__client_8h_source.tex deleted file mode 100644 index d0f6163..0000000 --- a/docs/latex/interface__client_8h_source.tex +++ /dev/null @@ -1,14 +0,0 @@ -\doxysection{interface\+\_\+client.\+h} -\hypertarget{interface__client_8h_source}{}\label{interface__client_8h_source}\index{src/app/interface/interface\_client.h@{src/app/interface/interface\_client.h}} -\mbox{\hyperlink{interface__client_8h}{Go to the documentation of this file.}} -\begin{DoxyCode}{0} -\DoxyCodeLine{00001\ } -\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#include\ }} -\DoxyCodeLine{00007\ } -\DoxyCodeLine{00011\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{interface__client_8h_a98012af1d373da58fa7dc041f97216bc}{affiche\_client}}();} -\DoxyCodeLine{00012\ } -\DoxyCodeLine{00018\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{interface__client_8h_a49de18c6560633af132a56085d28a8ba}{menu\_client}}(\textcolor{keywordtype}{int}\ *choix);} -\DoxyCodeLine{00019\ } -\DoxyCodeLine{00027\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{interface__client_8h_aace0a1bcc32fda795f57fa76de7ec276}{global\_client}}();} - -\end{DoxyCode} diff --git a/docs/latex/interface__resp_8c.tex b/docs/latex/interface__resp_8c.tex deleted file mode 100644 index 83a8fea..0000000 --- a/docs/latex/interface__resp_8c.tex +++ /dev/null @@ -1,258 +0,0 @@ -\doxysection{src/app/interface/interface\+\_\+resp.c File Reference} -\hypertarget{interface__resp_8c}{}\label{interface__resp_8c}\index{src/app/interface/interface\_resp.c@{src/app/interface/interface\_resp.c}} - - -Implémentation des fonctions liées à l\textquotesingle{}interface du responsable. - - -{\ttfamily \#include $<$stdio.\+h$>$}\newline -{\ttfamily \#include $<$stdlib.\+h$>$}\newline -{\ttfamily \#include "{}interface\+\_\+resp.\+h"{}}\newline -{\ttfamily \#include "{}app/core\+\_\+logic/responsable.\+h"{}}\newline -{\ttfamily \#include "{}app/core\+\_\+logic/client.\+h"{}}\newline -\doxysubsubsection*{Macros} -\begin{DoxyCompactItemize} -\item -\Hypertarget{interface__resp_8c_a0a8f91f93d75a07f0ae45077db45b3eb}\label{interface__resp_8c_a0a8f91f93d75a07f0ae45077db45b3eb} -\#define {\bfseries MAX\+\_\+\+CLIENTS}~100 -\item -\Hypertarget{interface__resp_8c_ad6a5b5050a3ed6cffbb52fe15c39e587}\label{interface__resp_8c_ad6a5b5050a3ed6cffbb52fe15c39e587} -\#define {\bfseries MAX\+\_\+\+ARTICLES}~100 -\end{DoxyCompactItemize} -\doxysubsubsection*{Functions} -\begin{DoxyCompactItemize} -\item -\Hypertarget{interface__resp_8c_abb1a25ae1531e0857856843b41805528}\label{interface__resp_8c_abb1a25ae1531e0857856843b41805528} -void {\bfseries affiche\+\_\+resp} (void) -\begin{DoxyCompactList}\small\item\em Affiche le menu principal de l\textquotesingle{}interface du responsable. \end{DoxyCompactList}\item -void \mbox{\hyperlink{interface__resp_8c_af518981f5e0d4575a6b7bae3f22e9985}{affich\+Articles}} (int t\+Ref\mbox{[}$\,$\mbox{]}, float t\+Poids\mbox{[}$\,$\mbox{]}, float t\+Vol\mbox{[}$\,$\mbox{]}, float t\+Prix\mbox{[}$\,$\mbox{]}, int t\+Logique) -\begin{DoxyCompactList}\small\item\em Affiche la liste des articles. \end{DoxyCompactList}\item -void \mbox{\hyperlink{interface__resp_8c_a5e9ce25cbd73f9d4732b84eb5ab59d13}{affich\+Un\+Article}} (int t\+Ref\mbox{[}$\,$\mbox{]}, float t\+Poids\mbox{[}$\,$\mbox{]}, float t\+Vol\mbox{[}$\,$\mbox{]}, float t\+Prix\mbox{[}$\,$\mbox{]}, int t\+Logique) -\begin{DoxyCompactList}\small\item\em Affiche un article spécifique. \end{DoxyCompactList}\item -void \mbox{\hyperlink{interface__resp_8c_aa29059c1470e490b32fdf483b5570c88}{affich\+Un\+Client}} (int t\+Num\+Client\mbox{[}$\,$\mbox{]}, float t\+Cagnotte\mbox{[}$\,$\mbox{]}, int t\+Sus\mbox{[}$\,$\mbox{]}, int t\+Logique) -\begin{DoxyCompactList}\small\item\em Affiche un client spécifique. \end{DoxyCompactList}\item -void \mbox{\hyperlink{interface__resp_8c_a7c0531c63ea490d0b674960483e9ba27}{affich\+Clients}} (int t\+Num\+Client\mbox{[}$\,$\mbox{]}, float t\+Cagnotte\mbox{[}$\,$\mbox{]}, int t\+Sus\mbox{[}$\,$\mbox{]}, int t\+Logique) -\begin{DoxyCompactList}\small\item\em Affiche la liste des clients. \end{DoxyCompactList}\item -void \mbox{\hyperlink{interface__resp_8c_a9e01225a96daa69eb466e03fd1108c0a}{affich\+Ajout\+Article}} (int \texorpdfstring{$\ast$}{*}ref, float \texorpdfstring{$\ast$}{*}poids, float \texorpdfstring{$\ast$}{*}volume, float \texorpdfstring{$\ast$}{*}prix) -\begin{DoxyCompactList}\small\item\em Affiche les informations pour ajouter un nouvel article. \end{DoxyCompactList}\item -void \mbox{\hyperlink{interface__resp_8c_a47ca5882a75fd3b919ba02b028582473}{affich\+Supprimer\+Article}} (int \texorpdfstring{$\ast$}{*}ref) -\begin{DoxyCompactList}\small\item\em Affiche les informations pour supprimer un article. \end{DoxyCompactList}\item -void \mbox{\hyperlink{interface__resp_8c_af075e50ffce501b901ff31b1fb73262f}{affich\+Modifier\+Article}} (int \texorpdfstring{$\ast$}{*}ref, float \texorpdfstring{$\ast$}{*}poids, float \texorpdfstring{$\ast$}{*}volume, float \texorpdfstring{$\ast$}{*}prix) -\begin{DoxyCompactList}\small\item\em Affiche les informations pour modifier un article. \end{DoxyCompactList}\item -void \mbox{\hyperlink{interface__resp_8c_a964d2d2bc5b9aa544e6187ed6cbc961c}{affich\+Ajout\+Client}} (int t\+Num\+Client\mbox{[}$\,$\mbox{]}, int t\+Logique, int \texorpdfstring{$\ast$}{*}numC) -\begin{DoxyCompactList}\small\item\em Affiche les informations pour ajouter un nouveau client. \end{DoxyCompactList}\item -void \mbox{\hyperlink{interface__resp_8c_a1f14dc8f23be75e1a5c0e7ce0c77f597}{menu\+\_\+resp}} (int \texorpdfstring{$\ast$}{*}choix) -\begin{DoxyCompactList}\small\item\em Fonction de menu pour le responsable. \end{DoxyCompactList}\item -void \mbox{\hyperlink{interface__resp_8c_a421ebe0511c91fb6431aed873aa01e35}{global\+\_\+resp}} () -\begin{DoxyCompactList}\small\item\em Fonction principale de l\textquotesingle{}interface du responsable. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\doxysubsection{Detailed Description} -Implémentation des fonctions liées à l\textquotesingle{}interface du responsable. - - - -\doxysubsection{Function Documentation} -\Hypertarget{interface__resp_8c_a9e01225a96daa69eb466e03fd1108c0a}\label{interface__resp_8c_a9e01225a96daa69eb466e03fd1108c0a} -\index{interface\_resp.c@{interface\_resp.c}!affichAjoutArticle@{affichAjoutArticle}} -\index{affichAjoutArticle@{affichAjoutArticle}!interface\_resp.c@{interface\_resp.c}} -\doxysubsubsection{\texorpdfstring{affichAjoutArticle()}{affichAjoutArticle()}} -{\footnotesize\ttfamily void affich\+Ajout\+Article (\begin{DoxyParamCaption}\item[{int \texorpdfstring{$\ast$}{*}}]{ref, }\item[{float \texorpdfstring{$\ast$}{*}}]{poids, }\item[{float \texorpdfstring{$\ast$}{*}}]{volume, }\item[{float \texorpdfstring{$\ast$}{*}}]{prix }\end{DoxyParamCaption})} - - - -Affiche les informations pour ajouter un nouvel article. - -Affiche les informations nécessaires pour ajouter un nouvel article. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\texttt{ in,out}} & {\em ref} & -\/ Référence du nouvel article. \\ -\hline -\mbox{\texttt{ in,out}} & {\em poids} & -\/ Poids du nouvel article. \\ -\hline -\mbox{\texttt{ in,out}} & {\em volume} & -\/ Volume du nouvel article. \\ -\hline -\mbox{\texttt{ in,out}} & {\em prix} & -\/ Prix du nouvel article. \\ -\hline -\end{DoxyParams} -\Hypertarget{interface__resp_8c_a964d2d2bc5b9aa544e6187ed6cbc961c}\label{interface__resp_8c_a964d2d2bc5b9aa544e6187ed6cbc961c} -\index{interface\_resp.c@{interface\_resp.c}!affichAjoutClient@{affichAjoutClient}} -\index{affichAjoutClient@{affichAjoutClient}!interface\_resp.c@{interface\_resp.c}} -\doxysubsubsection{\texorpdfstring{affichAjoutClient()}{affichAjoutClient()}} -{\footnotesize\ttfamily void affich\+Ajout\+Client (\begin{DoxyParamCaption}\item[{int}]{t\+Num\+Client\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Logique, }\item[{int \texorpdfstring{$\ast$}{*}}]{numC }\end{DoxyParamCaption})} - - - -Affiche les informations pour ajouter un nouveau client. - -Affiche les informations nécessaires pour ajouter un nouveau client. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\texttt{ in}} & {\em t\+Num\+Client} & -\/ Tableau des numéros de client. \\ -\hline -\mbox{\texttt{ in}} & {\em t\+Logique} & -\/ Taille logique des tableaux. \\ -\hline -\mbox{\texttt{ in,out}} & {\em numC} & -\/ Numéro du nouveau client. \\ -\hline -\end{DoxyParams} -\Hypertarget{interface__resp_8c_af518981f5e0d4575a6b7bae3f22e9985}\label{interface__resp_8c_af518981f5e0d4575a6b7bae3f22e9985} -\index{interface\_resp.c@{interface\_resp.c}!affichArticles@{affichArticles}} -\index{affichArticles@{affichArticles}!interface\_resp.c@{interface\_resp.c}} -\doxysubsubsection{\texorpdfstring{affichArticles()}{affichArticles()}} -{\footnotesize\ttfamily void affich\+Articles (\begin{DoxyParamCaption}\item[{int}]{t\+Ref\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Poids\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Vol\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Prix\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Logique }\end{DoxyParamCaption})} - - - -Affiche la liste des articles. - - -\begin{DoxyParams}{Parameters} -{\em t\+Ref} & -\/ Tableau des références d\textquotesingle{}articles. \\ -\hline -{\em t\+Poids} & -\/ Tableau des poids d\textquotesingle{}articles. \\ -\hline -{\em t\+Vol} & -\/ Tableau des volumes d\textquotesingle{}articles. \\ -\hline -{\em t\+Prix} & -\/ Tableau des prix d\textquotesingle{}articles. \\ -\hline -{\em t\+Logique} & -\/ Taille logique des tableaux. \\ -\hline -\end{DoxyParams} -\Hypertarget{interface__resp_8c_a7c0531c63ea490d0b674960483e9ba27}\label{interface__resp_8c_a7c0531c63ea490d0b674960483e9ba27} -\index{interface\_resp.c@{interface\_resp.c}!affichClients@{affichClients}} -\index{affichClients@{affichClients}!interface\_resp.c@{interface\_resp.c}} -\doxysubsubsection{\texorpdfstring{affichClients()}{affichClients()}} -{\footnotesize\ttfamily void affich\+Clients (\begin{DoxyParamCaption}\item[{int}]{t\+Num\+Client\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Cagnotte\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Sus\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Logique }\end{DoxyParamCaption})} - - - -Affiche la liste des clients. - - -\begin{DoxyParams}{Parameters} -{\em t\+Num\+Client} & -\/ Tableau des numéros de client. \\ -\hline -{\em t\+Cagnotte} & -\/ Tableau des cagnottes des clients. \\ -\hline -{\em t\+Sus} & -\/ Tableau d\textquotesingle{}états des clients. \\ -\hline -{\em t\+Logique} & -\/ Taille logique des tableaux. \\ -\hline -\end{DoxyParams} -\Hypertarget{interface__resp_8c_af075e50ffce501b901ff31b1fb73262f}\label{interface__resp_8c_af075e50ffce501b901ff31b1fb73262f} -\index{interface\_resp.c@{interface\_resp.c}!affichModifierArticle@{affichModifierArticle}} -\index{affichModifierArticle@{affichModifierArticle}!interface\_resp.c@{interface\_resp.c}} -\doxysubsubsection{\texorpdfstring{affichModifierArticle()}{affichModifierArticle()}} -{\footnotesize\ttfamily void affich\+Modifier\+Article (\begin{DoxyParamCaption}\item[{int \texorpdfstring{$\ast$}{*}}]{ref, }\item[{float \texorpdfstring{$\ast$}{*}}]{poids, }\item[{float \texorpdfstring{$\ast$}{*}}]{volume, }\item[{float \texorpdfstring{$\ast$}{*}}]{prix }\end{DoxyParamCaption})} - - - -Affiche les informations pour modifier un article. - -Affiche les informations nécessaires pour modifier un article. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\texttt{ in,out}} & {\em ref} & -\/ Référence de l\textquotesingle{}article à modifier. \\ -\hline -\mbox{\texttt{ in,out}} & {\em poids} & -\/ Nouveau poids de l\textquotesingle{}article. \\ -\hline -\mbox{\texttt{ in,out}} & {\em volume} & -\/ Nouveau volume de l\textquotesingle{}article. \\ -\hline -\mbox{\texttt{ in,out}} & {\em prix} & -\/ Nouveau prix de l\textquotesingle{}article. \\ -\hline -\end{DoxyParams} -\Hypertarget{interface__resp_8c_a47ca5882a75fd3b919ba02b028582473}\label{interface__resp_8c_a47ca5882a75fd3b919ba02b028582473} -\index{interface\_resp.c@{interface\_resp.c}!affichSupprimerArticle@{affichSupprimerArticle}} -\index{affichSupprimerArticle@{affichSupprimerArticle}!interface\_resp.c@{interface\_resp.c}} -\doxysubsubsection{\texorpdfstring{affichSupprimerArticle()}{affichSupprimerArticle()}} -{\footnotesize\ttfamily void affich\+Supprimer\+Article (\begin{DoxyParamCaption}\item[{int \texorpdfstring{$\ast$}{*}}]{ref }\end{DoxyParamCaption})} - - - -Affiche les informations pour supprimer un article. - -Affiche les informations nécessaires pour supprimer un article. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\texttt{ in,out}} & {\em ref} & -\/ Référence de l\textquotesingle{}article à supprimer. \\ -\hline -\end{DoxyParams} -\Hypertarget{interface__resp_8c_a5e9ce25cbd73f9d4732b84eb5ab59d13}\label{interface__resp_8c_a5e9ce25cbd73f9d4732b84eb5ab59d13} -\index{interface\_resp.c@{interface\_resp.c}!affichUnArticle@{affichUnArticle}} -\index{affichUnArticle@{affichUnArticle}!interface\_resp.c@{interface\_resp.c}} -\doxysubsubsection{\texorpdfstring{affichUnArticle()}{affichUnArticle()}} -{\footnotesize\ttfamily void affich\+Un\+Article (\begin{DoxyParamCaption}\item[{int}]{t\+Ref\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Poids\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Vol\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Prix\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Logique }\end{DoxyParamCaption})} - - - -Affiche un article spécifique. - -Affiche les informations d\textquotesingle{}un article spécifique. - - -\begin{DoxyParams}{Parameters} -{\em t\+Ref} & -\/ Tableau des références d\textquotesingle{}articles. \\ -\hline -{\em t\+Poids} & -\/ Tableau des poids d\textquotesingle{}articles. \\ -\hline -{\em t\+Vol} & -\/ Tableau des volumes d\textquotesingle{}articles. \\ -\hline -{\em t\+Prix} & -\/ Tableau des prix d\textquotesingle{}articles. \\ -\hline -{\em t\+Logique} & -\/ Taille logique des tableaux. \\ -\hline -\end{DoxyParams} -\Hypertarget{interface__resp_8c_aa29059c1470e490b32fdf483b5570c88}\label{interface__resp_8c_aa29059c1470e490b32fdf483b5570c88} -\index{interface\_resp.c@{interface\_resp.c}!affichUnClient@{affichUnClient}} -\index{affichUnClient@{affichUnClient}!interface\_resp.c@{interface\_resp.c}} -\doxysubsubsection{\texorpdfstring{affichUnClient()}{affichUnClient()}} -{\footnotesize\ttfamily void affich\+Un\+Client (\begin{DoxyParamCaption}\item[{int}]{t\+Num\+Client\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Cagnotte\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Sus\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Logique }\end{DoxyParamCaption})} - - - -Affiche un client spécifique. - -Affiche les informations d\textquotesingle{}un client spécifique. - - -\begin{DoxyParams}{Parameters} -{\em t\+Num\+Client} & -\/ Tableau des numéros de client. \\ -\hline -{\em t\+Cagnotte} & -\/ Tableau des cagnottes des clients. \\ -\hline -{\em t\+Sus} & -\/ Tableau d\textquotesingle{}états des clients. \\ -\hline -{\em t\+Logique} & -\/ Taille logique des tableaux. \\ -\hline -\end{DoxyParams} -\Hypertarget{interface__resp_8c_a421ebe0511c91fb6431aed873aa01e35}\label{interface__resp_8c_a421ebe0511c91fb6431aed873aa01e35} -\index{interface\_resp.c@{interface\_resp.c}!global\_resp@{global\_resp}} -\index{global\_resp@{global\_resp}!interface\_resp.c@{interface\_resp.c}} -\doxysubsubsection{\texorpdfstring{global\_resp()}{global\_resp()}} -{\footnotesize\ttfamily void global\+\_\+resp (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} - - - -Fonction principale de l\textquotesingle{}interface du responsable. - -Cette fonction permet au responsable d\textquotesingle{}effectuer diverses actions telles que la gestion des articles et des clients. \Hypertarget{interface__resp_8c_a1f14dc8f23be75e1a5c0e7ce0c77f597}\label{interface__resp_8c_a1f14dc8f23be75e1a5c0e7ce0c77f597} -\index{interface\_resp.c@{interface\_resp.c}!menu\_resp@{menu\_resp}} -\index{menu\_resp@{menu\_resp}!interface\_resp.c@{interface\_resp.c}} -\doxysubsubsection{\texorpdfstring{menu\_resp()}{menu\_resp()}} -{\footnotesize\ttfamily void menu\+\_\+resp (\begin{DoxyParamCaption}\item[{int \texorpdfstring{$\ast$}{*}}]{choix }\end{DoxyParamCaption})} - - - -Fonction de menu pour le responsable. - -Laisse le responsable choisir une option du menu. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\texttt{ in,out}} & {\em choix} & -\/ L\textquotesingle{}option choisie par le responsable. \\ -\hline -\end{DoxyParams} diff --git a/docs/latex/interface__resp_8h.tex b/docs/latex/interface__resp_8h.tex deleted file mode 100644 index 6dccbb7..0000000 --- a/docs/latex/interface__resp_8h.tex +++ /dev/null @@ -1,330 +0,0 @@ -\doxysection{src/app/interface/interface\+\_\+resp.h File Reference} -\hypertarget{interface__resp_8h}{}\label{interface__resp_8h}\index{src/app/interface/interface\_resp.h@{src/app/interface/interface\_resp.h}} - - -En-\/tête des fonctions liées à l\textquotesingle{}interface du responsable. - - -\doxysubsubsection*{Functions} -\begin{DoxyCompactItemize} -\item -void \mbox{\hyperlink{interface__resp_8h_af518981f5e0d4575a6b7bae3f22e9985}{affich\+Articles}} (int t\+Ref\mbox{[}$\,$\mbox{]}, float t\+Poids\mbox{[}$\,$\mbox{]}, float t\+Vol\mbox{[}$\,$\mbox{]}, float t\+Prix\mbox{[}$\,$\mbox{]}, int t\+Logique) -\begin{DoxyCompactList}\small\item\em Affiche la liste des articles. \end{DoxyCompactList}\item -void \mbox{\hyperlink{interface__resp_8h_a5e9ce25cbd73f9d4732b84eb5ab59d13}{affich\+Un\+Article}} (int t\+Ref\mbox{[}$\,$\mbox{]}, float t\+Poids\mbox{[}$\,$\mbox{]}, float t\+Vol\mbox{[}$\,$\mbox{]}, float t\+Prix\mbox{[}$\,$\mbox{]}, int t\+Logique) -\begin{DoxyCompactList}\small\item\em Affiche les informations d\textquotesingle{}un article spécifique. \end{DoxyCompactList}\item -void \mbox{\hyperlink{interface__resp_8h_aa29059c1470e490b32fdf483b5570c88}{affich\+Un\+Client}} (int t\+Num\+Client\mbox{[}$\,$\mbox{]}, float t\+Cagnotte\mbox{[}$\,$\mbox{]}, int t\+Sus\mbox{[}$\,$\mbox{]}, int t\+Logique) -\begin{DoxyCompactList}\small\item\em Affiche les informations d\textquotesingle{}un client spécifique. \end{DoxyCompactList}\item -void \mbox{\hyperlink{interface__resp_8h_a7c0531c63ea490d0b674960483e9ba27}{affich\+Clients}} (int t\+Num\+Client\mbox{[}$\,$\mbox{]}, float t\+Cagnotte\mbox{[}$\,$\mbox{]}, int t\+Sus\mbox{[}$\,$\mbox{]}, int t\+Logique) -\begin{DoxyCompactList}\small\item\em Affiche la liste des clients. \end{DoxyCompactList}\item -void \mbox{\hyperlink{interface__resp_8h_a9e01225a96daa69eb466e03fd1108c0a}{affich\+Ajout\+Article}} (int \texorpdfstring{$\ast$}{*}ref, float \texorpdfstring{$\ast$}{*}poids, float \texorpdfstring{$\ast$}{*}volume, float \texorpdfstring{$\ast$}{*}prix) -\begin{DoxyCompactList}\small\item\em Affiche les informations nécessaires pour ajouter un nouvel article. \end{DoxyCompactList}\item -void \mbox{\hyperlink{interface__resp_8h_a47ca5882a75fd3b919ba02b028582473}{affich\+Supprimer\+Article}} (int \texorpdfstring{$\ast$}{*}ref) -\begin{DoxyCompactList}\small\item\em Affiche les informations nécessaires pour supprimer un article. \end{DoxyCompactList}\item -void \mbox{\hyperlink{interface__resp_8h_af075e50ffce501b901ff31b1fb73262f}{affich\+Modifier\+Article}} (int \texorpdfstring{$\ast$}{*}ref, float \texorpdfstring{$\ast$}{*}poids, float \texorpdfstring{$\ast$}{*}volume, float \texorpdfstring{$\ast$}{*}prix) -\begin{DoxyCompactList}\small\item\em Affiche les informations nécessaires pour modifier un article. \end{DoxyCompactList}\item -\Hypertarget{interface__resp_8h_a80d8c0f53cf692db395b729a229f2df8}\label{interface__resp_8h_a80d8c0f53cf692db395b729a229f2df8} -void {\bfseries problem\+Recherche\+Article} () -\begin{DoxyCompactList}\small\item\em Affiche un message en cas de problème lors de la recherche d\textquotesingle{}un article. \end{DoxyCompactList}\item -void \mbox{\hyperlink{interface__resp_8h_a964d2d2bc5b9aa544e6187ed6cbc961c}{affich\+Ajout\+Client}} (int t\+Num\+Client\mbox{[}$\,$\mbox{]}, int t\+Logique, int \texorpdfstring{$\ast$}{*}numC) -\begin{DoxyCompactList}\small\item\em Affiche les informations nécessaires pour ajouter un nouveau client. \end{DoxyCompactList}\item -void \mbox{\hyperlink{interface__resp_8h_a1f14dc8f23be75e1a5c0e7ce0c77f597}{menu\+\_\+resp}} (int \texorpdfstring{$\ast$}{*}choix) -\begin{DoxyCompactList}\small\item\em Laisse le responsable choisir une option du menu. \end{DoxyCompactList}\item -void \mbox{\hyperlink{interface__resp_8h_a421ebe0511c91fb6431aed873aa01e35}{global\+\_\+resp}} () -\begin{DoxyCompactList}\small\item\em Fonction principale de l\textquotesingle{}interface du responsable. \end{DoxyCompactList}\item -\Hypertarget{interface__resp_8h_a333cea7df6b2de2a16440aaf53d63af4}\label{interface__resp_8h_a333cea7df6b2de2a16440aaf53d63af4} -void {\bfseries affiche\+\_\+resp} () -\begin{DoxyCompactList}\small\item\em Affiche le menu principal de l\textquotesingle{}interface du responsable. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\doxysubsection{Detailed Description} -En-\/tête des fonctions liées à l\textquotesingle{}interface du responsable. - - - -\doxysubsection{Function Documentation} -\Hypertarget{interface__resp_8h_a9e01225a96daa69eb466e03fd1108c0a}\label{interface__resp_8h_a9e01225a96daa69eb466e03fd1108c0a} -\index{interface\_resp.h@{interface\_resp.h}!affichAjoutArticle@{affichAjoutArticle}} -\index{affichAjoutArticle@{affichAjoutArticle}!interface\_resp.h@{interface\_resp.h}} -\doxysubsubsection{\texorpdfstring{affichAjoutArticle()}{affichAjoutArticle()}} -{\footnotesize\ttfamily void affich\+Ajout\+Article (\begin{DoxyParamCaption}\item[{int \texorpdfstring{$\ast$}{*}}]{ref, }\item[{float \texorpdfstring{$\ast$}{*}}]{poids, }\item[{float \texorpdfstring{$\ast$}{*}}]{volume, }\item[{float \texorpdfstring{$\ast$}{*}}]{prix }\end{DoxyParamCaption})} - - - -Affiche les informations nécessaires pour ajouter un nouvel article. - - -\begin{DoxyParams}{Parameters} -{\em ref} & -\/ Référence du nouvel article. \\ -\hline -{\em poids} & -\/ Poids du nouvel article. \\ -\hline -{\em volume} & -\/ Volume du nouvel article. \\ -\hline -{\em prix} & -\/ Prix du nouvel article.\\ -\hline -\end{DoxyParams} -Affiche les informations nécessaires pour ajouter un nouvel article. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\texttt{ in,out}} & {\em ref} & -\/ Référence du nouvel article. \\ -\hline -\mbox{\texttt{ in,out}} & {\em poids} & -\/ Poids du nouvel article. \\ -\hline -\mbox{\texttt{ in,out}} & {\em volume} & -\/ Volume du nouvel article. \\ -\hline -\mbox{\texttt{ in,out}} & {\em prix} & -\/ Prix du nouvel article. \\ -\hline -\end{DoxyParams} -\Hypertarget{interface__resp_8h_a964d2d2bc5b9aa544e6187ed6cbc961c}\label{interface__resp_8h_a964d2d2bc5b9aa544e6187ed6cbc961c} -\index{interface\_resp.h@{interface\_resp.h}!affichAjoutClient@{affichAjoutClient}} -\index{affichAjoutClient@{affichAjoutClient}!interface\_resp.h@{interface\_resp.h}} -\doxysubsubsection{\texorpdfstring{affichAjoutClient()}{affichAjoutClient()}} -{\footnotesize\ttfamily void affich\+Ajout\+Client (\begin{DoxyParamCaption}\item[{int}]{t\+Num\+Client\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Logique, }\item[{int \texorpdfstring{$\ast$}{*}}]{numC }\end{DoxyParamCaption})} - - - -Affiche les informations nécessaires pour ajouter un nouveau client. - - -\begin{DoxyParams}{Parameters} -{\em t\+Num\+Client} & -\/ Tableau des numéros de clients. \\ -\hline -{\em t\+Logique} & -\/ Nombre de clients actuellement enregistrés. \\ -\hline -{\em numC} & -\/ Numéro du nouveau client.\\ -\hline -\end{DoxyParams} -Affiche les informations nécessaires pour ajouter un nouveau client. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\texttt{ in}} & {\em t\+Num\+Client} & -\/ Tableau des numéros de client. \\ -\hline -\mbox{\texttt{ in}} & {\em t\+Logique} & -\/ Taille logique des tableaux. \\ -\hline -\mbox{\texttt{ in,out}} & {\em numC} & -\/ Numéro du nouveau client. \\ -\hline -\end{DoxyParams} -\Hypertarget{interface__resp_8h_af518981f5e0d4575a6b7bae3f22e9985}\label{interface__resp_8h_af518981f5e0d4575a6b7bae3f22e9985} -\index{interface\_resp.h@{interface\_resp.h}!affichArticles@{affichArticles}} -\index{affichArticles@{affichArticles}!interface\_resp.h@{interface\_resp.h}} -\doxysubsubsection{\texorpdfstring{affichArticles()}{affichArticles()}} -{\footnotesize\ttfamily void affich\+Articles (\begin{DoxyParamCaption}\item[{int}]{t\+Ref\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Poids\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Vol\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Prix\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Logique }\end{DoxyParamCaption})} - - - -Affiche la liste des articles. - - -\begin{DoxyParams}{Parameters} -{\em t\+Ref} & -\/ Tableau des références des articles. \\ -\hline -{\em t\+Poids} & -\/ Tableau des poids des articles. \\ -\hline -{\em t\+Vol} & -\/ Tableau des volumes des articles. \\ -\hline -{\em t\+Prix} & -\/ Tableau des prix des articles. \\ -\hline -{\em t\+Logique} & -\/ Nombre d\textquotesingle{}articles actuellement enregistrés.\\ -\hline -{\em t\+Ref} & -\/ Tableau des références d\textquotesingle{}articles. \\ -\hline -{\em t\+Poids} & -\/ Tableau des poids d\textquotesingle{}articles. \\ -\hline -{\em t\+Vol} & -\/ Tableau des volumes d\textquotesingle{}articles. \\ -\hline -{\em t\+Prix} & -\/ Tableau des prix d\textquotesingle{}articles. \\ -\hline -{\em t\+Logique} & -\/ Taille logique des tableaux. \\ -\hline -\end{DoxyParams} -\Hypertarget{interface__resp_8h_a7c0531c63ea490d0b674960483e9ba27}\label{interface__resp_8h_a7c0531c63ea490d0b674960483e9ba27} -\index{interface\_resp.h@{interface\_resp.h}!affichClients@{affichClients}} -\index{affichClients@{affichClients}!interface\_resp.h@{interface\_resp.h}} -\doxysubsubsection{\texorpdfstring{affichClients()}{affichClients()}} -{\footnotesize\ttfamily void affich\+Clients (\begin{DoxyParamCaption}\item[{int}]{t\+Num\+Client\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Cagnotte\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Sus\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Logique }\end{DoxyParamCaption})} - - - -Affiche la liste des clients. - - -\begin{DoxyParams}{Parameters} -{\em t\+Num\+Client} & -\/ Tableau des numéros de clients. \\ -\hline -{\em t\+Cagnotte} & -\/ Tableau des cagnottes des clients. \\ -\hline -{\em t\+Sus} & -\/ Tableau des états de suspension des clients. \\ -\hline -{\em t\+Logique} & -\/ Nombre de clients actuellement enregistrés.\\ -\hline -{\em t\+Num\+Client} & -\/ Tableau des numéros de client. \\ -\hline -{\em t\+Cagnotte} & -\/ Tableau des cagnottes des clients. \\ -\hline -{\em t\+Sus} & -\/ Tableau d\textquotesingle{}états des clients. \\ -\hline -{\em t\+Logique} & -\/ Taille logique des tableaux. \\ -\hline -\end{DoxyParams} -\Hypertarget{interface__resp_8h_af075e50ffce501b901ff31b1fb73262f}\label{interface__resp_8h_af075e50ffce501b901ff31b1fb73262f} -\index{interface\_resp.h@{interface\_resp.h}!affichModifierArticle@{affichModifierArticle}} -\index{affichModifierArticle@{affichModifierArticle}!interface\_resp.h@{interface\_resp.h}} -\doxysubsubsection{\texorpdfstring{affichModifierArticle()}{affichModifierArticle()}} -{\footnotesize\ttfamily void affich\+Modifier\+Article (\begin{DoxyParamCaption}\item[{int \texorpdfstring{$\ast$}{*}}]{ref, }\item[{float \texorpdfstring{$\ast$}{*}}]{poids, }\item[{float \texorpdfstring{$\ast$}{*}}]{volume, }\item[{float \texorpdfstring{$\ast$}{*}}]{prix }\end{DoxyParamCaption})} - - - -Affiche les informations nécessaires pour modifier un article. - - -\begin{DoxyParams}{Parameters} -{\em ref} & -\/ Référence de l\textquotesingle{}article à modifier. \\ -\hline -{\em poids} & -\/ Nouveau poids de l\textquotesingle{}article. \\ -\hline -{\em volume} & -\/ Nouveau volume de l\textquotesingle{}article. \\ -\hline -{\em prix} & -\/ Nouveau prix de l\textquotesingle{}article.\\ -\hline -\end{DoxyParams} -Affiche les informations nécessaires pour modifier un article. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\texttt{ in,out}} & {\em ref} & -\/ Référence de l\textquotesingle{}article à modifier. \\ -\hline -\mbox{\texttt{ in,out}} & {\em poids} & -\/ Nouveau poids de l\textquotesingle{}article. \\ -\hline -\mbox{\texttt{ in,out}} & {\em volume} & -\/ Nouveau volume de l\textquotesingle{}article. \\ -\hline -\mbox{\texttt{ in,out}} & {\em prix} & -\/ Nouveau prix de l\textquotesingle{}article. \\ -\hline -\end{DoxyParams} -\Hypertarget{interface__resp_8h_a47ca5882a75fd3b919ba02b028582473}\label{interface__resp_8h_a47ca5882a75fd3b919ba02b028582473} -\index{interface\_resp.h@{interface\_resp.h}!affichSupprimerArticle@{affichSupprimerArticle}} -\index{affichSupprimerArticle@{affichSupprimerArticle}!interface\_resp.h@{interface\_resp.h}} -\doxysubsubsection{\texorpdfstring{affichSupprimerArticle()}{affichSupprimerArticle()}} -{\footnotesize\ttfamily void affich\+Supprimer\+Article (\begin{DoxyParamCaption}\item[{int \texorpdfstring{$\ast$}{*}}]{ref }\end{DoxyParamCaption})} - - - -Affiche les informations nécessaires pour supprimer un article. - - -\begin{DoxyParams}{Parameters} -{\em ref} & -\/ Référence de l\textquotesingle{}article à supprimer.\\ -\hline -\end{DoxyParams} -Affiche les informations nécessaires pour supprimer un article. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\texttt{ in,out}} & {\em ref} & -\/ Référence de l\textquotesingle{}article à supprimer. \\ -\hline -\end{DoxyParams} -\Hypertarget{interface__resp_8h_a5e9ce25cbd73f9d4732b84eb5ab59d13}\label{interface__resp_8h_a5e9ce25cbd73f9d4732b84eb5ab59d13} -\index{interface\_resp.h@{interface\_resp.h}!affichUnArticle@{affichUnArticle}} -\index{affichUnArticle@{affichUnArticle}!interface\_resp.h@{interface\_resp.h}} -\doxysubsubsection{\texorpdfstring{affichUnArticle()}{affichUnArticle()}} -{\footnotesize\ttfamily void affich\+Un\+Article (\begin{DoxyParamCaption}\item[{int}]{t\+Ref\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Poids\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Vol\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Prix\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Logique }\end{DoxyParamCaption})} - - - -Affiche les informations d\textquotesingle{}un article spécifique. - - -\begin{DoxyParams}{Parameters} -{\em t\+Ref} & -\/ Tableau des références des articles. \\ -\hline -{\em t\+Poids} & -\/ Tableau des poids des articles. \\ -\hline -{\em t\+Vol} & -\/ Tableau des volumes des articles. \\ -\hline -{\em t\+Prix} & -\/ Tableau des prix des articles. \\ -\hline -{\em t\+Logique} & -\/ Nombre d\textquotesingle{}articles actuellement enregistrés.\\ -\hline -\end{DoxyParams} -Affiche les informations d\textquotesingle{}un article spécifique. - - -\begin{DoxyParams}{Parameters} -{\em t\+Ref} & -\/ Tableau des références d\textquotesingle{}articles. \\ -\hline -{\em t\+Poids} & -\/ Tableau des poids d\textquotesingle{}articles. \\ -\hline -{\em t\+Vol} & -\/ Tableau des volumes d\textquotesingle{}articles. \\ -\hline -{\em t\+Prix} & -\/ Tableau des prix d\textquotesingle{}articles. \\ -\hline -{\em t\+Logique} & -\/ Taille logique des tableaux. \\ -\hline -\end{DoxyParams} -\Hypertarget{interface__resp_8h_aa29059c1470e490b32fdf483b5570c88}\label{interface__resp_8h_aa29059c1470e490b32fdf483b5570c88} -\index{interface\_resp.h@{interface\_resp.h}!affichUnClient@{affichUnClient}} -\index{affichUnClient@{affichUnClient}!interface\_resp.h@{interface\_resp.h}} -\doxysubsubsection{\texorpdfstring{affichUnClient()}{affichUnClient()}} -{\footnotesize\ttfamily void affich\+Un\+Client (\begin{DoxyParamCaption}\item[{int}]{t\+Num\+Client\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Cagnotte\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Sus\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Logique }\end{DoxyParamCaption})} - - - -Affiche les informations d\textquotesingle{}un client spécifique. - - -\begin{DoxyParams}{Parameters} -{\em t\+Num\+Client} & -\/ Tableau des numéros de clients. \\ -\hline -{\em t\+Cagnotte} & -\/ Tableau des cagnottes des clients. \\ -\hline -{\em t\+Sus} & -\/ Tableau des états de suspension des clients. \\ -\hline -{\em t\+Logique} & -\/ Nombre de clients actuellement enregistrés.\\ -\hline -\end{DoxyParams} -Affiche les informations d\textquotesingle{}un client spécifique. - - -\begin{DoxyParams}{Parameters} -{\em t\+Num\+Client} & -\/ Tableau des numéros de client. \\ -\hline -{\em t\+Cagnotte} & -\/ Tableau des cagnottes des clients. \\ -\hline -{\em t\+Sus} & -\/ Tableau d\textquotesingle{}états des clients. \\ -\hline -{\em t\+Logique} & -\/ Taille logique des tableaux. \\ -\hline -\end{DoxyParams} -\Hypertarget{interface__resp_8h_a421ebe0511c91fb6431aed873aa01e35}\label{interface__resp_8h_a421ebe0511c91fb6431aed873aa01e35} -\index{interface\_resp.h@{interface\_resp.h}!global\_resp@{global\_resp}} -\index{global\_resp@{global\_resp}!interface\_resp.h@{interface\_resp.h}} -\doxysubsubsection{\texorpdfstring{global\_resp()}{global\_resp()}} -{\footnotesize\ttfamily void global\+\_\+resp (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} - - - -Fonction principale de l\textquotesingle{}interface du responsable. - -Cette fonction permet au responsable d\textquotesingle{}effectuer diverses actions telles que la gestion des articles et des clients. \Hypertarget{interface__resp_8h_a1f14dc8f23be75e1a5c0e7ce0c77f597}\label{interface__resp_8h_a1f14dc8f23be75e1a5c0e7ce0c77f597} -\index{interface\_resp.h@{interface\_resp.h}!menu\_resp@{menu\_resp}} -\index{menu\_resp@{menu\_resp}!interface\_resp.h@{interface\_resp.h}} -\doxysubsubsection{\texorpdfstring{menu\_resp()}{menu\_resp()}} -{\footnotesize\ttfamily void menu\+\_\+resp (\begin{DoxyParamCaption}\item[{int \texorpdfstring{$\ast$}{*}}]{choix }\end{DoxyParamCaption})} - - - -Laisse le responsable choisir une option du menu. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\texttt{ in,out}} & {\em choix} & -\/ L\textquotesingle{}option choisie par le responsable.\\ -\hline -\end{DoxyParams} -Laisse le responsable choisir une option du menu. - - -\begin{DoxyParams}[1]{Parameters} -\mbox{\texttt{ in,out}} & {\em choix} & -\/ L\textquotesingle{}option choisie par le responsable. \\ -\hline -\end{DoxyParams} diff --git a/docs/latex/interface__resp_8h_source.tex b/docs/latex/interface__resp_8h_source.tex deleted file mode 100644 index 2b0cd67..0000000 --- a/docs/latex/interface__resp_8h_source.tex +++ /dev/null @@ -1,30 +0,0 @@ -\doxysection{interface\+\_\+resp.\+h} -\hypertarget{interface__resp_8h_source}{}\label{interface__resp_8h_source}\index{src/app/interface/interface\_resp.h@{src/app/interface/interface\_resp.h}} -\mbox{\hyperlink{interface__resp_8h}{Go to the documentation of this file.}} -\begin{DoxyCode}{0} -\DoxyCodeLine{00001\ } -\DoxyCodeLine{00015\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{interface__resp_8h_af518981f5e0d4575a6b7bae3f22e9985}{affichArticles}}(\textcolor{keywordtype}{int}\ tRef[],\ \textcolor{keywordtype}{float}\ tPoids[],\ \textcolor{keywordtype}{float}\ tVol[],\ \textcolor{keywordtype}{float}\ tPrix[],\ \textcolor{keywordtype}{int}\ tLogique);} -\DoxyCodeLine{00016\ } -\DoxyCodeLine{00026\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{interface__resp_8h_a5e9ce25cbd73f9d4732b84eb5ab59d13}{affichUnArticle}}(\textcolor{keywordtype}{int}\ tRef[],\ \textcolor{keywordtype}{float}\ tPoids[],\ \textcolor{keywordtype}{float}\ tVol[],\ \textcolor{keywordtype}{float}\ tPrix[],\ \textcolor{keywordtype}{int}\ tLogique);} -\DoxyCodeLine{00027\ } -\DoxyCodeLine{00036\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{interface__resp_8h_aa29059c1470e490b32fdf483b5570c88}{affichUnClient}}(\textcolor{keywordtype}{int}\ tNumClient[],\ \textcolor{keywordtype}{float}\ tCagnotte[],\ \textcolor{keywordtype}{int}\ tSus[],\ \textcolor{keywordtype}{int}\ tLogique);} -\DoxyCodeLine{00037\ } -\DoxyCodeLine{00046\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{interface__resp_8h_a7c0531c63ea490d0b674960483e9ba27}{affichClients}}(\textcolor{keywordtype}{int}\ tNumClient[],\ \textcolor{keywordtype}{float}\ tCagnotte[],\ \textcolor{keywordtype}{int}\ tSus[],\ \textcolor{keywordtype}{int}\ tLogique);} -\DoxyCodeLine{00047\ } -\DoxyCodeLine{00056\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{interface__resp_8h_a9e01225a96daa69eb466e03fd1108c0a}{affichAjoutArticle}}(\textcolor{keywordtype}{int}\ *ref,\ \textcolor{keywordtype}{float}\ *poids,\ \textcolor{keywordtype}{float}\ *volume,\ \textcolor{keywordtype}{float}\ *prix);} -\DoxyCodeLine{00057\ } -\DoxyCodeLine{00063\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{interface__resp_8h_a47ca5882a75fd3b919ba02b028582473}{affichSupprimerArticle}}(\textcolor{keywordtype}{int}\ *ref);} -\DoxyCodeLine{00064\ } -\DoxyCodeLine{00073\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{interface__resp_8h_af075e50ffce501b901ff31b1fb73262f}{affichModifierArticle}}(\textcolor{keywordtype}{int}\ *ref,\ \textcolor{keywordtype}{float}\ *poids,\ \textcolor{keywordtype}{float}\ *volume,\ \textcolor{keywordtype}{float}\ *prix);} -\DoxyCodeLine{00074\ } -\DoxyCodeLine{00078\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{interface__resp_8h_a80d8c0f53cf692db395b729a229f2df8}{problemRechercheArticle}}();} -\DoxyCodeLine{00079\ } -\DoxyCodeLine{00087\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{interface__resp_8h_a964d2d2bc5b9aa544e6187ed6cbc961c}{affichAjoutClient}}(\textcolor{keywordtype}{int}\ tNumClient[],\ \textcolor{keywordtype}{int}\ tLogique,\ \textcolor{keywordtype}{int}\ *numC);} -\DoxyCodeLine{00088\ } -\DoxyCodeLine{00094\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{interface__resp_8h_a1f14dc8f23be75e1a5c0e7ce0c77f597}{menu\_resp}}(\textcolor{keywordtype}{int}\ *choix);} -\DoxyCodeLine{00095\ } -\DoxyCodeLine{00101\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{interface__resp_8h_a421ebe0511c91fb6431aed873aa01e35}{global\_resp}}();} -\DoxyCodeLine{00102\ } -\DoxyCodeLine{00106\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{interface__resp_8h_a333cea7df6b2de2a16440aaf53d63af4}{affiche\_resp}}();} - -\end{DoxyCode} diff --git a/docs/latex/longtable_doxygen.sty b/docs/latex/longtable_doxygen.sty deleted file mode 100644 index e94b78b..0000000 --- a/docs/latex/longtable_doxygen.sty +++ /dev/null @@ -1,456 +0,0 @@ -%% -%% This is file `longtable.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% longtable.dtx (with options: `package') -%% -%% This is a generated file. -%% -%% The source is maintained by the LaTeX Project team and bug -%% reports for it can be opened at http://latex-project.org/bugs.html -%% (but please observe conditions on bug reports sent to that address!) -%% -%% Copyright 1993-2016 -%% The LaTeX3 Project and any individual authors listed elsewhere -%% in this file. -%% -%% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'. -%% -------------------------------------------------------------------------- -%% -%% It may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% 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.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file may only be distributed together with a copy of the LaTeX -%% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle' -%% without such generated files. -%% -%% The list of all files belonging to the LaTeX `Tools Bundle' is -%% given in the file `manifest.txt'. -%% -%% File: longtable.dtx Copyright (C) 1990-2001 David Carlisle -\NeedsTeXFormat{LaTeX2e}[1995/06/01] -\ProvidesPackage{longtable_doxygen} - [2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen] -\def\LT@err{\PackageError{longtable}} -\def\LT@warn{\PackageWarning{longtable}} -\def\LT@final@warn{% - \AtEndDocument{% - \LT@warn{Table \@width s have changed. Rerun LaTeX.\@gobbletwo}}% - \global\let\LT@final@warn\relax} -\DeclareOption{errorshow}{% - \def\LT@warn{\PackageInfo{longtable}}} -\DeclareOption{pausing}{% - \def\LT@warn#1{% - \LT@err{#1}{This is not really an error}}} -\DeclareOption{set}{} -\DeclareOption{final}{} -\ProcessOptions -\newskip\LTleft \LTleft=\fill -\newskip\LTright \LTright=\fill -\newskip\LTpre \LTpre=\bigskipamount -\newskip\LTpost \LTpost=\bigskipamount -\newcount\LTchunksize \LTchunksize=20 -\let\c@LTchunksize\LTchunksize -\newdimen\LTcapwidth \LTcapwidth=4in -\newbox\LT@head -\newbox\LT@firsthead -\newbox\LT@foot -\newbox\LT@lastfoot -\newcount\LT@cols -\newcount\LT@rows -\newcounter{LT@tables} -\newcounter{LT@chunks}[LT@tables] -\ifx\c@table\undefined - \newcounter{table} - \def\fnum@table{\tablename~\thetable} -\fi -\ifx\tablename\undefined - \def\tablename{Table} -\fi -\newtoks\LT@p@ftn -\mathchardef\LT@end@pen=30000 -\def\longtable{% - \par - \ifx\multicols\@undefined - \else - \ifnum\col@number>\@ne - \@twocolumntrue - \fi - \fi - \if@twocolumn - \LT@err{longtable not in 1-column mode}\@ehc - \fi - \begingroup - \@ifnextchar[\LT@array{\LT@array[x]}} -\def\LT@array[#1]#2{% - \refstepcounter{table}\stepcounter{LT@tables}% - \if l#1% - \LTleft\z@ \LTright\fill - \else\if r#1% - \LTleft\fill \LTright\z@ - \else\if c#1% - \LTleft\fill \LTright\fill - \fi\fi\fi - \let\LT@mcol\multicolumn - \let\LT@@tabarray\@tabarray - \let\LT@@hl\hline - \def\@tabarray{% - \let\hline\LT@@hl - \LT@@tabarray}% - \let\\\LT@tabularcr\let\tabularnewline\\% - \def\newpage{\noalign{\break}}% - \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}% - \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}% - \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption - \@tempdima\ht\strutbox - \let\@endpbox\LT@endpbox - \ifx\extrarowheight\@undefined - \let\@acol\@tabacol - \let\@classz\@tabclassz \let\@classiv\@tabclassiv - \def\@startpbox{\vtop\LT@startpbox}% - \let\@@startpbox\@startpbox - \let\@@endpbox\@endpbox - \let\LT@LL@FM@cr\@tabularcr - \else - \advance\@tempdima\extrarowheight - \col@sep\tabcolsep - \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr - \fi - \setbox\@arstrutbox\hbox{\vrule - \@height \arraystretch \@tempdima - \@depth \arraystretch \dp \strutbox - \@width \z@}% - \let\@sharp##\let\protect\relax - \begingroup - \@mkpream{#2}% - \xdef\LT@bchunk{% - \global\advance\c@LT@chunks\@ne - \global\LT@rows\z@\setbox\z@\vbox\bgroup - \LT@setprevdepth - \tabskip\LTleft \noexpand\halign to\hsize\bgroup - \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}% - \endgroup - \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols - \LT@make@row - \m@th\let\par\@empty - \everycr{}\lineskip\z@\baselineskip\z@ - \LT@bchunk} -\def\LT@no@pgbk#1[#2]{\penalty #1\@getpen{#2}\ifnum`{=0\fi}} -\def\LT@start{% - \let\LT@start\endgraf - \endgraf\penalty\z@\vskip\LTpre - \dimen@\pagetotal - \advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi - \advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi - \advance\dimen@ \ht\LT@foot - \dimen@ii\vfuzz - \vfuzz\maxdimen - \setbox\tw@\copy\z@ - \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox - \setbox\tw@\vbox{\unvbox\tw@}% - \vfuzz\dimen@ii - \advance\dimen@ \ht - \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi - \advance\dimen@\dp - \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi - \advance\dimen@ -\pagegoal - \ifdim \dimen@>\z@\vfil\break\fi - \global\@colroom\@colht - \ifvoid\LT@foot\else - \advance\vsize-\ht\LT@foot - \global\advance\@colroom-\ht\LT@foot - \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@ - \maxdepth\z@ - \fi - \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak - \output{\LT@output}} -\def\endlongtable{% - \crcr - \noalign{% - \let\LT@entry\LT@entry@chop - \xdef\LT@save@row{\LT@save@row}}% - \LT@echunk - \LT@start - \unvbox\z@ - \LT@get@widths - \if@filesw - {\let\LT@entry\LT@entry@write\immediate\write\@auxout{% - \gdef\expandafter\noexpand - \csname LT@\romannumeral\c@LT@tables\endcsname - {\LT@save@row}}}% - \fi - \ifx\LT@save@row\LT@@save@row - \else - \LT@warn{Column \@width s have changed\MessageBreak - in table \thetable}% - \LT@final@warn - \fi - \endgraf\penalty -\LT@end@pen - \endgroup - \global\@mparbottom\z@ - \pagegoal\vsize - \endgraf\penalty\z@\addvspace\LTpost - \ifvoid\footins\else\insert\footins{}\fi} -\def\LT@nofcols#1&{% - \futurelet\@let@token\LT@n@fcols} -\def\LT@n@fcols{% - \advance\LT@cols\@ne - \ifx\@let@token\LT@nofcols - \expandafter\@gobble - \else - \expandafter\LT@nofcols - \fi} -\def\LT@tabularcr{% - \relax\iffalse{\fi\ifnum0=`}\fi - \@ifstar - {\def\crcr{\LT@crcr\noalign{\nobreak}}\let\cr\crcr - \LT@t@bularcr}% - {\LT@t@bularcr}} -\let\LT@crcr\crcr -\let\LT@setprevdepth\relax -\def\LT@t@bularcr{% - \global\advance\LT@rows\@ne - \ifnum\LT@rows=\LTchunksize - \gdef\LT@setprevdepth{% - \prevdepth\z@\global - \global\let\LT@setprevdepth\relax}% - \expandafter\LT@xtabularcr - \else - \ifnum0=`{}\fi - \expandafter\LT@LL@FM@cr - \fi} -\def\LT@xtabularcr{% - \@ifnextchar[\LT@argtabularcr\LT@ntabularcr} -\def\LT@ntabularcr{% - \ifnum0=`{}\fi - \LT@echunk - \LT@start - \unvbox\z@ - \LT@get@widths - \LT@bchunk} -\def\LT@argtabularcr[#1]{% - \ifnum0=`{}\fi - \ifdim #1>\z@ - \unskip\@xargarraycr{#1}% - \else - \@yargarraycr{#1}% - \fi - \LT@echunk - \LT@start - \unvbox\z@ - \LT@get@widths - \LT@bchunk} -\def\LT@echunk{% - \crcr\LT@save@row\cr\egroup - \global\setbox\@ne\lastbox - \unskip - \egroup} -\def\LT@entry#1#2{% - \ifhmode\@firstofone{&}\fi\omit - \ifnum#1=\c@LT@chunks - \else - \kern#2\relax - \fi} -\def\LT@entry@chop#1#2{% - \noexpand\LT@entry - {\ifnum#1>\c@LT@chunks - 1}{0pt% - \else - #1}{#2% - \fi}} -\def\LT@entry@write{% - \noexpand\LT@entry^^J% - \@spaces} -\def\LT@kill{% - \LT@echunk - \LT@get@widths - \expandafter\LT@rebox\LT@bchunk} -\def\LT@rebox#1\bgroup{% - #1\bgroup - \unvbox\z@ - \unskip - \setbox\z@\lastbox} -\def\LT@blank@row{% - \xdef\LT@save@row{\expandafter\LT@build@blank - \romannumeral\number\LT@cols 001 }} -\def\LT@build@blank#1{% - \if#1m% - \noexpand\LT@entry{1}{0pt}% - \expandafter\LT@build@blank - \fi} -\def\LT@make@row{% - \global\expandafter\let\expandafter\LT@save@row - \csname LT@\romannumeral\c@LT@tables\endcsname - \ifx\LT@save@row\relax - \LT@blank@row - \else - {\let\LT@entry\or - \if!% - \ifcase\expandafter\expandafter\expandafter\LT@cols - \expandafter\@gobble\LT@save@row - \or - \else - \relax - \fi - !% - \else - \aftergroup\LT@blank@row - \fi}% - \fi} -\let\setlongtables\relax -\def\LT@get@widths{% - \setbox\tw@\hbox{% - \unhbox\@ne - \let\LT@old@row\LT@save@row - \global\let\LT@save@row\@empty - \count@\LT@cols - \loop - \unskip - \setbox\tw@\lastbox - \ifhbox\tw@ - \LT@def@row - \advance\count@\m@ne - \repeat}% - \ifx\LT@@save@row\@undefined - \let\LT@@save@row\LT@save@row - \fi} -\def\LT@def@row{% - \let\LT@entry\or - \edef\@tempa{% - \ifcase\expandafter\count@\LT@old@row - \else - {1}{0pt}% - \fi}% - \let\LT@entry\relax - \xdef\LT@save@row{% - \LT@entry - \expandafter\LT@max@sel\@tempa - \LT@save@row}} -\def\LT@max@sel#1#2{% - {\ifdim#2=\wd\tw@ - #1% - \else - \number\c@LT@chunks - \fi}% - {\the\wd\tw@}} -\def\LT@hline{% - \noalign{\ifnum0=`}\fi - \penalty\@M - \futurelet\@let@token\LT@@hline} -\def\LT@@hline{% - \ifx\@let@token\hline - \global\let\@gtempa\@gobble - \gdef\LT@sep{\penalty-\@medpenalty\vskip\doublerulesep}% - \else - \global\let\@gtempa\@empty - \gdef\LT@sep{\penalty-\@lowpenalty\vskip-\arrayrulewidth}% - \fi - \ifnum0=`{\fi}% - \multispan\LT@cols - \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr - \noalign{\LT@sep}% - \multispan\LT@cols - \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr - \noalign{\penalty\@M}% - \@gtempa} -\def\LT@caption{% - \noalign\bgroup - \@ifnextchar[{\egroup\LT@c@ption\@firstofone}\LT@capti@n} -\def\LT@c@ption#1[#2]#3{% - \LT@makecaption#1\fnum@table{#3}% - \def\@tempa{#2}% - \ifx\@tempa\@empty\else - {\let\\\space - \addcontentsline{lot}{table}{\protect\numberline{\thetable}{#2}}}% - \fi} -\def\LT@capti@n{% - \@ifstar - {\egroup\LT@c@ption\@gobble[]}% - {\egroup\@xdblarg{\LT@c@ption\@firstofone}}} -\def\LT@makecaption#1#2#3{% - \LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth{% - \sbox\@tempboxa{#1{#2: }#3}% - \ifdim\wd\@tempboxa>\hsize - #1{#2: }#3% - \else - \hbox to\hsize{\hfil\box\@tempboxa\hfil}% - \fi - \endgraf\vskip\baselineskip}% - \hss}}} -\def\LT@output{% - \ifnum\outputpenalty <-\@Mi - \ifnum\outputpenalty > -\LT@end@pen - \LT@err{floats and marginpars not allowed in a longtable}\@ehc - \else - \setbox\z@\vbox{\unvbox\@cclv}% - \ifdim \ht\LT@lastfoot>\ht\LT@foot - \dimen@\pagegoal - \advance\dimen@-\ht\LT@lastfoot - \ifdim\dimen@<\ht\z@ - \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}% - \@makecol - \@outputpage - \setbox\z@\vbox{\box\LT@head}% - \fi - \fi - \global\@colroom\@colht - \global\vsize\@colht - \vbox - {\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}% - \fi - \else - \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}% - \@makecol - \@outputpage - \global\vsize\@colroom - \copy\LT@head\nobreak - \fi} -\def\LT@end@hd@ft#1{% - \LT@echunk - \ifx\LT@start\endgraf - \LT@err - {Longtable head or foot not at start of table}% - {Increase LTchunksize}% - \fi - \setbox#1\box\z@ - \LT@get@widths - \LT@bchunk} -\def\endfirsthead{\LT@end@hd@ft\LT@firsthead} -\def\endhead{\LT@end@hd@ft\LT@head} -\def\endfoot{\LT@end@hd@ft\LT@foot} -\def\endlastfoot{\LT@end@hd@ft\LT@lastfoot} -\def\LT@startpbox#1{% - \bgroup - \let\@footnotetext\LT@p@ftntext - \setlength\hsize{#1}% - \@arrayparboxrestore - \vrule \@height \ht\@arstrutbox \@width \z@} -\def\LT@endpbox{% - \@finalstrut\@arstrutbox - \egroup - \the\LT@p@ftn - \global\LT@p@ftn{}% - \hfil} -%% added \long to prevent: -% LaTeX Warning: Command \LT@p@ftntext has changed. -% -% from the original repository (https://github.com/latex3/latex2e/blob/develop/required/tools/longtable.dtx): -% \changes{v4.15}{2021/03/28} -% {make long for gh/364} -% Inside the `p' column, just save up the footnote text in a token -% register. -\long\def\LT@p@ftntext#1{% - \edef\@tempa{\the\LT@p@ftn\noexpand\footnotetext[\the\c@footnote]}% - \global\LT@p@ftn\expandafter{\@tempa{#1}}}% - -\@namedef{ver@longtable.sty}{2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen} -\endinput -%% -%% End of file `longtable.sty'. diff --git a/docs/latex/main_8c.tex b/docs/latex/main_8c.tex deleted file mode 100644 index b162cdf..0000000 --- a/docs/latex/main_8c.tex +++ /dev/null @@ -1,58 +0,0 @@ -\doxysection{src/main.c File Reference} -\hypertarget{main_8c}{}\label{main_8c}\index{src/main.c@{src/main.c}} - - -Programme principal pour choisir une interface et lancer l\textquotesingle{}application. - - -{\ttfamily \#include $<$stdio.\+h$>$}\newline -{\ttfamily \#include $<$stdlib.\+h$>$}\newline -{\ttfamily \#include "{}app/interface/interface\+\_\+client.\+h"{}}\newline -{\ttfamily \#include "{}app/interface/interface\+\_\+resp.\+h"{}}\newline -{\ttfamily \#include "{}app/core\+\_\+logic/client.\+h"{}}\newline -{\ttfamily \#include "{}app/core\+\_\+logic/responsable.\+h"{}}\newline -\doxysubsubsection*{Functions} -\begin{DoxyCompactItemize} -\item -int \mbox{\hyperlink{main_8c_a5fdac9110609b2cc4b43c68b643af452}{choix\+Interface}} (void) -\begin{DoxyCompactList}\small\item\em Fonction permettant à l\textquotesingle{}utilisateur de choisir une interface. \end{DoxyCompactList}\item -int \mbox{\hyperlink{main_8c_ae66f6b31b5ad750f1fe042a706a4e3d4}{main}} () -\begin{DoxyCompactList}\small\item\em Fonction principale du programme. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\doxysubsection{Detailed Description} -Programme principal pour choisir une interface et lancer l\textquotesingle{}application. - - - -\doxysubsection{Function Documentation} -\Hypertarget{main_8c_a5fdac9110609b2cc4b43c68b643af452}\label{main_8c_a5fdac9110609b2cc4b43c68b643af452} -\index{main.c@{main.c}!choixInterface@{choixInterface}} -\index{choixInterface@{choixInterface}!main.c@{main.c}} -\doxysubsubsection{\texorpdfstring{choixInterface()}{choixInterface()}} -{\footnotesize\ttfamily int choix\+Interface (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} - - - -Fonction permettant à l\textquotesingle{}utilisateur de choisir une interface. - -L\textquotesingle{}utilisateur peut choisir entre l\textquotesingle{}interface "{}responsable"{} ou "{}client"{} en saisissant 1 ou 2. Cette fonction vérifie que l\textquotesingle{}entrée de l\textquotesingle{}utilisateur est valide. - -\begin{DoxyReturn}{Returns} -Le choix de l\textquotesingle{}interface (1 pour responsable, 2 pour client). -\end{DoxyReturn} -\Hypertarget{main_8c_ae66f6b31b5ad750f1fe042a706a4e3d4}\label{main_8c_ae66f6b31b5ad750f1fe042a706a4e3d4} -\index{main.c@{main.c}!main@{main}} -\index{main@{main}!main.c@{main.c}} -\doxysubsubsection{\texorpdfstring{main()}{main()}} -{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} - - - -Fonction principale du programme. - -Cette fonction permet à l\textquotesingle{}utilisateur de choisir une interface à lancer (responsable ou client) en utilisant la fonction \doxylink{main_8c_a5fdac9110609b2cc4b43c68b643af452}{choix\+Interface()}, puis elle lance l\textquotesingle{}interface correspondante. - -\begin{DoxyReturn}{Returns} -0 si le programme s\textquotesingle{}est exécuté avec succès. -\end{DoxyReturn} diff --git a/docs/latex/refman.tex b/docs/latex/refman.tex deleted file mode 100644 index 3c42a89..0000000 --- a/docs/latex/refman.tex +++ /dev/null @@ -1,234 +0,0 @@ - % Handle batch mode - % to overcome problems with too many open files - \let\mypdfximage\pdfximage\def\pdfximage{\immediate\mypdfximage} - \pdfminorversion=7 - % Set document class depending on configuration - \documentclass[twoside]{book} - %% moved from doxygen.sty due to workaround for LaTex 2019 version and unmaintained tabu package - \usepackage{ifthen} - \ifx\requestedLaTeXdate\undefined - \usepackage{array} - \else - \usepackage{array}[=2016-10-06] - \fi - %% - % Packages required by doxygen - \makeatletter - \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} - % suppress package identification of infwarerr as it contains the word "warning" - \let\@@protected@wlog\protected@wlog - \def\protected@wlog#1{\wlog{package info suppressed}} - \RequirePackage{infwarerr} - \let\protected@wlog\@@protected@wlog - \makeatother - \IfFormatAtLeastTF{2016/01/01}{}{\usepackage{fixltx2e}} % for \textsubscript - \IfFormatAtLeastTF{2015/01/01}{\pdfsuppresswarningpagegroup=1}{} - \usepackage{doxygen} - \usepackage{graphicx} - \usepackage[utf8]{inputenc} - \usepackage{makeidx} - \PassOptionsToPackage{warn}{textcomp} - \usepackage{textcomp} - \usepackage[nointegrals]{wasysym} - \usepackage{ifxetex} - % NLS support packages - % Define default fonts - % Font selection - \usepackage[T1]{fontenc} - % set main and monospaced font - \usepackage[scaled=.90]{helvet} -\usepackage{courier} -\renewcommand{\familydefault}{\sfdefault} - \doxyallsectionsfont{% - \fontseries{bc}\selectfont% - \color{darkgray}% - } - \renewcommand{\DoxyLabelFont}{% - \fontseries{bc}\selectfont% - \color{darkgray}% - } - \newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}} - % Arguments of doxygenemoji: - % 1) '::' form of the emoji, already LaTeX-escaped - % 2) file with the name of the emoji without the .png extension - % in case image exist use this otherwise use the '::' form - \newcommand{\doxygenemoji}[2]{% - \IfFileExists{./#2.png}{\raisebox{-0.1em}{\includegraphics[height=0.9em]{./#2.png}}}{#1}% - } - % Page & text layout - \usepackage{geometry} - \geometry{% - a4paper,% - top=2.5cm,% - bottom=2.5cm,% - left=2.5cm,% - right=2.5cm% - } - \usepackage{changepage} - % Allow a bit of overflow to go unnoticed by other means - \tolerance=750 - \hfuzz=15pt - \hbadness=750 - \setlength{\emergencystretch}{15pt} - \setlength{\parindent}{0cm} - \newcommand{\doxynormalparskip}{\setlength{\parskip}{3ex plus 2ex minus 2ex}} - \newcommand{\doxytocparskip}{\setlength{\parskip}{1ex plus 0ex minus 0ex}} - \doxynormalparskip - % Redefine paragraph/subparagraph environments, using sectsty fonts - \makeatletter - \renewcommand{\paragraph}{% - \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{% - \normalfont\normalsize\bfseries\SS@parafont% - }% - } - \renewcommand{\subparagraph}{% - \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{% - \normalfont\normalsize\bfseries\SS@subparafont% - }% - } - \makeatother - \makeatletter - \newcommand\hrulefilll{\leavevmode\leaders\hrule\hskip 0pt plus 1filll\kern\z@} - \makeatother - % Headers & footers - \usepackage{fancyhdr} - \pagestyle{fancyplain} - \renewcommand{\footrulewidth}{0.4pt} - \fancypagestyle{fancyplain}{ - \fancyhf{} - \fancyhead[LE, RO]{\bfseries\thepage} - \fancyhead[LO]{\bfseries\rightmark} - \fancyhead[RE]{\bfseries\leftmark} - \fancyfoot[LO, RE]{\bfseries\scriptsize Generated by Doxygen } - } - \fancypagestyle{plain}{ - \fancyhf{} - \fancyfoot[LO, RE]{\bfseries\scriptsize Generated by Doxygen } - \renewcommand{\headrulewidth}{0pt} - } - \pagestyle{fancyplain} - \renewcommand{\chaptermark}[1]{% - \markboth{#1}{}% - } - \renewcommand{\sectionmark}[1]{% - \markright{\thesection\ #1}% - } - % ToC, LoF, LoT, bibliography, and index - % Indices & bibliography - \usepackage{natbib} - \usepackage[titles]{tocloft} - \setcounter{tocdepth}{3} - \setcounter{secnumdepth}{5} - % creating indexes - \makeindex - \usepackage{newunicodechar} - \makeatletter - \def\doxynewunicodechar#1#2{% - \@tempswafalse - \edef\nuc@tempa{\detokenize{#1}}% - \if\relax\nuc@tempa\relax - \nuc@emptyargerr - \else - \edef\@tempb{\expandafter\@car\nuc@tempa\@nil}% - \nuc@check - \if@tempswa - \@namedef{u8:\nuc@tempa}{#2}% - \fi - \fi - } - \makeatother - \doxynewunicodechar{⁻}{${}^{-}$}% Superscript minus - \doxynewunicodechar{²}{${}^{2}$}% Superscript two - \doxynewunicodechar{³}{${}^{3}$}% Superscript three - % Hyperlinks - % Hyperlinks (required, but should be loaded last) - \ifpdf - \usepackage[pdftex,pagebackref=true]{hyperref} - \else - \ifxetex - \usepackage[pagebackref=true]{hyperref} - \else - \usepackage[ps2pdf,pagebackref=true]{hyperref} - \fi - \fi - \hypersetup{% - colorlinks=true,% - linkcolor=blue,% - citecolor=blue,% - unicode,% - pdftitle={My Project},% - pdfsubject={}% - } - % Custom commands used by the header - % Custom commands - \newcommand{\clearemptydoublepage}{% - \newpage{\pagestyle{empty}\cleardoublepage}% - } - % caption style definition - \usepackage{caption} - \captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top} - % in page table of contents - \IfFormatAtLeastTF{2023/05/01}{\usepackage[deeplevels]{etoc}}{\usepackage[deeplevels]{etoc_doxygen}} - \etocsettocstyle{\doxytocparskip}{\doxynormalparskip} - \etocsetlevel{subsubsubsection}{4} - \etocsetlevel{subsubsubsubsection}{5} - \etocsetlevel{subsubsubsubsubsection}{6} - \etocsetlevel{subsubsubsubsubsubsection}{7} - \etocsetlevel{paragraph}{8} - \etocsetlevel{subparagraph}{9} - % prevent numbers overlap the titles in toc - \renewcommand{\numberline}[1]{#1~} -% End of preamble, now comes the document contents -%===== C O N T E N T S ===== -\begin{document} - \raggedbottom - % Titlepage & ToC - % To avoid duplicate page anchors due to reuse of same numbers for - % the index (be it as roman numbers) - \hypersetup{pageanchor=false, - bookmarksnumbered=true, - pdfencoding=unicode - } - \pagenumbering{alph} - \begin{titlepage} - \vspace*{7cm} - \begin{center}% - {\Large My Project}\\ - \vspace*{1cm} - {\large Generated by Doxygen 1.9.8}\\ - \end{center} - \end{titlepage} - \clearemptydoublepage - \pagenumbering{roman} - \tableofcontents - \clearemptydoublepage - \pagenumbering{arabic} - % re-enable anchors again - \hypersetup{pageanchor=true} -%--- Begin generated contents --- -\chapter{File Index} -\input{files} -\chapter{File Documentation} -\input{client_8c} -\input{client_8h} -\input{client_8h_source} -\input{responsable_8c} -\input{responsable_8h} -\input{responsable_8h_source} -\input{interface__client_8c} -\input{interface__client_8h} -\input{interface__client_8h_source} -\input{interface__resp_8c} -\input{interface__resp_8h} -\input{interface__resp_8h_source} -\input{main_8c} -%--- End generated contents --- -% Index - \backmatter - \newpage - \phantomsection - \clearemptydoublepage - \addcontentsline{toc}{chapter}{\indexname} - \printindex -% Required for some languages (in combination with latexdocumentpre from the header) -\end{document} diff --git a/docs/latex/responsable_8c.tex b/docs/latex/responsable_8c.tex deleted file mode 100644 index 706bc51..0000000 --- a/docs/latex/responsable_8c.tex +++ /dev/null @@ -1,225 +0,0 @@ -\doxysection{src/app/core\+\_\+logic/responsable.c File Reference} -\hypertarget{responsable_8c}{}\label{responsable_8c}\index{src/app/core\_logic/responsable.c@{src/app/core\_logic/responsable.c}} - - -Définition des fonctions de \doxylink{responsable_8c}{responsable.\+c}. - - -{\ttfamily \#include $<$stdio.\+h$>$}\newline -{\ttfamily \#include $<$stdlib.\+h$>$}\newline -{\ttfamily \#include "{}responsable.\+h"{}}\newline -{\ttfamily \#include "{}../interface/interface\+\_\+resp.\+h"{}}\newline -\doxysubsubsection*{Functions} -\begin{DoxyCompactItemize} -\item -int \mbox{\hyperlink{responsable_8c_a937ddfa15445cc5d2336130fb6567ce1}{chargement\+Articles}} (int t\+Ref\mbox{[}$\,$\mbox{]}, float t\+Poids\mbox{[}$\,$\mbox{]}, float t\+Vol\mbox{[}$\,$\mbox{]}, float t\+Prix\mbox{[}$\,$\mbox{]}, int t\+Physique) -\begin{DoxyCompactList}\small\item\em Charge les informations des articles à partir d\textquotesingle{}un fichier dans des tableaux. \end{DoxyCompactList}\item -void \mbox{\hyperlink{responsable_8c_ac9e79c89d04823f4b1b5572c9865e57d}{sauvegard\+Articles}} (int t\+Ref\mbox{[}$\,$\mbox{]}, float t\+Poids\mbox{[}$\,$\mbox{]}, float t\+Vol\mbox{[}$\,$\mbox{]}, float t\+Prix\mbox{[}$\,$\mbox{]}, int t\+Logique) -\begin{DoxyCompactList}\small\item\em Sauvegarde les informations des articles dans un fichier. \end{DoxyCompactList}\item -int \mbox{\hyperlink{responsable_8c_abce68a203cf18b85ebdad34e468815f0}{ajouter\+Article}} (int t\+Ref\mbox{[}$\,$\mbox{]}, float t\+Poids\mbox{[}$\,$\mbox{]}, float t\+Vol\mbox{[}$\,$\mbox{]}, float t\+Prix\mbox{[}$\,$\mbox{]}, int \texorpdfstring{$\ast$}{*}t\+Logique, int t\+Physique, int ref, float poids, float volume, float prix) -\begin{DoxyCompactList}\small\item\em Ajoute un nouvel article aux tableaux d\textquotesingle{}articles. \end{DoxyCompactList}\item -void \mbox{\hyperlink{responsable_8c_a33f342ec6aaff14efce87b42350d9bee}{recherche\+Ref\+Article}} (int t\+Ref\mbox{[}$\,$\mbox{]}, int ref, int \texorpdfstring{$\ast$}{*}index, int t\+Logique) -\begin{DoxyCompactList}\small\item\em Recherche une référence d\textquotesingle{}article dans le tableau t\+Ref. \end{DoxyCompactList}\item -void \mbox{\hyperlink{responsable_8c_a0f8076a332f73d1edca58cfaeb42167e}{supprimer\+Article}} (int t\+Ref\mbox{[}$\,$\mbox{]}, float t\+Poids\mbox{[}$\,$\mbox{]}, float t\+Vol\mbox{[}$\,$\mbox{]}, float t\+Prix\mbox{[}$\,$\mbox{]}, int \texorpdfstring{$\ast$}{*}t\+Logique) -\begin{DoxyCompactList}\small\item\em Supprime un article des tableaux d\textquotesingle{}articles. \end{DoxyCompactList}\item -void \mbox{\hyperlink{responsable_8c_ab02f9ff38b359630bc980bae859f7512}{modifier\+Article}} (int t\+Ref\mbox{[}$\,$\mbox{]}, float t\+Poids\mbox{[}$\,$\mbox{]}, float t\+Vol\mbox{[}$\,$\mbox{]}, float t\+Prix\mbox{[}$\,$\mbox{]}, int t\+Logique) -\begin{DoxyCompactList}\small\item\em Modifie les informations d\textquotesingle{}un article existant. \end{DoxyCompactList}\item -void \mbox{\hyperlink{responsable_8c_a185476dbf2dae604d3deb6a3085580a2}{ajouter\+Client}} (int t\+Num\+Client\mbox{[}$\,$\mbox{]}, float t\+Cagnotte\mbox{[}$\,$\mbox{]}, int t\+Sus\mbox{[}$\,$\mbox{]}, int \texorpdfstring{$\ast$}{*}t\+Logique, int t\+Physique) -\begin{DoxyCompactList}\small\item\em Ajoute un nouveau client aux tableaux de clients. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\doxysubsection{Detailed Description} -Définition des fonctions de \doxylink{responsable_8c}{responsable.\+c}. - - - -\doxysubsection{Function Documentation} -\Hypertarget{responsable_8c_abce68a203cf18b85ebdad34e468815f0}\label{responsable_8c_abce68a203cf18b85ebdad34e468815f0} -\index{responsable.c@{responsable.c}!ajouterArticle@{ajouterArticle}} -\index{ajouterArticle@{ajouterArticle}!responsable.c@{responsable.c}} -\doxysubsubsection{\texorpdfstring{ajouterArticle()}{ajouterArticle()}} -{\footnotesize\ttfamily int ajouter\+Article (\begin{DoxyParamCaption}\item[{int}]{t\+Ref\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Poids\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Vol\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Prix\mbox{[}$\,$\mbox{]}, }\item[{int \texorpdfstring{$\ast$}{*}}]{t\+Logique, }\item[{int}]{t\+Physique, }\item[{int}]{ref, }\item[{float}]{poids, }\item[{float}]{volume, }\item[{float}]{prix }\end{DoxyParamCaption})} - - - -Ajoute un nouvel article aux tableaux d\textquotesingle{}articles. - -Cette fonction ajoute un nouvel article aux tableaux t\+Ref, t\+Poids, t\+Vol, et t\+Prix et incrémente la taille logique. - - -\begin{DoxyParams}{Parameters} -{\em t\+Ref} & Tableau des références d\textquotesingle{}articles. \\ -\hline -{\em t\+Poids} & Tableau des poids des articles. \\ -\hline -{\em t\+Vol} & Tableau des volumes des articles. \\ -\hline -{\em t\+Prix} & Tableau des prix unitaires des articles. \\ -\hline -{\em t\+Logique} & Taille logique des tableaux. \\ -\hline -{\em t\+Physique} & Taille physique des tableaux. \\ -\hline -{\em ref} & Référence du nouvel article. \\ -\hline -{\em poids} & Poids du nouvel article. \\ -\hline -{\em volume} & Volume du nouvel article. \\ -\hline -{\em prix} & Prix unitaire du nouvel article. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -0 en cas de succès, -\/2 si le tableau est plein. -\end{DoxyReturn} -\Hypertarget{responsable_8c_a185476dbf2dae604d3deb6a3085580a2}\label{responsable_8c_a185476dbf2dae604d3deb6a3085580a2} -\index{responsable.c@{responsable.c}!ajouterClient@{ajouterClient}} -\index{ajouterClient@{ajouterClient}!responsable.c@{responsable.c}} -\doxysubsubsection{\texorpdfstring{ajouterClient()}{ajouterClient()}} -{\footnotesize\ttfamily void ajouter\+Client (\begin{DoxyParamCaption}\item[{int}]{t\+Num\+Client\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Cagnotte\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Sus\mbox{[}$\,$\mbox{]}, }\item[{int \texorpdfstring{$\ast$}{*}}]{t\+Logique, }\item[{int}]{t\+Physique }\end{DoxyParamCaption})} - - - -Ajoute un nouveau client aux tableaux de clients. - -Cette fonction ajoute un nouveau client aux tableaux t\+Num\+Client, t\+Cagnotte et t\+Sus et incrémente la taille logique. - - -\begin{DoxyParams}{Parameters} -{\em t\+Num\+Client} & Tableau des numéros de client. \\ -\hline -{\em t\+Cagnotte} & Tableau des cagnottes des clients. \\ -\hline -{\em t\+Sus} & Tableau des états de suspension des clients. \\ -\hline -{\em t\+Logique} & Pointeur vers la taille logique des tableaux. \\ -\hline -{\em t\+Physique} & Taille physique des tableaux. \\ -\hline -\end{DoxyParams} -\Hypertarget{responsable_8c_a937ddfa15445cc5d2336130fb6567ce1}\label{responsable_8c_a937ddfa15445cc5d2336130fb6567ce1} -\index{responsable.c@{responsable.c}!chargementArticles@{chargementArticles}} -\index{chargementArticles@{chargementArticles}!responsable.c@{responsable.c}} -\doxysubsubsection{\texorpdfstring{chargementArticles()}{chargementArticles()}} -{\footnotesize\ttfamily int chargement\+Articles (\begin{DoxyParamCaption}\item[{int}]{t\+Ref\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Poids\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Vol\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Prix\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Physique }\end{DoxyParamCaption})} - - - -Charge les informations des articles à partir d\textquotesingle{}un fichier dans des tableaux. - -Cette fonction lit les informations des articles à partir du fichier "{}donnee/articles.\+txt"{} et les stocke dans les tableaux t\+Ref, t\+Poids, t\+Vol, et t\+Prix. - - -\begin{DoxyParams}{Parameters} -{\em t\+Ref} & Tableau des références d\textquotesingle{}articles. \\ -\hline -{\em t\+Poids} & Tableau des poids des articles. \\ -\hline -{\em t\+Vol} & Tableau des volumes des articles. \\ -\hline -{\em t\+Prix} & Tableau des prix unitaires des articles. \\ -\hline -{\em t\+Physique} & Taille physique des tableaux. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Le nombre d\textquotesingle{}articles chargés avec succès ou -\/1 en cas d\textquotesingle{}erreur. -\end{DoxyReturn} -\Hypertarget{responsable_8c_ab02f9ff38b359630bc980bae859f7512}\label{responsable_8c_ab02f9ff38b359630bc980bae859f7512} -\index{responsable.c@{responsable.c}!modifierArticle@{modifierArticle}} -\index{modifierArticle@{modifierArticle}!responsable.c@{responsable.c}} -\doxysubsubsection{\texorpdfstring{modifierArticle()}{modifierArticle()}} -{\footnotesize\ttfamily void modifier\+Article (\begin{DoxyParamCaption}\item[{int}]{t\+Ref\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Poids\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Vol\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Prix\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Logique }\end{DoxyParamCaption})} - - - -Modifie les informations d\textquotesingle{}un article existant. - -Cette fonction permet de modifier les informations (poids, volume, prix) d\textquotesingle{}un article existant. - - -\begin{DoxyParams}{Parameters} -{\em t\+Ref} & Tableau des références d\textquotesingle{}articles. \\ -\hline -{\em t\+Poids} & Tableau des poids des articles. \\ -\hline -{\em t\+Vol} & Tableau des volumes des articles. \\ -\hline -{\em t\+Prix} & Tableau des prix unitaires des articles. \\ -\hline -{\em t\+Logique} & Taille logique des tableaux. \\ -\hline -\end{DoxyParams} -\Hypertarget{responsable_8c_a33f342ec6aaff14efce87b42350d9bee}\label{responsable_8c_a33f342ec6aaff14efce87b42350d9bee} -\index{responsable.c@{responsable.c}!rechercheRefArticle@{rechercheRefArticle}} -\index{rechercheRefArticle@{rechercheRefArticle}!responsable.c@{responsable.c}} -\doxysubsubsection{\texorpdfstring{rechercheRefArticle()}{rechercheRefArticle()}} -{\footnotesize\ttfamily void recherche\+Ref\+Article (\begin{DoxyParamCaption}\item[{int}]{t\+Ref\mbox{[}$\,$\mbox{]}, }\item[{int}]{ref, }\item[{int \texorpdfstring{$\ast$}{*}}]{index, }\item[{int}]{t\+Logique }\end{DoxyParamCaption})} - - - -Recherche une référence d\textquotesingle{}article dans le tableau t\+Ref. - -Cette fonction recherche une référence d\textquotesingle{}article dans le tableau t\+Ref et renvoie l\textquotesingle{}index si l\textquotesingle{}article est trouvé. - - -\begin{DoxyParams}{Parameters} -{\em t\+Ref} & Tableau des références d\textquotesingle{}articles. \\ -\hline -{\em ref} & Référence de l\textquotesingle{}article à rechercher. \\ -\hline -{\em index} & Pointeur vers la variable pour stocker l\textquotesingle{}index de l\textquotesingle{}article trouvé. \\ -\hline -{\em t\+Logique} & Taille logique des tableaux. \\ -\hline -\end{DoxyParams} -\Hypertarget{responsable_8c_ac9e79c89d04823f4b1b5572c9865e57d}\label{responsable_8c_ac9e79c89d04823f4b1b5572c9865e57d} -\index{responsable.c@{responsable.c}!sauvegardArticles@{sauvegardArticles}} -\index{sauvegardArticles@{sauvegardArticles}!responsable.c@{responsable.c}} -\doxysubsubsection{\texorpdfstring{sauvegardArticles()}{sauvegardArticles()}} -{\footnotesize\ttfamily void sauvegard\+Articles (\begin{DoxyParamCaption}\item[{int}]{t\+Ref\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Poids\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Vol\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Prix\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Logique }\end{DoxyParamCaption})} - - - -Sauvegarde les informations des articles dans un fichier. - -Cette fonction sauvegarde les informations des articles depuis les tableaux t\+Ref, t\+Poids, t\+Vol et t\+Prix dans le fichier "{}donnee/articles.\+txt"{}. - - -\begin{DoxyParams}{Parameters} -{\em t\+Ref} & Tableau des références d\textquotesingle{}articles. \\ -\hline -{\em t\+Poids} & Tableau des poids des articles. \\ -\hline -{\em t\+Vol} & Tableau des volumes des articles. \\ -\hline -{\em t\+Prix} & Tableau des prix unitaires des articles. \\ -\hline -{\em t\+Logique} & Taille logique des tableaux. \\ -\hline -\end{DoxyParams} -\Hypertarget{responsable_8c_a0f8076a332f73d1edca58cfaeb42167e}\label{responsable_8c_a0f8076a332f73d1edca58cfaeb42167e} -\index{responsable.c@{responsable.c}!supprimerArticle@{supprimerArticle}} -\index{supprimerArticle@{supprimerArticle}!responsable.c@{responsable.c}} -\doxysubsubsection{\texorpdfstring{supprimerArticle()}{supprimerArticle()}} -{\footnotesize\ttfamily void supprimer\+Article (\begin{DoxyParamCaption}\item[{int}]{t\+Ref\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Poids\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Vol\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Prix\mbox{[}$\,$\mbox{]}, }\item[{int \texorpdfstring{$\ast$}{*}}]{t\+Logique }\end{DoxyParamCaption})} - - - -Supprime un article des tableaux d\textquotesingle{}articles. - -Cette fonction supprime un article des tableaux t\+Ref, t\+Poids, t\+Vol, et t\+Prix et met à jour la taille logique. - - -\begin{DoxyParams}{Parameters} -{\em t\+Ref} & Tableau des références d\textquotesingle{}articles. \\ -\hline -{\em t\+Poids} & Tableau des poids des articles. \\ -\hline -{\em t\+Vol} & Tableau des volumes des articles. \\ -\hline -{\em t\+Prix} & Tableau des prix unitaires des articles. \\ -\hline -{\em t\+Logique} & Pointeur vers la taille logique des tableaux. \\ -\hline -\end{DoxyParams} diff --git a/docs/latex/responsable_8h.tex b/docs/latex/responsable_8h.tex deleted file mode 100644 index 2ad71b9..0000000 --- a/docs/latex/responsable_8h.tex +++ /dev/null @@ -1,222 +0,0 @@ -\doxysection{src/app/core\+\_\+logic/responsable.h File Reference} -\hypertarget{responsable_8h}{}\label{responsable_8h}\index{src/app/core\_logic/responsable.h@{src/app/core\_logic/responsable.h}} - - -Déclaration des fonctions de \doxylink{responsable_8c}{responsable.\+c}. - - -{\ttfamily \#include $<$stdio.\+h$>$}\newline -\doxysubsubsection*{Functions} -\begin{DoxyCompactItemize} -\item -int \mbox{\hyperlink{responsable_8h_a937ddfa15445cc5d2336130fb6567ce1}{chargement\+Articles}} (int t\+Ref\mbox{[}$\,$\mbox{]}, float t\+Poids\mbox{[}$\,$\mbox{]}, float t\+Vol\mbox{[}$\,$\mbox{]}, float t\+Prix\mbox{[}$\,$\mbox{]}, int t\+Physique) -\begin{DoxyCompactList}\small\item\em Charge les informations des articles à partir d\textquotesingle{}un fichier dans des tableaux. \end{DoxyCompactList}\item -void \mbox{\hyperlink{responsable_8h_ac9e79c89d04823f4b1b5572c9865e57d}{sauvegard\+Articles}} (int t\+Ref\mbox{[}$\,$\mbox{]}, float t\+Poids\mbox{[}$\,$\mbox{]}, float t\+Vol\mbox{[}$\,$\mbox{]}, float t\+Prix\mbox{[}$\,$\mbox{]}, int t\+Logique) -\begin{DoxyCompactList}\small\item\em Sauvegarde les informations des articles dans un fichier. \end{DoxyCompactList}\item -int \mbox{\hyperlink{responsable_8h_abce68a203cf18b85ebdad34e468815f0}{ajouter\+Article}} (int t\+Ref\mbox{[}$\,$\mbox{]}, float t\+Poids\mbox{[}$\,$\mbox{]}, float t\+Vol\mbox{[}$\,$\mbox{]}, float t\+Prix\mbox{[}$\,$\mbox{]}, int \texorpdfstring{$\ast$}{*}t\+Logique, int t\+Physique, int ref, float poids, float volume, float prix) -\begin{DoxyCompactList}\small\item\em Ajoute un nouvel article aux tableaux d\textquotesingle{}articles. \end{DoxyCompactList}\item -void \mbox{\hyperlink{responsable_8h_a33f342ec6aaff14efce87b42350d9bee}{recherche\+Ref\+Article}} (int t\+Ref\mbox{[}$\,$\mbox{]}, int ref, int \texorpdfstring{$\ast$}{*}index, int t\+Logique) -\begin{DoxyCompactList}\small\item\em Recherche une référence d\textquotesingle{}article dans le tableau t\+Ref. \end{DoxyCompactList}\item -void \mbox{\hyperlink{responsable_8h_a0f8076a332f73d1edca58cfaeb42167e}{supprimer\+Article}} (int t\+Ref\mbox{[}$\,$\mbox{]}, float t\+Poids\mbox{[}$\,$\mbox{]}, float t\+Vol\mbox{[}$\,$\mbox{]}, float t\+Prix\mbox{[}$\,$\mbox{]}, int \texorpdfstring{$\ast$}{*}t\+Logique) -\begin{DoxyCompactList}\small\item\em Supprime un article des tableaux d\textquotesingle{}articles. \end{DoxyCompactList}\item -void \mbox{\hyperlink{responsable_8h_ab02f9ff38b359630bc980bae859f7512}{modifier\+Article}} (int t\+Ref\mbox{[}$\,$\mbox{]}, float t\+Poids\mbox{[}$\,$\mbox{]}, float t\+Vol\mbox{[}$\,$\mbox{]}, float t\+Prix\mbox{[}$\,$\mbox{]}, int t\+Logique) -\begin{DoxyCompactList}\small\item\em Modifie les informations d\textquotesingle{}un article existant. \end{DoxyCompactList}\item -void \mbox{\hyperlink{responsable_8h_a185476dbf2dae604d3deb6a3085580a2}{ajouter\+Client}} (int t\+Num\+Client\mbox{[}$\,$\mbox{]}, float t\+Cagnotte\mbox{[}$\,$\mbox{]}, int t\+Sus\mbox{[}$\,$\mbox{]}, int \texorpdfstring{$\ast$}{*}t\+Logique, int t\+Physique) -\begin{DoxyCompactList}\small\item\em Ajoute un nouveau client aux tableaux de clients. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\doxysubsection{Detailed Description} -Déclaration des fonctions de \doxylink{responsable_8c}{responsable.\+c}. - - - -\doxysubsection{Function Documentation} -\Hypertarget{responsable_8h_abce68a203cf18b85ebdad34e468815f0}\label{responsable_8h_abce68a203cf18b85ebdad34e468815f0} -\index{responsable.h@{responsable.h}!ajouterArticle@{ajouterArticle}} -\index{ajouterArticle@{ajouterArticle}!responsable.h@{responsable.h}} -\doxysubsubsection{\texorpdfstring{ajouterArticle()}{ajouterArticle()}} -{\footnotesize\ttfamily int ajouter\+Article (\begin{DoxyParamCaption}\item[{int}]{t\+Ref\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Poids\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Vol\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Prix\mbox{[}$\,$\mbox{]}, }\item[{int \texorpdfstring{$\ast$}{*}}]{t\+Logique, }\item[{int}]{t\+Physique, }\item[{int}]{ref, }\item[{float}]{poids, }\item[{float}]{volume, }\item[{float}]{prix }\end{DoxyParamCaption})} - - - -Ajoute un nouvel article aux tableaux d\textquotesingle{}articles. - -Cette fonction ajoute un nouvel article aux tableaux t\+Ref, t\+Poids, t\+Vol, et t\+Prix et incrémente la taille logique. - - -\begin{DoxyParams}{Parameters} -{\em t\+Ref} & Tableau des références d\textquotesingle{}articles. \\ -\hline -{\em t\+Poids} & Tableau des poids des articles. \\ -\hline -{\em t\+Vol} & Tableau des volumes des articles. \\ -\hline -{\em t\+Prix} & Tableau des prix unitaires des articles. \\ -\hline -{\em t\+Logique} & Taille logique des tableaux. \\ -\hline -{\em t\+Physique} & Taille physique des tableaux. \\ -\hline -{\em ref} & Référence du nouvel article. \\ -\hline -{\em poids} & Poids du nouvel article. \\ -\hline -{\em volume} & Volume du nouvel article. \\ -\hline -{\em prix} & Prix unitaire du nouvel article. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -0 en cas de succès, -\/2 si le tableau est plein. -\end{DoxyReturn} -\Hypertarget{responsable_8h_a185476dbf2dae604d3deb6a3085580a2}\label{responsable_8h_a185476dbf2dae604d3deb6a3085580a2} -\index{responsable.h@{responsable.h}!ajouterClient@{ajouterClient}} -\index{ajouterClient@{ajouterClient}!responsable.h@{responsable.h}} -\doxysubsubsection{\texorpdfstring{ajouterClient()}{ajouterClient()}} -{\footnotesize\ttfamily void ajouter\+Client (\begin{DoxyParamCaption}\item[{int}]{t\+Num\+Client\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Cagnotte\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Sus\mbox{[}$\,$\mbox{]}, }\item[{int \texorpdfstring{$\ast$}{*}}]{t\+Logique, }\item[{int}]{t\+Physique }\end{DoxyParamCaption})} - - - -Ajoute un nouveau client aux tableaux de clients. - -Cette fonction ajoute un nouveau client aux tableaux t\+Num\+Client, t\+Cagnotte et t\+Sus et incrémente la taille logique. - - -\begin{DoxyParams}{Parameters} -{\em t\+Num\+Client} & Tableau des numéros de client. \\ -\hline -{\em t\+Cagnotte} & Tableau des cagnottes des clients. \\ -\hline -{\em t\+Sus} & Tableau des états de suspension des clients. \\ -\hline -{\em t\+Logique} & Pointeur vers la taille logique des tableaux. \\ -\hline -{\em t\+Physique} & Taille physique des tableaux. \\ -\hline -\end{DoxyParams} -\Hypertarget{responsable_8h_a937ddfa15445cc5d2336130fb6567ce1}\label{responsable_8h_a937ddfa15445cc5d2336130fb6567ce1} -\index{responsable.h@{responsable.h}!chargementArticles@{chargementArticles}} -\index{chargementArticles@{chargementArticles}!responsable.h@{responsable.h}} -\doxysubsubsection{\texorpdfstring{chargementArticles()}{chargementArticles()}} -{\footnotesize\ttfamily int chargement\+Articles (\begin{DoxyParamCaption}\item[{int}]{t\+Ref\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Poids\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Vol\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Prix\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Physique }\end{DoxyParamCaption})} - - - -Charge les informations des articles à partir d\textquotesingle{}un fichier dans des tableaux. - -Cette fonction lit les informations des articles à partir du fichier "{}donnee/articles.\+txt"{} et les stocke dans les tableaux t\+Ref, t\+Poids, t\+Vol, et t\+Prix. - - -\begin{DoxyParams}{Parameters} -{\em t\+Ref} & Tableau des références d\textquotesingle{}articles. \\ -\hline -{\em t\+Poids} & Tableau des poids des articles. \\ -\hline -{\em t\+Vol} & Tableau des volumes des articles. \\ -\hline -{\em t\+Prix} & Tableau des prix unitaires des articles. \\ -\hline -{\em t\+Physique} & Taille physique des tableaux. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Le nombre d\textquotesingle{}articles chargés avec succès ou -\/1 en cas d\textquotesingle{}erreur. -\end{DoxyReturn} -\Hypertarget{responsable_8h_ab02f9ff38b359630bc980bae859f7512}\label{responsable_8h_ab02f9ff38b359630bc980bae859f7512} -\index{responsable.h@{responsable.h}!modifierArticle@{modifierArticle}} -\index{modifierArticle@{modifierArticle}!responsable.h@{responsable.h}} -\doxysubsubsection{\texorpdfstring{modifierArticle()}{modifierArticle()}} -{\footnotesize\ttfamily void modifier\+Article (\begin{DoxyParamCaption}\item[{int}]{t\+Ref\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Poids\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Vol\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Prix\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Logique }\end{DoxyParamCaption})} - - - -Modifie les informations d\textquotesingle{}un article existant. - -Cette fonction permet de modifier les informations (poids, volume, prix) d\textquotesingle{}un article existant. - - -\begin{DoxyParams}{Parameters} -{\em t\+Ref} & Tableau des références d\textquotesingle{}articles. \\ -\hline -{\em t\+Poids} & Tableau des poids des articles. \\ -\hline -{\em t\+Vol} & Tableau des volumes des articles. \\ -\hline -{\em t\+Prix} & Tableau des prix unitaires des articles. \\ -\hline -{\em t\+Logique} & Taille logique des tableaux. \\ -\hline -\end{DoxyParams} -\Hypertarget{responsable_8h_a33f342ec6aaff14efce87b42350d9bee}\label{responsable_8h_a33f342ec6aaff14efce87b42350d9bee} -\index{responsable.h@{responsable.h}!rechercheRefArticle@{rechercheRefArticle}} -\index{rechercheRefArticle@{rechercheRefArticle}!responsable.h@{responsable.h}} -\doxysubsubsection{\texorpdfstring{rechercheRefArticle()}{rechercheRefArticle()}} -{\footnotesize\ttfamily void recherche\+Ref\+Article (\begin{DoxyParamCaption}\item[{int}]{t\+Ref\mbox{[}$\,$\mbox{]}, }\item[{int}]{ref, }\item[{int \texorpdfstring{$\ast$}{*}}]{index, }\item[{int}]{t\+Logique }\end{DoxyParamCaption})} - - - -Recherche une référence d\textquotesingle{}article dans le tableau t\+Ref. - -Cette fonction recherche une référence d\textquotesingle{}article dans le tableau t\+Ref et renvoie l\textquotesingle{}index si l\textquotesingle{}article est trouvé. - - -\begin{DoxyParams}{Parameters} -{\em t\+Ref} & Tableau des références d\textquotesingle{}articles. \\ -\hline -{\em ref} & Référence de l\textquotesingle{}article à rechercher. \\ -\hline -{\em index} & Pointeur vers la variable pour stocker l\textquotesingle{}index de l\textquotesingle{}article trouvé. \\ -\hline -{\em t\+Logique} & Taille logique des tableaux. \\ -\hline -\end{DoxyParams} -\Hypertarget{responsable_8h_ac9e79c89d04823f4b1b5572c9865e57d}\label{responsable_8h_ac9e79c89d04823f4b1b5572c9865e57d} -\index{responsable.h@{responsable.h}!sauvegardArticles@{sauvegardArticles}} -\index{sauvegardArticles@{sauvegardArticles}!responsable.h@{responsable.h}} -\doxysubsubsection{\texorpdfstring{sauvegardArticles()}{sauvegardArticles()}} -{\footnotesize\ttfamily void sauvegard\+Articles (\begin{DoxyParamCaption}\item[{int}]{t\+Ref\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Poids\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Vol\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Prix\mbox{[}$\,$\mbox{]}, }\item[{int}]{t\+Logique }\end{DoxyParamCaption})} - - - -Sauvegarde les informations des articles dans un fichier. - -Cette fonction sauvegarde les informations des articles depuis les tableaux t\+Ref, t\+Poids, t\+Vol et t\+Prix dans le fichier "{}donnee/articles.\+txt"{}. - - -\begin{DoxyParams}{Parameters} -{\em t\+Ref} & Tableau des références d\textquotesingle{}articles. \\ -\hline -{\em t\+Poids} & Tableau des poids des articles. \\ -\hline -{\em t\+Vol} & Tableau des volumes des articles. \\ -\hline -{\em t\+Prix} & Tableau des prix unitaires des articles. \\ -\hline -{\em t\+Logique} & Taille logique des tableaux. \\ -\hline -\end{DoxyParams} -\Hypertarget{responsable_8h_a0f8076a332f73d1edca58cfaeb42167e}\label{responsable_8h_a0f8076a332f73d1edca58cfaeb42167e} -\index{responsable.h@{responsable.h}!supprimerArticle@{supprimerArticle}} -\index{supprimerArticle@{supprimerArticle}!responsable.h@{responsable.h}} -\doxysubsubsection{\texorpdfstring{supprimerArticle()}{supprimerArticle()}} -{\footnotesize\ttfamily void supprimer\+Article (\begin{DoxyParamCaption}\item[{int}]{t\+Ref\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Poids\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Vol\mbox{[}$\,$\mbox{]}, }\item[{float}]{t\+Prix\mbox{[}$\,$\mbox{]}, }\item[{int \texorpdfstring{$\ast$}{*}}]{t\+Logique }\end{DoxyParamCaption})} - - - -Supprime un article des tableaux d\textquotesingle{}articles. - -Cette fonction supprime un article des tableaux t\+Ref, t\+Poids, t\+Vol, et t\+Prix et met à jour la taille logique. - - -\begin{DoxyParams}{Parameters} -{\em t\+Ref} & Tableau des références d\textquotesingle{}articles. \\ -\hline -{\em t\+Poids} & Tableau des poids des articles. \\ -\hline -{\em t\+Vol} & Tableau des volumes des articles. \\ -\hline -{\em t\+Prix} & Tableau des prix unitaires des articles. \\ -\hline -{\em t\+Logique} & Pointeur vers la taille logique des tableaux. \\ -\hline -\end{DoxyParams} diff --git a/docs/latex/responsable_8h_source.tex b/docs/latex/responsable_8h_source.tex deleted file mode 100644 index 286c85d..0000000 --- a/docs/latex/responsable_8h_source.tex +++ /dev/null @@ -1,22 +0,0 @@ -\doxysection{responsable.\+h} -\hypertarget{responsable_8h_source}{}\label{responsable_8h_source}\index{src/app/core\_logic/responsable.h@{src/app/core\_logic/responsable.h}} -\mbox{\hyperlink{responsable_8h}{Go to the documentation of this file.}} -\begin{DoxyCode}{0} -\DoxyCodeLine{00001\ } -\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#include\ }} -\DoxyCodeLine{00007\ } -\DoxyCodeLine{00021\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{responsable_8h_a937ddfa15445cc5d2336130fb6567ce1}{chargementArticles}}(\textcolor{keywordtype}{int}\ tRef[],\ \textcolor{keywordtype}{float}\ tPoids[],\ \textcolor{keywordtype}{float}\ tVol[],\ \textcolor{keywordtype}{float}\ tPrix[],\ \textcolor{keywordtype}{int}\ tPhysique);} -\DoxyCodeLine{00022\ } -\DoxyCodeLine{00035\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{responsable_8h_ac9e79c89d04823f4b1b5572c9865e57d}{sauvegardArticles}}(\textcolor{keywordtype}{int}\ tRef[],\ \textcolor{keywordtype}{float}\ tPoids[],\ \textcolor{keywordtype}{float}\ tVol[],\ \textcolor{keywordtype}{float}\ tPrix[],\ \textcolor{keywordtype}{int}\ tLogique);} -\DoxyCodeLine{00036\ } -\DoxyCodeLine{00054\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{responsable_8h_abce68a203cf18b85ebdad34e468815f0}{ajouterArticle}}(\textcolor{keywordtype}{int}\ tRef[],\ \textcolor{keywordtype}{float}\ tPoids[],\ \textcolor{keywordtype}{float}\ tVol[],\ \textcolor{keywordtype}{float}\ tPrix[],\ \textcolor{keywordtype}{int}\ *tLogique,\ \textcolor{keywordtype}{int}\ tPhysique,\ \textcolor{keywordtype}{int}\ ref,\ \textcolor{keywordtype}{float}\ poids,\ \textcolor{keywordtype}{float}\ volume,\ \textcolor{keywordtype}{float}\ prix);} -\DoxyCodeLine{00055\ } -\DoxyCodeLine{00066\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{responsable_8h_a33f342ec6aaff14efce87b42350d9bee}{rechercheRefArticle}}(\textcolor{keywordtype}{int}\ tRef[],\ \textcolor{keywordtype}{int}\ ref,\ \textcolor{keywordtype}{int}\ *index,\ \textcolor{keywordtype}{int}\ tLogique);} -\DoxyCodeLine{00067\ } -\DoxyCodeLine{00079\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{responsable_8h_a0f8076a332f73d1edca58cfaeb42167e}{supprimerArticle}}(\textcolor{keywordtype}{int}\ tRef[],\ \textcolor{keywordtype}{float}\ tPoids[],\ \textcolor{keywordtype}{float}\ tVol[],\ \textcolor{keywordtype}{float}\ tPrix[],\ \textcolor{keywordtype}{int}\ *tLogique);} -\DoxyCodeLine{00080\ } -\DoxyCodeLine{00092\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{responsable_8h_ab02f9ff38b359630bc980bae859f7512}{modifierArticle}}(\textcolor{keywordtype}{int}\ tRef[],\ \textcolor{keywordtype}{float}\ tPoids[],\ \textcolor{keywordtype}{float}\ tVol[],\ \textcolor{keywordtype}{float}\ tPrix[],\ \textcolor{keywordtype}{int}\ tLogique);} -\DoxyCodeLine{00093\ } -\DoxyCodeLine{00105\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{responsable_8h_a185476dbf2dae604d3deb6a3085580a2}{ajouterClient}}(\textcolor{keywordtype}{int}\ tNumClient[],\ \textcolor{keywordtype}{float}\ tCagnotte[],\ \textcolor{keywordtype}{int}\ tSus[],\ \textcolor{keywordtype}{int}\ *tLogique,\ \textcolor{keywordtype}{int}\ tPhysique);} - -\end{DoxyCode} diff --git a/docs/latex/tabu_doxygen.sty b/docs/latex/tabu_doxygen.sty deleted file mode 100644 index 3f17d1d..0000000 --- a/docs/latex/tabu_doxygen.sty +++ /dev/null @@ -1,2557 +0,0 @@ -%% -%% This is file `tabu.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% tabu.dtx (with options: `package') -%% -%% This is a generated file. -%% Copyright (FC) 2010-2011 - lppl -%% -%% tabu : 2011/02/26 v2.8 - tabu : Flexible LaTeX tabulars -%% -%% ********************************************************************************************** -%% \begin{tabu} { preamble } => default target: \linewidth or \linegoal -%% \begin{tabu} to { preamble } => target specified -%% \begin{tabu} spread { preamble } => target relative to the ``natural width'' -%% -%% tabu works in text and in math modes. -%% -%% X columns: automatic width adjustment + horizontal and vertical alignment -%% \begin{tabu} { X[4c] X[1c] X[-2ml] } -%% -%% Horizontal lines and / or leaders: -%% \hline\hline => double horizontal line -%% \firsthline\hline => for nested tabulars -%% \lasthline\hline => for nested tabulars -%% \tabucline[line spec]{column-column} => ``funny'' lines (dash/leader) -%% Automatic lines / leaders : -%% \everyrow{\hline\hline} -%% -%% Vertical lines and / or leaders: -%% \begin{tabu} { |[3pt red] X[4c] X[1c] X[-2ml] |[3pt blue] } -%% \begin{tabu} { |[3pt red] X[4c] X[1c] X[-2ml] |[3pt on 2pt off 4pt blue] } -%% -%% Fixed vertical spacing adjustment: -%% \extrarowheight= \extrarowdepth= -%% or: \extrarowsep= => may be prefixed by \global -%% -%% Dynamic vertical spacing adjustment: -%% \abovetabulinesep= \belowtabulinesep= -%% or: \tabulinesep= => may be prefixed by \global -%% -%% delarray.sty shortcuts: in math and text modes -%% \begin{tabu} .... \({ preamble }\) -%% -%% Algorithms reports: -%% \tracingtabu=1 \tracingtabu=2 -%% -%% ********************************************************************************************** -%% -%% 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 -%% -%% This work consists of the main source file tabu.dtx -%% and the derived files -%% tabu.sty, tabu.pdf, tabu.ins -%% -%% tabu : Flexible LaTeX tabulars -%% lppl copyright 2010-2011 by FC -%% - -\NeedsTeXFormat{LaTeX2e}[2005/12/01] -\ProvidesPackage{tabu_doxygen}[2011/02/26 v2.8 - flexible LaTeX tabulars (FC), frozen version for doxygen] -\RequirePackage{array}[2008/09/09] -\RequirePackage{varwidth}[2009/03/30] -\AtEndOfPackage{\tabu@AtEnd \let\tabu@AtEnd \@undefined} -\let\tabu@AtEnd\@empty -\def\TMP@EnsureCode#1={% - \edef\tabu@AtEnd{\tabu@AtEnd - \catcode#1 \the\catcode#1}% - \catcode#1=% -}% \TMP@EnsureCode -\TMP@EnsureCode 33 = 12 % ! -\TMP@EnsureCode 58 = 12 % : (for siunitx) -\TMP@EnsureCode124 = 12 % | -\TMP@EnsureCode 36 = 3 % $ = math shift -\TMP@EnsureCode 38 = 4 % & = tab alignment character -\TMP@EnsureCode 32 = 10 % space -\TMP@EnsureCode 94 = 7 % ^ -\TMP@EnsureCode 95 = 8 % _ -%% Constants -------------------------------------------------------- -\newcount \c@taburow \def\thetaburow {\number\c@taburow} -\newcount \tabu@nbcols -\newcount \tabu@cnt -\newcount \tabu@Xcol -\let\tabu@start \@tempcnta -\let\tabu@stop \@tempcntb -\newcount \tabu@alloc \tabu@alloc=\m@ne -\newcount \tabu@nested -\def\tabu@alloc@{\global\advance\tabu@alloc \@ne \tabu@nested\tabu@alloc} -\newdimen \tabu@target -\newdimen \tabu@spreadtarget -\newdimen \tabu@naturalX -\newdimen \tabucolX -\let\tabu@DELTA \@tempdimc -\let\tabu@thick \@tempdima -\let\tabu@on \@tempdimb -\let\tabu@off \@tempdimc -\newdimen \tabu@Xsum -\newdimen \extrarowdepth -\newdimen \abovetabulinesep -\newdimen \belowtabulinesep -\newdimen \tabustrutrule \tabustrutrule \z@ -\newtoks \tabu@thebody -\newtoks \tabu@footnotes -\newsavebox \tabu@box -\newsavebox \tabu@arstrutbox -\newsavebox \tabu@hleads -\newsavebox \tabu@vleads -\newif \iftabu@colortbl -\newif \iftabu@siunitx -\newif \iftabu@measuring -\newif \iftabu@spread -\newif \iftabu@negcoef -\newif \iftabu@everyrow -\def\tabu@everyrowtrue {\global\let\iftabu@everyrow \iftrue} -\def\tabu@everyrowfalse{\global\let\iftabu@everyrow \iffalse} -\newif \iftabu@long -\newif \iftabuscantokens -\def\tabu@rescan {\tabu@verbatim \scantokens } -%% Utilities (for internal usage) ----------------------------------- -\def\tabu@gobblespace #1 {#1} -\def\tabu@gobbletoken #1#2{#1} -\def\tabu@gobbleX{\futurelet\@let@token \tabu@gobblex} -\def\tabu@gobblex{\if ^^J\noexpand\@let@token \expandafter\@gobble - \else\ifx \@sptoken\@let@token - \expandafter\tabu@gobblespace\expandafter\tabu@gobbleX - \fi\fi -}% \tabu@gobblex -\def\tabu@X{^^J} -{\obeyspaces -\global\let\tabu@spxiii= % saves an active space (for \ifx) -\gdef\tabu@@spxiii{ }} -\def\tabu@ifenvir {% only for \multicolumn - \expandafter\tabu@if@nvir\csname\@currenvir\endcsname -}% \tabu@ifenvir -\def\tabu@if@nvir #1{\csname @\ifx\tabu#1first\else - \ifx\longtabu#1first\else - second\fi\fi oftwo\endcsname -}% \tabu@ifenvir -\def\tabu@modulo #1#2{\numexpr\ifnum\numexpr#1=\z@ 0\else #1-(#1-(#2-1)/2)/(#2)*(#2)\fi} -{\catcode`\&=3 -\gdef\tabu@strtrim #1{% #1 = control sequence to trim - \ifodd 1\ifx #1\@empty \else \ifx #1\space \else 0\fi \fi - \let\tabu@c@l@r \@empty \let#1\@empty - \else \expandafter \tabu@trimspaces #1\@nnil - \fi -}% \tabu@strtrim -\gdef\tabu@trimspaces #1\@nnil{\let\tabu@c@l@r=#2\tabu@firstspace .#1& }% -\gdef\tabu@firstspace #1#2#3 &{\tabu@lastspace #2#3&} -\gdef\tabu@lastspace #1{\def #3{#1}% - \ifx #3\tabu@c@l@r \def\tabu@c@l@r{\protect\color{#1}}\expandafter\remove@to@nnil \fi - \tabu@trimspaces #1\@nnil} -}% \catcode -\def\tabu@sanitizearg #1#2{{% - \csname \ifcsname if@safe@actives\endcsname % - @safe@activestrue\else - relax\fi \endcsname - \edef#2{#1}\tabu@strtrim#2\@onelevel@sanitize#2% - \expandafter}\expandafter\def\expandafter#2\expandafter{#2}% -}% \tabu@sanitizearg -\def\tabu@textbar #1{\begingroup \endlinechar\m@ne \scantokens{\def\:{|}}% - \expandafter\endgroup \expandafter#1\:% !!! semi simple group !!! -}% \tabu@textbar -\def\tabu@everyrow@bgroup{\iftabu@everyrow \begingroup \else \noalign{\ifnum0=`}\fi \fi} -\def\tabu@everyrow@egroup{% - \iftabu@everyrow \expandafter \endgroup \the\toks@ - \else \ifnum0=`{\fi}% - \fi -}% \tabu@everyrow@egroup -\def\tabu@arstrut {\global\setbox\@arstrutbox \hbox{\vrule - height \arraystretch \dimexpr\ht\strutbox+\extrarowheight - depth \arraystretch \dimexpr\dp\strutbox+\extrarowdepth - width \z@}% -}% \tabu@arstrut -\def\tabu@rearstrut {% - \@tempdima \arraystretch\dimexpr\ht\strutbox+\extrarowheight \relax - \@tempdimb \arraystretch\dimexpr\dp\strutbox+\extrarowdepth \relax - \ifodd 1\ifdim \ht\@arstrutbox=\@tempdima - \ifdim \dp\@arstrutbox=\@tempdimb 0 \fi\fi - \tabu@mkarstrut - \fi -}% \tabu@rearstrut -\def\tabu@@DBG #1{\ifdim\tabustrutrule>\z@ \color{#1}\fi} -\def\tabu@DBG@arstrut {\global\setbox\@arstrutbox - \hbox to\z@{\hbox to\z@{\hss - {\tabu@DBG{cyan}\vrule - height \arraystretch \dimexpr\ht\strutbox+\extrarowheight - depth \z@ - width \tabustrutrule}\kern-\tabustrutrule - {\tabu@DBG{pink}\vrule - height \z@ - depth \arraystretch \dimexpr\dp\strutbox+\extrarowdepth - width \tabustrutrule}}}% -}% \tabu@DBG@arstrut -\def\tabu@save@decl{\toks\count@ \expandafter{\the\toks\expandafter\count@ - \@nextchar}}% -\def\tabu@savedecl{\ifcat$\d@llarend\else - \let\save@decl \tabu@save@decl \fi % no inversion of tokens in text mode -}% \tabu@savedecl -\def\tabu@finalstrut #1{\unskip\ifhmode\nobreak\fi\vrule height\z@ depth\z@ width\z@} -\newcommand*\tabuDisableCommands {\g@addto@macro\tabu@trialh@@k } -\let\tabu@trialh@@k \@empty -\def\tabu@nowrite #1#{{\afterassignment}\toks@} -\let\tabu@write\write -\let\tabu@immediate\immediate -\def\tabu@WRITE{\begingroup - \def\immediate\write{\aftergroup\endgroup - \tabu@immediate\tabu@write}% -}% \tabu@WRITE -\expandafter\def\expandafter\tabu@GenericError\expandafter{% - \expandafter\tabu@WRITE\GenericError} -\def\tabu@warn{\tabu@WRITE\PackageWarning{tabu}} -\def\tabu@noxfootnote [#1]{\@gobble} -\def\tabu@nocolor #1#{\@gobble} -\newcommand*\tabu@norowcolor[2][]{} -\def\tabu@maybesiunitx #1{\def\tabu@temp{#1}% - \futurelet\@let@token \tabu@m@ybesiunitx} -\def\tabu@m@ybesiunitx #1{\def\tabu@m@ybesiunitx {% - \ifx #1\@let@token \let\tabu@cellleft \@empty \let\tabu@cellright \@empty \fi - \tabu@temp}% \tabu@m@ybesiunitx -}\expandafter\tabu@m@ybesiunitx \csname siunitx_table_collect_begin:Nn\endcsname -\def\tabu@celllalign@def #1{\def\tabu@celllalign{\tabu@maybesiunitx{#1}}}% -%% Fixed vertical spacing adjustment: \extrarowsep ------------------ -\newcommand*\extrarowsep{\edef\tabu@C@extra{\the\numexpr\tabu@C@extra+1}% - \iftabu@everyrow \aftergroup\tabu@Gextra - \else \aftergroup\tabu@n@Gextra - \fi - \@ifnextchar={\tabu@gobbletoken\tabu@extra} \tabu@extra -}% \extrarowsep -\def\tabu@extra {\@ifnextchar_% - {\tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}} - {\ifx ^\@let@token \def\tabu@temp{% - \tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}}% - \else \let\tabu@temp \@empty - \afterassignment \tabu@setextrasep \extrarowdepth - \fi \tabu@temp}% -}% \tabu@extra -\def\tabu@setextra #1#2{\def\tabu@temp{\tabu@extr@#1#2}\afterassignment\tabu@temp#2} -\def\tabu@extr@ #1#2{\@ifnextchar^% - {\tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}} - {\ifx _\@let@token \def\tabu@temp{% - \tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}}% - \else \let\tabu@temp \@empty - \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth - \fi \tabu@temp}% -}% \tabu@extr@ -\def\tabu@setextrasep {\extrarowheight=\extrarowdepth - \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth -}% \tabu@setextrasep -\def\tabu@Gextra{\ifx \tabu@G@extra\@empty \else {\tabu@Rextra}\fi} -\def\tabu@n@Gextra{\ifx \tabu@G@extra\@empty \else \noalign{\tabu@Rextra}\fi} -\def\tabu@Rextra{\tabu@Grestore \tabu@G@extra \tabu@C@extra} -\let\tabu@C@extra \z@ -\let\tabu@G@extra \@empty -%% Dynamic vertical spacing adjustment: \tabulinesep ---------------- -\newcommand*\tabulinesep{\edef\tabu@C@linesep{\the\numexpr\tabu@C@linesep+1}% - \iftabu@everyrow \aftergroup\tabu@Glinesep - \else \aftergroup\tabu@n@Glinesep - \fi - \@ifnextchar={\tabu@gobbletoken\tabu@linesep} \tabu@linesep -}% \tabulinesep -\def\tabu@linesep {\@ifnextchar_% - {\tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}} - {\ifx ^\@let@token \def\tabu@temp{% - \tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}}% - \else \let\tabu@temp \@empty - \afterassignment \tabu@setlinesep \abovetabulinesep - \fi \tabu@temp}% -}% \tabu@linesep -\def\tabu@setsep #1#2{\def\tabu@temp{\tabu@sets@p#1#2}\afterassignment\tabu@temp#2} -\def\tabu@sets@p #1#2{\@ifnextchar^% - {\tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}} - {\ifx _\@let@token \def\tabu@temp{% - \tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}}% - \else \let\tabu@temp \@empty - \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep - \fi \tabu@temp}% -}% \tabu@sets@p -\def\tabu@setlinesep {\belowtabulinesep=\abovetabulinesep - \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep -}% \tabu@setlinesep -\def\tabu@Glinesep{\ifx \tabu@G@linesep\@empty \else {\tabu@Rlinesep}\fi} -\def\tabu@n@Glinesep{\ifx \tabu@G@linesep\@empty \else \noalign{\tabu@Rlinesep}\fi} -\def\tabu@Rlinesep{\tabu@Grestore \tabu@G@linesep \tabu@C@linesep} -\let\tabu@C@linesep \z@ -\let\tabu@G@linesep \@empty -%% \global\extrarowsep and \global\tabulinesep ------------------- -\def\tabu@Gsave #1#2#3#4{\xdef#1{#1% - \toks#2{\toks\the\currentgrouplevel{\global#3\the#3\global#4\the#4}}}% -}% \tabu@Gsave -\def\tabu@Grestore#1#2{% - \toks#2{}#1\toks\currentgrouplevel\expandafter{\expandafter}\the\toks#2\relax - \ifcat$\the\toks\currentgrouplevel$\else - \global\let#1\@empty \global\let#2\z@ - \the\toks\currentgrouplevel - \fi -}% \tabu@Grestore -%% Setting code for every row --------------------------------------- -\newcommand*\everyrow{\tabu@everyrow@bgroup - \tabu@start \z@ \tabu@stop \z@ \tabu@evrstartstop -}% \everyrow -\def\tabu@evrstartstop {\@ifnextchar^% - {\afterassignment \tabu@evrstartstop \tabu@stop=}% - {\ifx ^\@let@token - \afterassignment\tabu@evrstartstop \tabu@start=% - \else \afterassignment\tabu@everyr@w \toks@ - \fi}% -}% \tabu@evrstartstop -\def\tabu@everyr@w {% - \xdef\tabu@everyrow{% - \noexpand\tabu@everyrowfalse - \let\noalign \relax - \noexpand\tabu@rowfontreset - \iftabu@colortbl \noexpand\tabu@rc@ \fi % \taburowcolors - \let\noexpand\tabu@docline \noexpand\tabu@docline@evr - \the\toks@ - \noexpand\tabu@evrh@@k - \noexpand\tabu@rearstrut - \global\advance\c@taburow \@ne}% - \iftabu@everyrow \toks@\expandafter - {\expandafter\def\expandafter\tabu@evr@L\expandafter{\the\toks@}\ignorespaces}% - \else \xdef\tabu@evr@G{\the\toks@}% - \fi - \tabu@everyrow@egroup -}% \tabu@everyr@w -\def\tabu@evr {\def\tabu@evrh@@k} % for internal use only -\tabu@evr{} -%% line style and leaders ------------------------------------------- -\newcommand*\newtabulinestyle [1]{% - {\@for \@tempa :=#1\do{\expandafter\tabu@newlinestyle \@tempa==\@nil}}% -}% \newtabulinestyle -\def\tabu@newlinestyle #1=#2=#3\@nil{\tabu@getline {#2}% - \tabu@sanitizearg {#1}\@tempa - \ifodd 1\ifx \@tempa\@empty \ifdefined\tabu@linestyle@ 0 \fi\fi - \global\expandafter\let - \csname tabu@linestyle@\@tempa \endcsname =\tabu@thestyle \fi -}% \tabu@newlinestyle -\newcommand*\tabulinestyle [1]{\tabu@everyrow@bgroup \tabu@getline{#1}% - \iftabu@everyrow - \toks@\expandafter{\expandafter \def \expandafter - \tabu@ls@L\expandafter{\tabu@thestyle}\ignorespaces}% - \gdef\tabu@ls@{\tabu@ls@L}% - \else - \global\let\tabu@ls@G \tabu@thestyle - \gdef\tabu@ls@{\tabu@ls@G}% - \fi - \tabu@everyrow@egroup -}% \tabulinestyle -\newcommand*\taburulecolor{\tabu@everyrow@bgroup \tabu@textbar \tabu@rulecolor} -\def\tabu@rulecolor #1{\toks@{}% - \def\tabu@temp #1##1#1{\tabu@ruledrsc{##1}}\@ifnextchar #1% - \tabu@temp - \tabu@rulearc -}% \tabu@rulecolor -\def\tabu@ruledrsc #1{\edef\tabu@temp{#1}\tabu@strtrim\tabu@temp - \ifx \tabu@temp\@empty \def\tabu@temp{\tabu@rule@drsc@ {}{}}% - \else \edef\tabu@temp{\noexpand\tabu@rule@drsc@ {}{\tabu@temp}}% - \fi - \tabu@temp -}% \tabu@ruledrsc@ -\def\tabu@ruledrsc@ #1#{\tabu@rule@drsc@ {#1}} -\def\tabu@rule@drsc@ #1#2{% - \iftabu@everyrow - \ifx \\#1#2\\\toks@{\let\CT@drsc@ \relax}% - \else \toks@{\def\CT@drsc@{\color #1{#2}}}% - \fi - \else - \ifx \\#1#2\\\global\let\CT@drsc@ \relax - \else \gdef\CT@drsc@{\color #1{#2}}% - \fi - \fi - \tabu@rulearc -}% \tabu@rule@drsc@ -\def\tabu@rulearc #1#{\tabu@rule@arc@ {#1}} -\def\tabu@rule@arc@ #1#2{% - \iftabu@everyrow - \ifx \\#1#2\\\toks@\expandafter{\the\toks@ \def\CT@arc@{}}% - \else \toks@\expandafter{\the\toks@ \def\CT@arc@{\color #1{#2}}}% - \fi - \toks@\expandafter{\the\toks@ - \let\tabu@arc@L \CT@arc@ - \let\tabu@drsc@L \CT@drsc@ - \ignorespaces}% - \else - \ifx \\#1#2\\\gdef\CT@arc@{}% - \else \gdef\CT@arc@{\color #1{#2}}% - \fi - \global\let\tabu@arc@G \CT@arc@ - \global\let\tabu@drsc@G \CT@drsc@ - \fi - \tabu@everyrow@egroup -}% \tabu@rule@arc@ -\def\taburowcolors {\tabu@everyrow@bgroup \@testopt \tabu@rowcolors 1} -\def\tabu@rowcolors [#1]#2#{\tabu@rowc@lors{#1}{#2}} -\def\tabu@rowc@lors #1#2#3{% - \toks@{}\@defaultunits \count@ =\number0#2\relax \@nnil - \@defaultunits \tabu@start =\number0#1\relax \@nnil - \ifnum \count@<\tw@ \count@=\tw@ \fi - \advance\tabu@start \m@ne - \ifnum \tabu@start<\z@ \tabu@start \z@ \fi - \tabu@rowcolorseries #3\in@..\in@ \@nnil -}% \tabu@rowcolors -\def\tabu@rowcolorseries #1..#2\in@ #3\@nnil {% - \ifx \in@#1\relax - \iftabu@everyrow \toks@{\def\tabu@rc@{}\let\tabu@rc@L \tabu@rc@}% - \else \gdef\tabu@rc@{}\global\let\tabu@rc@G \tabu@rc@ - \fi - \else - \ifx \\#2\\\tabu@rowcolorserieserror \fi - \tabu@sanitizearg{#1}\tabu@temp - \tabu@sanitizearg{#2}\@tempa - \advance\count@ \m@ne - \iftabu@everyrow - \def\tabu@rc@ ##1##2##3##4{\def\tabu@rc@{% - \ifnum ##2=\c@taburow - \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{##3}{##4}\fi - \ifnum \c@taburow<##2 \else - \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\z@ - \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi - \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% - \rowcolor{tabu@rc@\the\tabu@nested}\fi}% - }\edef\x{\noexpand\tabu@rc@ {\the\count@} - {\the\tabu@start} - {\tabu@temp} - {\@tempa}% - }\x - \toks@\expandafter{\expandafter\def\expandafter\tabu@rc@\expandafter{\tabu@rc@}}% - \toks@\expandafter{\the\toks@ \let\tabu@rc@L \tabu@rc@ \ignorespaces}% - \else % inside \noalign - \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{\tabu@temp}{\@tempa}% - \expandafter\resetcolorseries\expandafter[\the\count@]{tabu@rcseries@\the\tabu@nested}% - \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% - \let\noalign \relax \rowcolor{tabu@rc@\the\tabu@nested}% - \def\tabu@rc@ ##1##2{\gdef\tabu@rc@{% - \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\@ne - \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi - \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% - \rowcolor{tabu@rc@\the\tabu@nested}}% - }\edef\x{\noexpand\tabu@rc@{\the\count@}{\the\c@taburow}}\x - \global\let\tabu@rc@G \tabu@rc@ - \fi - \fi - \tabu@everyrow@egroup -}% \tabu@rowcolorseries -\tabuDisableCommands {\let\tabu@rc@ \@empty } -\def\tabu@rowcolorserieserror {\PackageError{tabu} - {Invalid syntax for \string\taburowcolors - \MessageBreak Please look at the documentation!}\@ehd -}% \tabu@rowcolorserieserror -\newcommand*\tabureset {% - \tabulinesep=\z@ \extrarowsep=\z@ \extratabsurround=\z@ - \tabulinestyle{}\everyrow{}\taburulecolor||{}\taburowcolors{}% -}% \tabureset -%% Parsing the line styles ------------------------------------------ -\def\tabu@getline #1{\begingroup - \csname \ifcsname if@safe@actives\endcsname % - @safe@activestrue\else - relax\fi \endcsname - \edef\tabu@temp{#1}\tabu@sanitizearg{#1}\@tempa - \let\tabu@thestyle \relax - \ifcsname tabu@linestyle@\@tempa \endcsname - \edef\tabu@thestyle{\endgroup - \def\tabu@thestyle{\expandafter\noexpand - \csname tabu@linestyle@\@tempa\endcsname}% - }\tabu@thestyle - \else \expandafter\tabu@definestyle \tabu@temp \@nil - \fi -}% \tabu@getline -\def\tabu@definestyle #1#2\@nil {\endlinechar \m@ne \makeatletter - \tabu@thick \maxdimen \tabu@on \maxdimen \tabu@off \maxdimen - \let\tabu@c@lon \@undefined \let\tabu@c@loff \@undefined - \ifodd 1\ifcat .#1\else\ifcat\relax #1\else 0\fi\fi % catcode 12 or non expandable cs - \def\tabu@temp{\tabu@getparam{thick}}% - \else \def\tabu@temp{\tabu@getparam{thick}\maxdimen}% - \fi - {% - \let\tabu@ \relax - \def\:{\obeyspaces \tabu@oXIII \tabu@commaXIII \edef\:}% (space active \: happy ;-)) - \scantokens{\:{\tabu@temp #1#2 \tabu@\tabu@}}% - \expandafter}\expandafter - \def\expandafter\:\expandafter{\:}% line spec rewritten now ;-) - \def\;{\def\:}% - \scantokens\expandafter{\expandafter\;\expandafter{\:}}% space is now inactive (catcode 10) - \let\tabu@ \tabu@getcolor \:% all arguments are ready now ;-) - \ifdefined\tabu@c@lon \else \let\tabu@c@lon\@empty \fi - \ifx \tabu@c@lon\@empty \def\tabu@c@lon{\CT@arc@}\fi - \ifdefined\tabu@c@loff \else \let\tabu@c@loff \@empty \fi - \ifdim \tabu@on=\maxdimen \ifdim \tabu@off<\maxdimen - \tabu@on \tabulineon \fi\fi - \ifdim \tabu@off=\maxdimen \ifdim \tabu@on<\maxdimen - \tabu@off \tabulineoff \fi\fi - \ifodd 1\ifdim \tabu@off=\maxdimen \ifdim \tabu@on=\maxdimen 0 \fi\fi - \in@true % - \else \in@false % - \fi - \ifdim\tabu@thick=\maxdimen \def\tabu@thick{\arrayrulewidth}% - \else \edef\tabu@thick{\the\tabu@thick}% - \fi - \edef \tabu@thestyle ##1##2{\endgroup - \def\tabu@thestyle{% - \ifin@ \noexpand\tabu@leadersstyle {\tabu@thick} - {\the\tabu@on}{##1} - {\the\tabu@off}{##2}% - \else \noexpand\tabu@rulesstyle - {##1\vrule width \tabu@thick}% - {##1\leaders \hrule height \tabu@thick \hfil}% - \fi}% - }\expandafter \expandafter - \expandafter \tabu@thestyle \expandafter - \expandafter \expandafter - {\expandafter\tabu@c@lon\expandafter}\expandafter{\tabu@c@loff}% -}% \tabu@definestyle -{\catcode`\O=\active \lccode`\O=`\o \catcode`\,=\active - \lowercase{\gdef\tabu@oXIII {\catcode`\o=\active \let O=\tabu@oxiii}} - \gdef\tabu@commaXIII {\catcode`\,=\active \let ,=\space} -}% \catcode -\def\tabu@oxiii #1{% - \ifcase \ifx n#1\z@ \else - \ifx f#1\@ne\else - \tw@ \fi\fi - \expandafter\tabu@onxiii - \or \expandafter\tabu@ofxiii - \else o% - \fi#1}% -\def\tabu@onxiii #1#2{% - \ifcase \ifx !#2\tw@ \else - \ifcat.\noexpand#2\z@ \else - \ifx \tabu@spxiii#2\@ne\else - \tw@ \fi\fi\fi - \tabu@getparam{on}#2\expandafter\@gobble - \or \expandafter\tabu@onxiii % (space is active) - \else o\expandafter\@firstofone - \fi{#1#2}}% -\def\tabu@ofxiii #1#2{% - \ifx #2f\expandafter\tabu@offxiii - \else o\expandafter\@firstofone - \fi{#1#2}} -\def\tabu@offxiii #1#2{% - \ifcase \ifx !#2\tw@ \else - \ifcat.\noexpand#2\z@ \else - \ifx\tabu@spxiii#2\@ne \else - \tw@ \fi\fi\fi - \tabu@getparam{off}#2\expandafter\@gobble - \or \expandafter\tabu@offxiii % (space is active) - \else o\expandafter\@firstofone - \fi{#1#2}} -\def\tabu@getparam #1{\tabu@ \csname tabu@#1\endcsname=} -\def\tabu@getcolor #1{% \tabu@ <- \tabu@getcolor after \edef - \ifx \tabu@#1\else % no more spec - \let\tabu@theparam=#1\afterassignment \tabu@getc@l@r #1\fi -}% \tabu@getcolor -\def\tabu@getc@l@r #1\tabu@ {% - \def\tabu@temp{#1}\tabu@strtrim \tabu@temp - \ifx \tabu@temp\@empty - \else%\ifcsname \string\color@\tabu@temp \endcsname % if the color exists - \ifx \tabu@theparam \tabu@off \let\tabu@c@loff \tabu@c@l@r - \else \let\tabu@c@lon \tabu@c@l@r - \fi - %\else \tabu@warncolour{\tabu@temp}% - \fi%\fi - \tabu@ % next spec -}% \tabu@getc@l@r -\def\tabu@warncolour #1{\PackageWarning{tabu} - {Color #1 is not defined. Default color used}% -}% \tabu@warncolour -\def\tabu@leadersstyle #1#2#3#4#5{\def\tabu@leaders{{#1}{#2}{#3}{#4}{#5}}% - \ifx \tabu@leaders\tabu@leaders@G \else - \tabu@LEADERS{#1}{#2}{#3}{#4}{#5}\fi -}% \tabu@leadersstyle -\def\tabu@rulesstyle #1#2{\let\tabu@leaders \@undefined - \gdef\tabu@thevrule{#1}\gdef\tabu@thehrule{#2}% -}% \tabu@rulesstyle -%% The leaders boxes ------------------------------------------------ -\def\tabu@LEADERS #1#2#3#4#5{%% width, dash, dash color, gap, gap color - {\let\color \tabu@color % => during trials -> \color = \tabu@nocolor - {% % but the leaders boxes should have colors ! - \def\@therule{\vrule}\def\@thick{height}\def\@length{width}% - \def\@box{\hbox}\def\@unbox{\unhbox}\def\@elt{\wd}% - \def\@skip{\hskip}\def\@ss{\hss}\def\tabu@leads{\tabu@hleads}% - \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}% - \global\let\tabu@thehleaders \tabu@theleaders - }% - {% - \def\@therule{\hrule}\def\@thick{width}\def\@length{height}% - \def\@box{\vbox}\def\@unbox{\unvbox}\def\@elt{\ht}% - \def\@skip{\vskip}\def\@ss{\vss}\def\tabu@leads{\tabu@vleads}% - \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}% - \global\let\tabu@thevleaders \tabu@theleaders - }% - \gdef\tabu@leaders@G{{#1}{#2}{#3}{#4}{#5}}% - }% -}% \tabu@LEADERS -\def\tabu@therule #1#2{\@therule \@thick#1\@length\dimexpr#2/2 \@depth\z@} -\def\tabu@l@@d@rs #1#2#3#4#5{%% width, dash, dash color, gap, gap color - \global\setbox \tabu@leads=\@box{% - {#3\tabu@therule{#1}{#2}}% - \ifx\\#5\\\@skip#4\else{#5\tabu@therule{#1}{#4*2}}\fi - {#3\tabu@therule{#1}{#2}}}% - \global\setbox\tabu@leads=\@box to\@elt\tabu@leads{\@ss - {#3\tabu@therule{#1}{#2}}\@unbox\tabu@leads}% - \edef\tabu@theleaders ##1{\def\noexpand\tabu@theleaders {% - {##1\tabu@therule{#1}{#2}}% - \xleaders \copy\tabu@leads \@ss - \tabu@therule{0pt}{-#2}{##1\tabu@therule{#1}{#2}}}% - }\tabu@theleaders{#3}% -}% \tabu@l@@d@rs -%% \tabu \endtabu \tabu* \longtabu \endlongtabu \longtabu* ---------- -\newcommand*\tabu {\tabu@longfalse - \ifmmode \def\tabu@ {\array}\def\endtabu {\endarray}% - \else \def\tabu@ {\tabu@tabular}\def\endtabu {\endtabular}\fi - \expandafter\let\csname tabu*\endcsname \tabu - \expandafter\def\csname endtabu*\endcsname{\endtabu}% - \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget -}% {tabu} -\let\tabu@tabular \tabular % -\expandafter\def\csname tabu*\endcsname{\tabuscantokenstrue \tabu} -\newcommand*\longtabu {\tabu@longtrue - \ifmmode\PackageError{tabu}{longtabu not allowed in math mode}\fi - \def\tabu@{\longtable}\def\endlongtabu{\endlongtable}% - \LTchunksize=\@M - \expandafter\let\csname tabu*\endcsname \tabu - \expandafter\def\csname endlongtabu*\endcsname{\endlongtabu}% - \let\LT@startpbox \tabu@LT@startpbox % \everypar{ array struts } - \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget -}% {longtabu} -\expandafter\def\csname longtabu*\endcsname{\tabuscantokenstrue \longtabu} -\def\tabu@nolongtabu{\PackageError{tabu} - {longtabu requires the longtable package}\@ehd} -%% Read the target and then : \tabular or \@array ------------------ -\def\tabu@settarget {\futurelet\@let@token \tabu@sett@rget } -\def\tabu@sett@rget {\tabu@target \z@ - \ifcase \ifx \bgroup\@let@token \z@ \else - \ifx \@sptoken\@let@token \@ne \else - \if t\@let@token \tw@ \else - \if s\@let@token \thr@@\else - \z@\fi\fi\fi\fi - \expandafter\tabu@begin - \or \expandafter\tabu@gobblespace\expandafter\tabu@settarget - \or \expandafter\tabu@to - \or \expandafter\tabu@spread - \fi -}% \tabu@sett@rget -\def\tabu@to to{\def\tabu@halignto{to}\tabu@gettarget} -\def\tabu@spread spread{\tabu@spreadtrue\def\tabu@halignto{spread}\tabu@gettarget} -\def\tabu@gettarget {\afterassignment\tabu@linegoaltarget \tabu@target } -\def\tabu@linegoaltarget {\futurelet\tabu@temp \tabu@linegoalt@rget } -\def\tabu@linegoalt@rget {% - \ifx \tabu@temp\LNGL@setlinegoal - \LNGL@setlinegoal \expandafter \@firstoftwo \fi % @gobbles \LNGL@setlinegoal - \tabu@begin -}% \tabu@linegoalt@rget -\def\tabu@begin #1#{% - \iftabu@measuring \expandafter\tabu@nestedmeasure \fi - \ifdim \tabu@target=\z@ \let\tabu@halignto \@empty - \else \edef\tabu@halignto{\tabu@halignto\the\tabu@target}% - \fi - \@testopt \tabu@tabu@ \tabu@aligndefault #1\@nil -}% \tabu@begin -\long\def\tabu@tabu@ [#1]#2\@nil #3{\tabu@setup - \def\tabu@align {#1}\def\tabu@savedpream{\NC@find #3}% - \tabu@ [\tabu@align ]#2{#3\tabu@rewritefirst }% -}% \tabu@tabu@ -\def\tabu@nestedmeasure {% - \ifodd 1\iftabu@spread \else \ifdim\tabu@target=\z@ \else 0 \fi\fi\relax - \tabu@spreadtrue - \else \begingroup \iffalse{\fi \ifnum0=`}\fi - \toks@{}\def\tabu@stack{b}% - \expandafter\tabu@collectbody\expandafter\tabu@quickrule - \expandafter\endgroup - \fi -}% \tabu@nestedmeasure -\def\tabu@quickrule {\indent\vrule height\z@ depth\z@ width\tabu@target} -%% \tabu@setup \tabu@init \tabu@indent -\def\tabu@setup{\tabu@alloc@ - \ifcase \tabu@nested - \ifmmode \else \iftabu@spread\else \ifdim\tabu@target=\z@ - \let\tabu@afterendpar \par - \fi\fi\fi - \def\tabu@aligndefault{c}\tabu@init \tabu@indent - \else % - \def\tabu@aligndefault{t}\let\tabudefaulttarget \linewidth - \fi - \let\tabu@thetarget \tabudefaulttarget \let\tabu@restored \@undefined - \edef\tabu@NC@list{\the\NC@list}\NC@list{\NC@do \tabu@rewritefirst}% - \everycr{}\let\@startpbox \tabu@startpbox % for nested tabu inside longtabu... - \let\@endpbox \tabu@endpbox % idem " " " " " " - \let\@tabarray \tabu@tabarray % idem " " " " " " - \tabu@setcleanup \tabu@setreset -}% \tabu@setup -\def\tabu@init{\tabu@starttimer \tabu@measuringfalse - \edef\tabu@hfuzz {\the\dimexpr\hfuzz+1sp}\global\tabu@footnotes{}% - \let\firsthline \tabu@firsthline \let\lasthline \tabu@lasthline - \let\firstline \tabu@firstline \let\lastline \tabu@lastline - \let\hline \tabu@hline \let\@xhline \tabu@xhline - \let\color \tabu@color \let\@arstrutbox \tabu@arstrutbox - \iftabu@colortbl\else\let\LT@@hline \tabu@LT@@hline \fi - \tabu@trivlist % - \let\@footnotetext \tabu@footnotetext \let\@xfootnotetext \tabu@xfootnotetext - \let\@xfootnote \tabu@xfootnote \let\centering \tabu@centering - \let\raggedright \tabu@raggedright \let\raggedleft \tabu@raggedleft - \let\tabudecimal \tabu@tabudecimal \let\Centering \tabu@Centering - \let\RaggedRight \tabu@RaggedRight \let\RaggedLeft \tabu@RaggedLeft - \let\justifying \tabu@justifying \let\rowfont \tabu@rowfont - \let\fbox \tabu@fbox \let\color@b@x \tabu@color@b@x - \let\tabu@@everycr \everycr \let\tabu@@everypar \everypar - \let\tabu@prepnext@tokORI \prepnext@tok\let\prepnext@tok \tabu@prepnext@tok - \let\tabu@multicolumnORI\multicolumn \let\multicolumn \tabu@multicolumn - \let\tabu@startpbox \@startpbox % for nested tabu inside longtabu pfff !!! - \let\tabu@endpbox \@endpbox % idem " " " " " " " - \let\tabu@tabarray \@tabarray % idem " " " " " " " - \tabu@adl@fix \let\endarray \tabu@endarray % colortbl & arydshln (delarray) - \iftabu@colortbl\CT@everycr\expandafter{\expandafter\iftabu@everyrow \the\CT@everycr \fi}\fi -}% \tabu@init -\def\tabu@indent{% correction for indentation - \ifdim \parindent>\z@\ifx \linewidth\tabudefaulttarget - \everypar\expandafter{% - \the\everypar\everypar\expandafter{\the\everypar}% - \setbox\z@=\lastbox - \ifdim\wd\z@>\z@ \edef\tabu@thetarget - {\the\dimexpr -\wd\z@+\tabudefaulttarget}\fi - \box\z@}% - \fi\fi -}% \tabu@indent -\def\tabu@setcleanup {% saves last global assignments - \ifodd 1\ifmmode \else \iftabu@long \else 0\fi\fi\relax - \def\tabu@aftergroupcleanup{% - \def\tabu@aftergroupcleanup{\aftergroup\tabu@cleanup}}% - \else - \def\tabu@aftergroupcleanup{% - \aftergroup\aftergroup\aftergroup\tabu@cleanup - \let\tabu@aftergroupcleanup \relax}% - \fi - \let\tabu@arc@Gsave \tabu@arc@G - \let\tabu@arc@G \tabu@arc@L % - \let\tabu@drsc@Gsave \tabu@drsc@G - \let\tabu@drsc@G \tabu@drsc@L % - \let\tabu@ls@Gsave \tabu@ls@G - \let\tabu@ls@G \tabu@ls@L % - \let\tabu@rc@Gsave \tabu@rc@G - \let\tabu@rc@G \tabu@rc@L % - \let\tabu@evr@Gsave \tabu@evr@G - \let\tabu@evr@G \tabu@evr@L % - \let\tabu@celllalign@save \tabu@celllalign - \let\tabu@cellralign@save \tabu@cellralign - \let\tabu@cellleft@save \tabu@cellleft - \let\tabu@cellright@save \tabu@cellright - \let\tabu@@celllalign@save \tabu@@celllalign - \let\tabu@@cellralign@save \tabu@@cellralign - \let\tabu@@cellleft@save \tabu@@cellleft - \let\tabu@@cellright@save \tabu@@cellright - \let\tabu@rowfontreset@save \tabu@rowfontreset - \let\tabu@@rowfontreset@save\tabu@@rowfontreset - \let\tabu@rowfontreset \@empty - \edef\tabu@alloc@save {\the\tabu@alloc}% restore at \tabu@reset - \edef\c@taburow@save {\the\c@taburow}% - \edef\tabu@naturalX@save {\the\tabu@naturalX}% - \let\tabu@naturalXmin@save \tabu@naturalXmin - \let\tabu@naturalXmax@save \tabu@naturalXmax - \let\tabu@mkarstrut@save \tabu@mkarstrut - \edef\tabu@clarstrut{% - \extrarowheight \the\dimexpr \ht\@arstrutbox-\ht\strutbox \relax - \extrarowdepth \the\dimexpr \dp\@arstrutbox-\dp\strutbox \relax - \let\noexpand\@arraystretch \@ne \noexpand\tabu@rearstrut}% -}% \tabu@setcleanup -\def\tabu@cleanup {\begingroup - \globaldefs\@ne \tabu@everyrowtrue - \let\tabu@arc@G \tabu@arc@Gsave - \let\CT@arc@ \tabu@arc@G - \let\tabu@drsc@G \tabu@drsc@Gsave - \let\CT@drsc@ \tabu@drsc@G - \let\tabu@ls@G \tabu@ls@Gsave - \let\tabu@ls@ \tabu@ls@G - \let\tabu@rc@G \tabu@rc@Gsave - \let\tabu@rc@ \tabu@rc@G - \let\CT@do@color \relax - \let\tabu@evr@G \tabu@evr@Gsave - \let\tabu@celllalign \tabu@celllalign@save - \let\tabu@cellralign \tabu@cellralign@save - \let\tabu@cellleft \tabu@cellleft@save - \let\tabu@cellright \tabu@cellright@save - \let\tabu@@celllalign \tabu@@celllalign@save - \let\tabu@@cellralign \tabu@@cellralign@save - \let\tabu@@cellleft \tabu@@cellleft@save - \let\tabu@@cellright \tabu@@cellright@save - \let\tabu@rowfontreset \tabu@rowfontreset@save - \let\tabu@@rowfontreset \tabu@@rowfontreset@save - \tabu@naturalX =\tabu@naturalX@save - \let\tabu@naturalXmax \tabu@naturalXmax@save - \let\tabu@naturalXmin \tabu@naturalXmin@save - \let\tabu@mkarstrut \tabu@mkarstrut@save - \c@taburow =\c@taburow@save - \ifcase \tabu@nested \tabu@alloc \m@ne\fi - \endgroup % - \ifcase \tabu@nested - \the\tabu@footnotes \global\tabu@footnotes{}% - \tabu@afterendpar \tabu@elapsedtime - \fi - \tabu@clarstrut - \everyrow\expandafter {\tabu@evr@G}% -}% \tabu@cleanup -\let\tabu@afterendpar \relax -\def\tabu@setreset {% - \edef\tabu@savedparams {% \relax for \tabu@message@save - \ifmmode \col@sep \the\arraycolsep - \else \col@sep \the\tabcolsep \fi \relax - \arrayrulewidth \the\arrayrulewidth \relax - \doublerulesep \the\doublerulesep \relax - \extratabsurround \the\extratabsurround \relax - \extrarowheight \the\extrarowheight \relax - \extrarowdepth \the\extrarowdepth \relax - \abovetabulinesep \the\abovetabulinesep \relax - \belowtabulinesep \the\belowtabulinesep \relax - \def\noexpand\arraystretch{\arraystretch}% - \ifdefined\minrowclearance \minrowclearance\the\minrowclearance\relax\fi}% - \begingroup - \@temptokena\expandafter{\tabu@savedparams}% => only for \savetabu / \usetabu - \ifx \tabu@arc@L\relax \else \tabu@setsave \tabu@arc@L \fi - \ifx \tabu@drsc@L\relax \else \tabu@setsave \tabu@drsc@L \fi - \tabu@setsave \tabu@ls@L \tabu@setsave \tabu@evr@L - \expandafter \endgroup \expandafter - \def\expandafter\tabu@saved@ \expandafter{\the\@temptokena - \let\tabu@arc@G \tabu@arc@L - \let\tabu@drsc@G \tabu@drsc@L - \let\tabu@ls@G \tabu@ls@L - \let\tabu@rc@G \tabu@rc@L - \let\tabu@evr@G \tabu@evr@L}% - \def\tabu@reset{\tabu@savedparams - \tabu@everyrowtrue \c@taburow \z@ - \let\CT@arc@ \tabu@arc@L - \let\CT@drsc@ \tabu@drsc@L - \let\tabu@ls@ \tabu@ls@L - \let\tabu@rc@ \tabu@rc@L - \global\tabu@alloc \tabu@alloc@save - \everyrow\expandafter{\tabu@evr@L}}% -}% \tabu@reset -\def\tabu@setsave #1{\expandafter\tabu@sets@ve #1\@nil{#1}} -\long\def\tabu@sets@ve #1\@nil #2{\@temptokena\expandafter{\the\@temptokena \def#2{#1}}} -%% The Rewriting Process ------------------------------------------- -\def\tabu@newcolumntype #1{% - \expandafter\tabu@new@columntype - \csname NC@find@\string#1\expandafter\endcsname - \csname NC@rewrite@\string#1\endcsname - {#1}% -}% \tabu@newcolumntype -\def\tabu@new@columntype #1#2#3{% - \def#1##1#3{\NC@{##1}}% - \let#2\relax \newcommand*#2% -}% \tabu@new@columntype -\def\tabu@privatecolumntype #1{% - \expandafter\tabu@private@columntype - \csname NC@find@\string#1\expandafter\endcsname - \csname NC@rewrite@\string#1\expandafter\endcsname - \csname tabu@NC@find@\string#1\expandafter\endcsname - \csname tabu@NC@rewrite@\string#1\endcsname - {#1}% -}% \tabu@privatecolumntype -\def\tabu@private@columntype#1#2#3#4{% - \g@addto@macro\tabu@privatecolumns{\let#1#3\let#2#4}% - \tabu@new@columntype#3#4% -}% \tabu@private@columntype -\let\tabu@privatecolumns \@empty -\newcommand*\tabucolumn [1]{\expandafter \def \expandafter - \tabu@highprioritycolumns\expandafter{\tabu@highprioritycolumns - \NC@do #1}}% -\let\tabu@highprioritycolumns \@empty -%% The | ``column'' : rewriting process -------------------------- -\tabu@privatecolumntype |{\tabu@rewritevline} -\newcommand*\tabu@rewritevline[1][]{\tabu@vlinearg{#1}% - \expandafter \NC@find \tabu@rewritten} -\def\tabu@lines #1{% - \ifx|#1\else \tabu@privatecolumntype #1{\tabu@rewritevline}\fi - \NC@list\expandafter{\the\NC@list \NC@do #1}% -}% \tabu@lines@ -\def\tabu@vlinearg #1{% - \ifx\\#1\\\def\tabu@thestyle {\tabu@ls@}% - \else\tabu@getline {#1}% - \fi - \def\tabu@rewritten ##1{\def\tabu@rewritten{!{##1\tabu@thevline}}% - }\expandafter\tabu@rewritten\expandafter{\tabu@thestyle}% - \expandafter \tabu@keepls \tabu@thestyle \@nil -}% \tabu@vlinearg -\def\tabu@keepls #1\@nil{% - \ifcat $\@cdr #1\@nil $% - \ifx \relax#1\else - \ifx \tabu@ls@#1\else - \let#1\relax - \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer - \tabu@savels\noexpand#1}\fi\fi\fi -}% \tabu@keepls -\def\tabu@thevline {\begingroup - \ifdefined\tabu@leaders - \setbox\@tempboxa=\vtop to\dimexpr - \ht\@arstrutbox+\dp\@arstrutbox{{\tabu@thevleaders}}% - \ht\@tempboxa=\ht\@arstrutbox \dp\@tempboxa=\dp\@arstrutbox - \box\@tempboxa - \else - \tabu@thevrule - \fi \endgroup -}% \tabu@thevline -\def\tabu@savels #1{% - \expandafter\let\csname\string#1\endcsname #1% - \expandafter\def\expandafter\tabu@reset\expandafter{\tabu@reset - \tabu@resetls#1}}% -\def\tabu@resetls #1{\expandafter\let\expandafter#1\csname\string#1\endcsname}% -%% \multicolumn inside tabu environment ----------------------------- -\tabu@newcolumntype \tabu@rewritemulticolumn{% - \aftergroup \tabu@endrewritemulticolumn % after \@mkpream group - \NC@list{\NC@do *}\tabu@textbar \tabu@lines - \tabu@savedecl - \tabu@privatecolumns - \NC@list\expandafter{\the\expandafter\NC@list \tabu@NC@list}% - \let\tabu@savels \relax - \NC@find -}% \tabu@rewritemulticolumn -\def\tabu@endrewritemulticolumn{\gdef\tabu@mkpreambuffer{}\endgroup} -\def\tabu@multicolumn{\tabu@ifenvir \tabu@multic@lumn \tabu@multicolumnORI} -\long\def\tabu@multic@lumn #1#2#3{\multispan{#1}\begingroup - \tabu@everyrowtrue - \NC@list{\NC@do \tabu@rewritemulticolumn}% - \expandafter\@gobbletwo % gobbles \multispan{#1} - \tabu@multicolumnORI{#1}{\tabu@rewritemulticolumn #2}% - {\iftabuscantokens \tabu@rescan \else \expandafter\@firstofone \fi - {#3}}% -}% \tabu@multic@lumn -%% The X column(s): rewriting process ----------------------------- -\tabu@privatecolumntype X[1][]{\begingroup \tabu@siunitx{\endgroup \tabu@rewriteX {#1}}} -\def\tabu@nosiunitx #1{#1{}{}\expandafter \NC@find \tabu@rewritten } -\def\tabu@siunitx #1{\@ifnextchar \bgroup - {\tabu@rewriteX@Ss{#1}} - {\tabu@nosiunitx{#1}}} -\def\tabu@rewriteX@Ss #1#2{\@temptokena{}% - \@defaultunits \let\tabu@temp =#2\relax\@nnil - \ifodd 1\ifx S\tabu@temp \else \ifx s\tabu@temp \else 0 \fi\fi - \def\NC@find{\def\NC@find >####1####2<####3\relax{#1 {####1}{####3}% - }\expandafter\NC@find \the\@temptokena \relax - }\expandafter\NC@rewrite@S \@gobble #2\relax - \else \tabu@siunitxerror - \fi - \expandafter \NC@find \tabu@rewritten -}% \tabu@rewriteX@Ss -\def\tabu@siunitxerror {\PackageError{tabu}{Not a S nor s column ! - \MessageBreak X column can only embed siunitx S or s columns}\@ehd -}% \tabu@siunitxerror -\def\tabu@rewriteX #1#2#3{\tabu@Xarg {#1}{#2}{#3}% - \iftabu@measuring - \else \tabu@measuringtrue % first X column found in the preamble - \let\@halignto \relax \let\tabu@halignto \relax - \iftabu@spread \tabu@spreadtarget \tabu@target \tabu@target \z@ - \else \tabu@spreadtarget \z@ \fi - \ifdim \tabu@target=\z@ - \setlength\tabu@target \tabu@thetarget - \tabu@message{\tabu@message@defaulttarget}% - \else \tabu@message{\tabu@message@target}\fi - \fi -}% \tabu@rewriteX -\def\tabu@rewriteXrestore #1#2#3{\let\@halignto \relax - \def\tabu@rewritten{l}} -\def\tabu@Xarg #1#2#3{% - \advance\tabu@Xcol \@ne \let\tabu@Xlcr \@empty - \let\tabu@Xdisp \@empty \let\tabu@Xmath \@empty - \ifx\\#1\\% - \def\tabu@rewritten{p}\tabucolX \p@ % - \else - \let\tabu@rewritten \@empty \let\tabu@temp \@empty \tabucolX \z@ - \tabu@Xparse {}#1\relax - \fi - \tabu@Xrewritten{#2}{#3}% -}% \tabu@Xarg -\def\tabu@Xparse #1{\futurelet\@let@token \tabu@Xtest} -\expandafter\def\expandafter\tabu@Xparsespace\space{\tabu@Xparse{}} -\def\tabu@Xtest{% - \ifcase \ifx \relax\@let@token \z@ \else - \if ,\@let@token \m@ne\else - \if p\@let@token 1\else - \if m\@let@token 2\else - \if b\@let@token 3\else - \if l\@let@token 4\else - \if c\@let@token 5\else - \if r\@let@token 6\else - \if j\@let@token 7\else - \if L\@let@token 8\else - \if C\@let@token 9\else - \if R\@let@token 10\else - \if J\@let@token 11\else - \ifx \@sptoken\@let@token 12\else - \if .\@let@token 13\else - \if -\@let@token 13\else - \ifcat $\@let@token 14\else - 15\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax - \or \tabu@Xtype {p}% - \or \tabu@Xtype {m}% - \or \tabu@Xtype {b}% - \or \tabu@Xalign \raggedright\relax - \or \tabu@Xalign \centering\relax - \or \tabu@Xalign \raggedleft\relax - \or \tabu@Xalign \tabu@justify\relax - \or \tabu@Xalign \RaggedRight\raggedright - \or \tabu@Xalign \Centering\centering - \or \tabu@Xalign \RaggedLeft\raggedleft - \or \tabu@Xalign \justifying\tabu@justify - \or \expandafter \tabu@Xparsespace - \or \expandafter \tabu@Xcoef - \or \expandafter \tabu@Xm@th - \or \tabu@Xcoef{}% - \else\expandafter \tabu@Xparse - \fi -}% \tabu@Xtest -\def\tabu@Xalign #1#2{% - \ifx \tabu@Xlcr\@empty \else \PackageWarning{tabu} - {Duplicate horizontal alignment specification}\fi - \ifdefined#1\def\tabu@Xlcr{#1}\let#1\relax - \else \def\tabu@Xlcr{#2}\let#2\relax\fi - \expandafter\tabu@Xparse -}% \tabu@Xalign -\def\tabu@Xtype #1{% - \ifx \tabu@rewritten\@empty \else \PackageWarning{tabu} - {Duplicate vertical alignment specification}\fi - \def\tabu@rewritten{#1}\expandafter\tabu@Xparse -}% \tabu@Xtype -\def\tabu@Xcoef#1{\edef\tabu@temp{\tabu@temp#1}% - \afterassignment\tabu@Xc@ef \tabu@cnt\number\if-#10\fi -}% \tabu@Xcoef -\def\tabu@Xc@ef{\advance\tabucolX \tabu@temp\the\tabu@cnt\p@ - \tabu@Xparse{}% -}% \tabu@Xc@ef -\def\tabu@Xm@th #1{\futurelet \@let@token \tabu@Xd@sp} -\def\tabu@Xd@sp{\let\tabu@Xmath=$% - \ifx $\@let@token \def\tabu@Xdisp{\displaystyle}% - \expandafter\tabu@Xparse - \else \expandafter\tabu@Xparse\expandafter{\expandafter}% - \fi -}% \tabu@Xd@sp -\def\tabu@Xrewritten {% - \ifx \tabu@rewritten\@empty \def\tabu@rewritten{p}\fi - \ifdim \tabucolX<\z@ \tabu@negcoeftrue - \else\ifdim \tabucolX=\z@ \tabucolX \p@ - \fi\fi - \edef\tabu@temp{{\the\tabu@Xcol}{\tabu@strippt\tabucolX}}% - \edef\tabu@Xcoefs{\tabu@Xcoefs \tabu@ \tabu@temp}% - \edef\tabu@rewritten ##1##2{\def\noexpand\tabu@rewritten{% - >{\tabu@Xlcr \ifx$\tabu@Xmath$\tabu@Xdisp\fi ##1}% - \tabu@rewritten {\tabu@hsize \tabu@temp}% - <{##2\ifx$\tabu@Xmath$\fi}}% - }\tabu@rewritten -}% \tabu@Xrewritten -\def\tabu@hsize #1#2{% - \ifdim #2\p@<\z@ - \ifdim \tabucolX=\maxdimen \tabu@wd{#1}\else - \ifdim \tabu@wd{#1}<-#2\tabucolX \tabu@wd{#1}\else -#2\tabucolX\fi - \fi - \else #2\tabucolX - \fi -}% \tabu@hsize -%% \usetabu and \preamble: rewriting process --------------------- -\tabu@privatecolumntype \usetabu [1]{% - \ifx\\#1\\\tabu@saveerr{}\else - \@ifundefined{tabu@saved@\string#1} - {\tabu@saveerr{#1}} - {\let\tabu@rewriteX \tabu@rewriteXrestore - \csname tabu@saved@\string#1\expandafter\endcsname\expandafter\@ne}% - \fi -}% \NC@rewrite@\usetabu -\tabu@privatecolumntype \preamble [1]{% - \ifx\\#1\\\tabu@saveerr{}\else - \@ifundefined{tabu@saved@\string#1} - {\tabu@saveerr{#1}} - {\csname tabu@saved@\string#1\expandafter\endcsname\expandafter\z@}% - \fi -}% \NC@rewrite@\preamble -%% Controlling the rewriting process ------------------------------- -\tabu@newcolumntype \tabu@rewritefirst{% - \iftabu@long \aftergroup \tabu@longpream % - \else \aftergroup \tabu@pream - \fi - \let\tabu@ \relax \let\tabu@hsize \relax - \let\tabu@Xcoefs \@empty \let\tabu@savels \relax - \tabu@Xcol \z@ \tabu@cnt \tw@ - \gdef\tabu@mkpreambuffer{\tabu@{}}\tabu@measuringfalse - \global\setbox\@arstrutbox \box\@arstrutbox - \NC@list{\NC@do *}\tabu@textbar \tabu@lines - \NC@list\expandafter{\the\NC@list \NC@do X}% - \iftabu@siunitx % - \NC@list\expandafter{\the\NC@list \NC@do S\NC@do s}\fi - \NC@list\expandafter{\the\expandafter\NC@list \tabu@highprioritycolumns}% - \expandafter\def\expandafter\tabu@NC@list\expandafter{% - \the\expandafter\NC@list \tabu@NC@list}% % * | X S - \NC@list\expandafter{\expandafter \NC@do \expandafter\usetabu - \expandafter \NC@do \expandafter\preamble - \the\NC@list \NC@do \tabu@rewritemiddle - \NC@do \tabu@rewritelast}% - \tabu@savedecl - \tabu@privatecolumns - \edef\tabu@prev{\the\@temptokena}\NC@find \tabu@rewritemiddle -}% NC@rewrite@\tabu@rewritefirst -\tabu@newcolumntype \tabu@rewritemiddle{% - \edef\tabu@temp{\the\@temptokena}\NC@find \tabu@rewritelast -}% \NC@rewrite@\tabu@rewritemiddle -\tabu@newcolumntype \tabu@rewritelast{% - \ifx \tabu@temp\tabu@prev \advance\tabu@cnt \m@ne - \NC@list\expandafter{\tabu@NC@list \NC@do \tabu@rewritemiddle - \NC@do \tabu@rewritelast}% - \else \let\tabu@prev\tabu@temp - \fi - \ifcase \tabu@cnt \expandafter\tabu@endrewrite - \else \expandafter\NC@find \expandafter\tabu@rewritemiddle - \fi -}% \NC@rewrite@\tabu@rewritelast -%% Choosing the strategy -------------------------------------------- -\def\tabu@endrewrite {% - \let\tabu@temp \NC@find - \ifx \@arrayright\relax \let\@arrayright \@empty \fi - \count@=% - \ifx \@finalstrut\tabu@finalstrut \z@ % outer in mode 0 print - \iftabu@measuring - \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer - \tabu@target \csname tabu@\the\tabu@nested.T\endcsname - \tabucolX \csname tabu@\the\tabu@nested.X\endcsname - \edef\@halignto {\ifx\@arrayright\@empty to\tabu@target\fi}}% - \fi - \else\iftabu@measuring 4 % X columns - \xdef\tabu@mkpreambuffer{\tabu@{\tabu@mkpreambuffer - \tabu@target \the\tabu@target - \tabu@spreadtarget \the\tabu@spreadtarget}% - \def\noexpand\tabu@Xcoefs{\tabu@Xcoefs}% - \edef\tabu@halignto{\ifx \@arrayright\@empty to\tabu@target\fi}}% - \let\tabu@Xcoefs \relax - \else\ifcase\tabu@nested \thr@@ % outer, no X - \global\let\tabu@afterendpar \relax - \else \@ne % inner, no X, outer in mode 1 or 2 - \fi - \ifdefined\tabu@usetabu - \else \ifdim\tabu@target=\z@ - \else \let\tabu@temp \tabu@extracolsep - \fi\fi - \fi - \fi - \xdef\tabu@mkpreambuffer{\count@ \the\count@ \tabu@mkpreambuffer}% - \tabu@temp -}% \tabu@endrewrite -\def\tabu@extracolsep{\@defaultunits \expandafter\let - \expandafter\tabu@temp \expandafter=\the\@temptokena \relax\@nnil - \ifx \tabu@temp\@sptoken - \expandafter\tabu@gobblespace \expandafter\tabu@extracolsep - \else - \edef\tabu@temp{\noexpand\NC@find - \if |\noexpand\tabu@temp @% - \else\if !\noexpand\tabu@temp @% - \else !% - \fi\fi - {\noexpand\extracolsep\noexpand\@flushglue}}% - \fi - \tabu@temp -}% \tabu@extrac@lsep -%% Implementing the strategy ---------------------------------------- -\long\def\tabu@pream #1\@preamble {% - \let\tabu@ \tabu@@ \tabu@mkpreambuffer \tabu@aftergroupcleanup - \NC@list\expandafter {\tabu@NC@list}% in case of nesting... - \ifdefined\tabu@usetabu \tabu@usetabu \tabu@target \z@ \fi - \let\tabu@savedpreamble \@preamble - \global\let\tabu@elapsedtime \relax - \tabu@thebody ={#1\tabu@aftergroupcleanup}% - \tabu@thebody =\expandafter{\the\expandafter\tabu@thebody - \@preamble}% - \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens ) - \tabu@select -}% \tabu@pream -\long\def\tabu@longpream #1\LT@bchunk #2\LT@bchunk{% - \let\tabu@ \tabu@@ \tabu@mkpreambuffer \tabu@aftergroupcleanup - \NC@list\expandafter {\tabu@NC@list}% in case of nesting... - \let\tabu@savedpreamble \@preamble - \global\let\tabu@elapsedtime \relax - \tabu@thebody ={#1\LT@bchunk #2\tabu@aftergroupcleanup \LT@bchunk}% - \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens ) - \tabu@select -}% \tabu@longpream -\def\tabu@select {% - \ifnum\tabu@nested>\z@ \tabuscantokensfalse \fi - \ifnum \count@=\@ne \iftabu@measuring \count@=\tw@ \fi\fi - \ifcase \count@ - \global\let\tabu@elapsedtime \relax - \tabu@seteverycr - \expandafter \tabuthepreamble % vertical adjustment (inherited from outer) - \or % exit in vertical measure + struts per cell because no X and outer in mode 3 - \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}% - \def\tabu@cellralign{\tabu@verticalspacing}% - \tabu@seteverycr - \expandafter \tabuthepreamble - \or % exit without measure because no X and outer in mode 4 - \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty - \tabu@seteverycr - \expandafter \tabuthepreamble - \else % needs trials - \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty - \tabu@savecounters - \expandafter \tabu@setstrategy - \fi -}% \tabu@select -\def\tabu@@ {\gdef\tabu@mkpreambuffer} -%% Protections to set up before trials ------------------------------ -\def\tabu@setstrategy {\begingroup % - \tabu@trialh@@k \tabu@cnt \z@ % number of trials - \hbadness \@M \let\hbadness \@tempcnta - \hfuzz \maxdimen \let\hfuzz \@tempdima - \let\write \tabu@nowrite\let\GenericError \tabu@GenericError - \let\savetabu \@gobble \let\tabudefaulttarget \linewidth - \let\@footnotetext \@gobble \let\@xfootnote \tabu@xfootnote - \let\color \tabu@nocolor\let\rowcolor \tabu@norowcolor - \let\tabu@aftergroupcleanup \relax % only after the last trial - \tabu@mkpreambuffer - \ifnum \count@>\thr@@ \let\@halignto \@empty \tabucolX@init - \def\tabu@lasttry{\m@ne\p@}\fi - \begingroup \iffalse{\fi \ifnum0=`}\fi - \toks@{}\def\tabu@stack{b}\iftabuscantokens \endlinechar=10 \obeyspaces \fi % - \tabu@collectbody \tabu@strategy % -}% \tabu@setstrategy -\def\tabu@savecounters{% - \def\@elt ##1{\csname c@##1\endcsname\the\csname c@##1\endcsname}% - \edef\tabu@clckpt {\begingroup \globaldefs=\@ne \cl@@ckpt \endgroup}\let\@elt \relax -}% \tabu@savecounters -\def\tabucolX@init {% \tabucolX <= \tabu@target / (sum coefs > 0) - \dimen@ \z@ \tabu@Xsum \z@ \tabucolX \z@ \let\tabu@ \tabu@Xinit \tabu@Xcoefs - \ifdim \dimen@>\z@ - \@tempdima \dimexpr \tabu@target *\p@/\dimen@ + \tabu@hfuzz\relax - \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi - \fi -}% \tabucolX@init -\def\tabu@Xinit #1#2{\tabu@Xcol #1 \advance \tabu@Xsum - \ifdim #2\p@>\z@ #2\p@ \advance\dimen@ #2\p@ - \else -#2\p@ \tabu@negcoeftrue - \@tempdima \dimexpr \tabu@target*\p@/\dimexpr-#2\p@\relax \relax - \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi - \tabu@wddef{#1}{0pt}% - \fi -}% \tabu@Xinit -%% Collecting the environment body ---------------------------------- -\long\def\tabu@collectbody #1#2\end #3{% - \edef\tabu@stack{\tabu@pushbegins #2\begin\end\expandafter\@gobble\tabu@stack}% - \ifx \tabu@stack\@empty - \toks@\expandafter{\expandafter\tabu@thebody\expandafter{\the\toks@ #2}% - \def\tabu@end@envir{\end{#3}}% - \iftabuscantokens - \iftabu@long \def\tabu@endenvir {\end{#3}\tabu@gobbleX}% - \else \def\tabu@endenvir {\let\endarray \@empty - \end{#3}\tabu@gobbleX}% - \fi - \else \def\tabu@endenvir {\end{#3}}\fi}% - \let\tabu@collectbody \tabu@endofcollect - \else\def\tabu@temp{#3}% - \ifx \tabu@temp\@empty \toks@\expandafter{\the\toks@ #2\end }% - \else \ifx\tabu@temp\tabu@@spxiii \toks@\expandafter{\the\toks@ #2\end #3}% - \else \ifx\tabu@temp\tabu@X \toks@\expandafter{\the\toks@ #2\end #3}% - \else \toks@\expandafter{\the\toks@ #2\end{#3}}% - \fi\fi\fi - \fi - \tabu@collectbody{#1}% -}% \tabu@collectbody -\long\def\tabu@pushbegins#1\begin#2{\ifx\end#2\else b\expandafter\tabu@pushbegins\fi}% -\def\tabu@endofcollect #1{\ifnum0=`{}\fi - \expandafter\endgroup \the\toks@ #1% -}% \tabu@endofcollect -%% The trials: switching between strategies ------------------------- -\def\tabu@strategy {\relax % stops \count@ assignment ! - \ifcase\count@ % case 0 = print with vertical adjustment (outer is finished) - \expandafter \tabu@endoftrials - \or % case 1 = exit in vertical measure (outer in mode 3) - \expandafter\xdef\csname tabu@\the\tabu@nested.T\endcsname{\the\tabu@target}% - \expandafter\xdef\csname tabu@\the\tabu@nested.X\endcsname{\the\tabucolX}% - \expandafter \tabu@endoftrials - \or % case 2 = exit with a rule replacing the table (outer in mode 4) - \expandafter \tabu@quickend - \or % case 3 = outer is in mode 3 because of no X - \begingroup - \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}% - \def\tabu@cellralign{\tabu@verticalspacing}% - \expandafter \tabu@measuring - \else % case 4 = horizontal measure - \begingroup - \global\let\tabu@elapsedtime \tabu@message@etime - \long\def\multicolumn##1##2##3{\multispan{##1}}% - \let\tabu@startpboxORI \@startpbox - \iftabu@spread - \def\tabu@naturalXmax {\z@}% - \let\tabu@naturalXmin \tabu@naturalXmax - \tabu@evr{\global\tabu@naturalX \z@}% - \let\@startpbox \tabu@startpboxmeasure - \else\iftabu@negcoef - \let\@startpbox \tabu@startpboxmeasure - \else \let\@startpbox \tabu@startpboxquick - \fi\fi - \expandafter \tabu@measuring - \fi -}% \tabu@strategy -\def\tabu@measuring{\expandafter \tabu@trial \expandafter - \count@ \the\count@ \tabu@endtrial -}% \tabu@measuring -\def\tabu@trial{\iftabu@long \tabu@longtrial \else \tabu@shorttrial \fi} -\def\tabu@shorttrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr - \ifx \tabu@savecounters\relax \else - \let\tabu@savecounters \relax \tabu@clckpt \fi - $\iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi - \expandafter{\expandafter \tabuthepreamble - \the\tabu@thebody - \csname tabu@adl@endtrial\endcsname - \endarray}$\egroup % got \tabu@box -}% \tabu@shorttrial -\def\tabu@longtrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr - \ifx \tabu@savecounters\relax \else - \let\tabu@savecounters \relax \tabu@clckpt \fi - \iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi - \expandafter{\expandafter \tabuthepreamble - \the\tabu@thebody - \tabuendlongtrial}\egroup % got \tabu@box -}% \tabu@longtrial -\def\tabuendlongtrial{% no @ allowed for \scantokens - \LT@echunk \global\setbox\@ne \hbox{\unhbox\@ne}\kern\wd\@ne - \LT@get@widths -}% \tabuendlongtrial -\def\tabu@adl@endtrial{% - \crcr \noalign{\global\adl@ncol \tabu@nbcols}}% anything global is crap, junky and fails ! -\def\tabu@seteverycr {\tabu@reset - \everycr \expandafter{\the\everycr \tabu@everycr}% - \let\everycr \tabu@noeverycr % -}% \tabu@seteverycr -\def\tabu@noeverycr{{\aftergroup\tabu@restoreeverycr \afterassignment}\toks@} -\def\tabu@restoreeverycr {\let\everycr \tabu@@everycr} -\def\tabu@everycr {\iftabu@everyrow \noalign{\tabu@everyrow}\fi} -\def\tabu@endoftrials {% - \iftabuscantokens \expandafter\@firstoftwo - \else \expandafter\@secondoftwo - \fi - {\expandafter \tabu@closetrialsgroup \expandafter - \tabu@rescan \expandafter{% - \expandafter\tabuthepreamble - \the\expandafter\tabu@thebody - \iftabu@long \else \endarray \fi}} - {\expandafter\tabu@closetrialsgroup \expandafter - \tabuthepreamble - \the\tabu@thebody}% - \tabu@endenvir % Finish ! -}% \tabu@endoftrials -\def\tabu@closetrialsgroup {% - \toks@\expandafter{\tabu@endenvir}% - \edef\tabu@bufferX{\endgroup - \tabucolX \the\tabucolX - \tabu@target \the\tabu@target - \tabu@cnt \the\tabu@cnt - \def\noexpand\tabu@endenvir{\the\toks@}% - %Quid de \@halignto = \tabu@halignto ?? - }% \tabu@bufferX - \tabu@bufferX - \ifcase\tabu@nested % print out (outer in mode 0) - \global\tabu@cnt \tabu@cnt - \tabu@evr{\tabu@verticaldynamicadjustment}% - \tabu@celllalign@def{\everypar{}}\let\tabu@cellralign \@empty - \let\@finalstrut \tabu@finalstrut - \else % vertical measure of nested tabu - \tabu@evr{\tabu@verticalinit}% - \tabu@celllalign@def{\tabu@verticalmeasure}% - \def\tabu@cellralign{\tabu@verticalspacing}% - \fi - \tabu@clckpt \let\@halignto \tabu@halignto - \let\@halignto \@empty - \tabu@seteverycr - \ifdim \tabustrutrule>\z@ \ifnum\tabu@nested=\z@ - \setbox\@arstrutbox \box\voidb@x % force \@arstrutbox to be rebuilt (visible struts) - \fi\fi -}% \tabu@closetrialsgroup -\def\tabu@quickend {\expandafter \endgroup \expandafter - \tabu@target \the\tabu@target \tabu@quickrule - \let\endarray \relax \tabu@endenvir -}% \tabu@quickend -\def\tabu@endtrial {\relax % stops \count@ assignment ! - \ifcase \count@ \tabu@err % case 0 = impossible here - \or \tabu@err % case 1 = impossible here - \or \tabu@err % case 2 = impossible here - \or % case 3 = outer goes into mode 0 - \def\tabu@bufferX{\endgroup}\count@ \z@ - \else % case 4 = outer goes into mode 3 - \iftabu@spread \tabu@spreadarith % inner into mode 1 (outer in mode 3) - \else \tabu@arith % or 2 (outer in mode 4) - \fi - \count@=% - \ifcase\tabu@nested \thr@@ % outer goes into mode 3 - \else\iftabu@measuring \tw@ % outer is in mode 4 - \else \@ne % outer is in mode 3 - \fi\fi - \edef\tabu@bufferX{\endgroup - \tabucolX \the\tabucolX - \tabu@target \the\tabu@target}% - \fi - \expandafter \tabu@bufferX \expandafter - \count@ \the\count@ \tabu@strategy -}% \tabu@endtrial -\def\tabu@err{\errmessage{(tabu) Internal impossible error! (\count@=\the\count@)}} -%% The algorithms: compute the widths / stop or go on --------------- -\def\tabu@arithnegcoef {% - \@tempdima \z@ \dimen@ \z@ \let\tabu@ \tabu@arith@negcoef \tabu@Xcoefs -}% \tabu@arithnegcoef -\def\tabu@arith@negcoef #1#2{% - \ifdim #2\p@>\z@ \advance\dimen@ #2\p@ % saturated by definition - \advance\@tempdima #2\tabucolX - \else - \ifdim -#2\tabucolX <\tabu@wd{#1}% c_i X < natural width <= \tabu@target-> saturated - \advance\dimen@ -#2\p@ - \advance\@tempdima -#2\tabucolX - \else - \advance\@tempdima \tabu@wd{#1}% natural width <= c_i X => neutralised - \ifdim \tabu@wd{#1}<\tabu@target \else % neutralised - \advance\dimen@ -#2\p@ % saturated (natural width = tabu@target) - \fi - \fi - \fi -}% \tabu@arith@negcoef -\def\tabu@givespace #1#2{% here \tabu@DELTA < \z@ - \ifdim \@tempdima=\z@ - \tabu@wddef{#1}{\the\dimexpr -\tabu@DELTA*\p@/\tabu@Xsum}% - \else - \tabu@wddef{#1}{\the\dimexpr \tabu@hsize{#1}{#2} - *(\p@ -\tabu@DELTA*\p@/\@tempdima)/\p@\relax}% - \fi -}% \tabu@givespace -\def\tabu@arith {\advance\tabu@cnt \@ne - \ifnum \tabu@cnt=\@ne \tabu@message{\tabu@titles}\fi - \tabu@arithnegcoef - \@tempdimb \dimexpr \wd\tabu@box -\@tempdima \relax % - \tabu@DELTA = \dimexpr \wd\tabu@box - \tabu@target \relax - \tabu@message{\tabu@message@arith}% - \ifdim \tabu@DELTA <\tabu@hfuzz - \ifdim \tabu@DELTA<\z@ % wd (tabu)<\tabu@target ? - \let\tabu@ \tabu@givespace \tabu@Xcoefs - \advance\@tempdima \@tempdimb \advance\@tempdima -\tabu@DELTA % for message - \else % already converged: nothing to do but nearly impossible... - \fi - \tabucolX \maxdimen - \tabu@measuringfalse - \else % need for narrower X columns - \tabucolX =\dimexpr (\@tempdima -\tabu@DELTA) *\p@/\tabu@Xsum \relax - \tabu@measuringtrue - \@whilesw \iftabu@measuring\fi {% - \advance\tabu@cnt \@ne - \tabu@arithnegcoef - \tabu@DELTA =\dimexpr \@tempdima+\@tempdimb -\tabu@target \relax % always < 0 here - \tabu@message{\tabu@header - \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@ - \tabu@msgalign \@tempdima+\@tempdimb { }{ }{ }{ }{ }\@@ - \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@ - \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@ - \ifdim -\tabu@DELTA<\tabu@hfuzz \tabu@spaces target ok\else - \tabu@msgalign \dimexpr -\tabu@DELTA *\p@/\dimen@ {}{}{}{}{}\@@ - \fi}% - \ifdim -\tabu@DELTA<\tabu@hfuzz - \advance\@tempdima \@tempdimb % for message - \tabu@measuringfalse - \else - \advance\tabucolX \dimexpr -\tabu@DELTA *\p@/\dimen@ \relax - \fi - }% - \fi - \tabu@message{\tabu@message@reached}% - \edef\tabu@bufferX{\endgroup \tabu@cnt \the\tabu@cnt - \tabucolX \the\tabucolX - \tabu@target \the\tabu@target}% -}% \tabu@arith -\def\tabu@spreadarith {% - \dimen@ \z@ \@tempdima \tabu@naturalXmax \let\tabu@ \tabu@spread@arith \tabu@Xcoefs - \edef\tabu@naturalXmin {\the\dimexpr\tabu@naturalXmin*\dimen@/\p@}% - \@tempdimc =\dimexpr \wd\tabu@box -\tabu@naturalXmax+\tabu@naturalXmin \relax - \iftabu@measuring - \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax - \edef\tabu@bufferX{\endgroup \tabucolX \the\tabucolX \tabu@target\the\tabu@target}% - \else - \tabu@message{\tabu@message@spreadarith}% - \ifdim \dimexpr \@tempdimc+\tabu@spreadtarget >\tabu@target - \tabu@message{(tabu) spread - \ifdim \@tempdimc>\tabu@target useless here: default target used% - \else too large: reduced to fit default target\fi.}% - \else - \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax - \tabu@message{(tabu) spread: New target set to \the\tabu@target^^J}% - \fi - \begingroup \let\tabu@wddef \@gobbletwo - \@tempdimb \@tempdima - \tabucolX@init - \tabu@arithnegcoef - \wd\tabu@box =\dimexpr \wd\tabu@box +\@tempdima-\@tempdimb \relax - \expandafter\endgroup \expandafter\tabucolX \the\tabucolX - \tabu@arith - \fi -}% \tabu@spreadarith -\def\tabu@spread@arith #1#2{% - \ifdim #2\p@>\z@ \advance\dimen@ #2\p@ - \else \advance\@tempdima \tabu@wd{#1}\relax - \fi -}% \tabu@spread@arith -%% Reporting in the .log file --------------------------------------- -\def\tabu@message@defaulttarget{% - \ifnum\tabu@nested=\z@^^J(tabu) Default target: - \ifx\tabudefaulttarget\linewidth \string\linewidth - \ifdim \tabu@thetarget=\linewidth \else - -\the\dimexpr\linewidth-\tabu@thetarget\fi = - \else\ifx\tabudefaulttarget\linegoal\string\linegoal= - \fi\fi - \else (tabu) Default target (nested): \fi - \the\tabu@target \on@line - \ifnum\tabu@nested=\z@ , page \the\c@page\fi} -\def\tabu@message@target {^^J(tabu) Target specified: - \the\tabu@target \on@line, page \the\c@page} -\def\tabu@message@arith {\tabu@header - \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@ - \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{ }\@@ - \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@ - \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@ - \ifdim \tabu@DELTA<\tabu@hfuzz giving space\else - \tabu@msgalign \dimexpr (\@tempdima-\tabu@DELTA) *\p@/\tabu@Xsum -\tabucolX {}{}{}{}{}\@@ - \fi -}% \tabu@message@arith -\def\tabu@message@spreadarith {\tabu@spreadheader - \tabu@msgalign \tabu@spreadtarget { }{ }{ }{ }{}\@@ - \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{}\@@ - \tabu@msgalign -\tabu@naturalXmax { }{}{}{}{}\@@ - \tabu@msgalign \tabu@naturalXmin { }{ }{ }{ }{}\@@ - \tabu@msgalign \ifdim \dimexpr\@tempdimc>\tabu@target \tabu@target - \else \@tempdimc+\tabu@spreadtarget \fi - {}{}{}{}{}\@@} -\def\tabu@message@negcoef #1#2{ - \tabu@spaces\tabu@spaces\space * #1. X[\rem@pt#2]: - \space width = \tabu@wd {#1} - \expandafter\string\csname tabu@\the\tabu@nested.W\number#1\endcsname - \ifdim -\tabu@pt#2\tabucolX<\tabu@target - < \number-\rem@pt#2 X - = \the\dimexpr -\tabu@pt#2\tabucolX \relax - \else - <= \the\tabu@target\space < \number-\rem@pt#2 X\fi} -\def\tabu@message@reached{\tabu@header - ******* Reached Target: - hfuzz = \tabu@hfuzz\on@line\space *******} -\def\tabu@message@etime{\edef\tabu@stoptime{\the\pdfelapsedtime}% - \tabu@message{(tabu)\tabu@spaces Time elapsed during measure: - \the\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax sec - \the\numexpr\numexpr(\tabu@stoptime-\tabu@starttime) - -\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax*65536\relax - *1000/65536\relax ms \tabu@spaces(\the\tabu@cnt\space - cycle\ifnum\tabu@cnt>\@ne s\fi)^^J^^J}} -\def\tabu@message@verticalsp {% - \ifdim \@tempdima>\tabu@ht - \ifdim \@tempdimb>\tabu@dp - \expandafter\expandafter\expandafter\string\tabu@ht = - \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@ - \expandafter\expandafter\expandafter\string\tabu@dp = - \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J% - \else - \expandafter\expandafter\expandafter\string\tabu@ht = - \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@^^J% - \fi - \else\ifdim \@tempdimb>\tabu@dp - \tabu@spaces\tabu@spaces\tabu@spaces - \expandafter\expandafter\expandafter\string\tabu@dp = - \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J\fi - \fi -}% \tabu@message@verticalsp -\edef\tabu@spaces{\@spaces} -\def\tabu@strippt{\expandafter\tabu@pt\the} -{\@makeother\P \@makeother\T\lowercase{\gdef\tabu@pt #1PT{#1}}} -\def\tabu@msgalign{\expandafter\tabu@msg@align\the\dimexpr} -\def\tabu@msgalign@PT{\expandafter\tabu@msg@align\romannumeral-`\0\tabu@strippt} -\def\do #1{% - \def\tabu@msg@align##1.##2##3##4##5##6##7##8##9\@@{% - \ifnum##1<10 #1 #1\else - \ifnum##1<100 #1 \else - \ifnum##1<\@m #1\fi\fi\fi - ##1.##2##3##4##5##6##7##8#1}% - \def\tabu@header{(tabu) \ifnum\tabu@cnt<10 #1\fi\the\tabu@cnt) }% - \def\tabu@titles{\ifnum \tabu@nested=\z@ - (tabu) Try#1 #1 tabu X #1 #1 #1tabu Width #1 #1 Target - #1 #1 #1 Coefs #1 #1 #1 Update^^J\fi}% - \def\tabu@spreadheader{% - (tabu) Try#1 #1 Spread #1 #1 tabu Width #1 #1 #1 Nat. X #1 #1 #1 #1Nat. Min. - #1 New Target^^J% - (tabu) sprd} - \def\tabu@message@save {\begingroup - \def\x ####1{\tabu@msg@align ####1{ }{ }{ }{ }{}\@@} - \def\z ####1{\expandafter\x\expandafter{\romannumeral-`\0\tabu@strippt - \dimexpr####1\p@{ }{ }}}% - \let\color \relax \def\tabu@rulesstyle ####1####2{\detokenize{####1}}% - \let\CT@arc@ \relax \let\@preamble \@gobble - \let\tabu@savedpream \@firstofone - \let\tabu@savedparams \@firstofone - \def\tabu@target ####1\relax {(tabu) target #1 #1 #1 #1 #1 = \x{####1}^^J}% - \def\tabucolX ####1\relax {(tabu) X columns width#1 = \x{####1}^^J}% - \def\tabu@nbcols ####1\relax {(tabu) Number of columns: \z{####1}^^J}% - \def\tabu@aligndefault ####1{(tabu) Default alignment: #1 #1 ####1^^J}% - \def\col@sep ####1\relax {(tabu) column sep #1 #1 #1 = \x{####1}^^J}% - \def\arrayrulewidth ####1\relax{(tabu) arrayrulewidth #1 = \x{####1}}% - \def\doublerulesep ####1\relax { doublerulesep = \x{####1}^^J}% - \def\extratabsurround####1\relax{(tabu) extratabsurround = \x{####1}^^J}% - \def\extrarowheight ####1\relax{(tabu) extrarowheight #1 = \x{####1}}% - \def\extrarowdepth ####1\relax {extrarowdepth = \x{####1}^^J}% - \def\abovetabulinesep####1\relax{(tabu) abovetabulinesep=\x{####1} }% - \def\belowtabulinesep####1\relax{ belowtabulinesep=\x{####1}^^J}% - \def\arraystretch ####1{(tabu) arraystretch #1 #1 = \z{####1}^^J}% - \def\minrowclearance####1\relax{(tabu) minrowclearance #1 = \x{####1}^^J}% - \def\tabu@arc@L ####1{(tabu) taburulecolor #1 #1 = ####1^^J}% - \def\tabu@drsc@L ####1{(tabu) tabudoublerulecolor= ####1^^J}% - \def\tabu@evr@L ####1{(tabu) everyrow #1 #1 #1 #1 = \detokenize{####1}^^J}% - \def\tabu@ls@L ####1{(tabu) line style = \detokenize{####1}^^J}% - \def\NC@find ####1\@nil{(tabu) tabu preamble#1 #1 = \detokenize{####1}^^J}% - \def\tabu@wddef####1####2{(tabu) Natural width ####1 = \x{####2}^^J}% - \let\edef \@gobbletwo \let\def \@empty \let\let \@gobbletwo - \tabu@message{% - (tabu) \string\savetabu{\tabu@temp}: \on@line^^J% - \tabu@usetabu \@nil^^J}% - \endgroup} -}\do{ } -%% Measuring the natural width (varwidth) - store the results ------- -\def\tabu@startpboxmeasure #1{\bgroup % entering \vtop - \edef\tabu@temp{\expandafter\@secondoftwo \ifx\tabu@hsize #1\else\relax\fi}% - \ifodd 1\ifx \tabu@temp\@empty 0 \else % starts with \tabu@hsize ? - \iftabu@spread \else % if spread -> measure - \ifdim \tabu@temp\p@>\z@ 0 \fi\fi\fi% if coef>0 -> do not measure - \let\@startpbox \tabu@startpboxORI % restore immediately (nesting) - \tabu@measuringtrue % for the quick option... - \tabu@Xcol =\expandafter\@firstoftwo\ifx\tabu@hsize #1\fi - \ifdim \tabu@temp\p@>\z@ \ifdim \tabu@temp\tabucolX<\tabu@target - \tabu@target=\tabu@temp\tabucolX \fi\fi - \setbox\tabu@box \hbox \bgroup - \begin{varwidth}\tabu@target - \let\FV@ListProcessLine \tabu@FV@ListProcessLine % \hbox to natural width... - \narrowragged \arraybackslash \parfillskip \@flushglue - \ifdefined\pdfadjustspacing \pdfadjustspacing\z@ \fi - \bgroup \aftergroup\tabu@endpboxmeasure - \ifdefined \cellspacetoplimit \tabu@cellspacepatch \fi - \else \expandafter\@gobble - \tabu@startpboxquick{#1}% \@gobble \bgroup - \fi -}% \tabu@startpboxmeasure -\def\tabu@cellspacepatch{\def\bcolumn##1\@nil{}\let\ecolumn\@empty - \bgroup\color@begingroup} -\def\tabu@endpboxmeasure {% - \@finalstrut \@arstrutbox - \end{varwidth}\egroup % - \ifdim \tabu@temp\p@ <\z@ % neg coef - \ifdim \tabu@wd\tabu@Xcol <\wd\tabu@box - \tabu@wddef\tabu@Xcol {\the\wd\tabu@box}% - \tabu@debug{\tabu@message@endpboxmeasure}% - \fi - \else % spread coef>0 - \global\advance \tabu@naturalX \wd\tabu@box - \@tempdima =\dimexpr \wd\tabu@box *\p@/\dimexpr \tabu@temp\p@\relax \relax - \ifdim \tabu@naturalXmax <\tabu@naturalX - \xdef\tabu@naturalXmax {\the\tabu@naturalX}\fi - \ifdim \tabu@naturalXmin <\@tempdima - \xdef\tabu@naturalXmin {\the\@tempdima}\fi - \fi - \box\tabu@box \egroup % end of \vtop (measure) restore \tabu@target -}% \tabu@endpboxmeasure -\def\tabu@wddef #1{\expandafter\xdef - \csname tabu@\the\tabu@nested.W\number#1\endcsname} -\def\tabu@wd #1{\csname tabu@\the\tabu@nested.W\number#1\endcsname} -\def\tabu@message@endpboxmeasure{\tabu@spaces\tabu@spaces<-> % <-> save natural wd - \the\tabu@Xcol. X[\tabu@temp]: - target = \the\tabucolX \space - \expandafter\expandafter\expandafter\string\tabu@wd\tabu@Xcol - =\tabu@wd\tabu@Xcol -}% \tabu@message@endpboxmeasure -\def\tabu@startpboxquick {\bgroup - \let\@startpbox \tabu@startpboxORI % restore immediately - \let\tabu \tabu@quick % \begin is expanded before... - \expandafter\@gobble \@startpbox % gobbles \bgroup -}% \tabu@startpboxquick -\def\tabu@quick {\begingroup \iffalse{\fi \ifnum0=`}\fi - \toks@{}\def\tabu@stack{b}\tabu@collectbody \tabu@endquick -}% \tabu@quick -\def\tabu@endquick {% - \ifodd 1\ifx\tabu@end@envir\tabu@endtabu \else - \ifx\tabu@end@envir\tabu@endtabus \else 0\fi\fi\relax - \endgroup - \else \let\endtabu \relax - \tabu@end@envir - \fi -}% \tabu@quick -\def\tabu@endtabu {\end{tabu}} -\def\tabu@endtabus {\end{tabu*}} -%% Measuring the heights and depths - store the results ------------- -\def\tabu@verticalmeasure{\everypar{}% - \ifnum \currentgrouptype>12 % 14=semi-simple, 15=math shift group - \setbox\tabu@box =\hbox\bgroup - \let\tabu@verticalspacing \tabu@verticalsp@lcr - \d@llarbegin % after \hbox ... - \else - \edef\tabu@temp{\ifnum\currentgrouptype=5\vtop - \else\ifnum\currentgrouptype=12\vcenter - \else\vbox\fi\fi}% - \setbox\tabu@box \hbox\bgroup$\tabu@temp \bgroup - \let\tabu@verticalspacing \tabu@verticalsp@pmb - \fi -}% \tabu@verticalmeasure -\def\tabu@verticalsp@lcr{% - \d@llarend \egroup % - \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep - \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax - \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi - \ifdim \tabu@ht<\@tempdima \tabu@htdef{\the\@tempdima}\fi - \ifdim \tabu@dp<\@tempdimb \tabu@dpdef{\the\@tempdimb}\fi - \noindent\vrule height\@tempdima depth\@tempdimb -}% \tabu@verticalsp@lcr -\def\tabu@verticalsp@pmb{% inserts struts as needed - \par \expandafter\egroup - \expandafter$\expandafter - \egroup \expandafter - \@tempdimc \the\prevdepth - \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep - \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax - \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi - \ifdim \tabu@ht<\@tempdima \tabu@htdef{\the\@tempdima}\fi - \ifdim \tabu@dp<\@tempdimb \tabu@dpdef{\the\@tempdimb}\fi - \let\@finalstrut \@gobble - \hrule height\@tempdima depth\@tempdimb width\hsize -%% \box\tabu@box -}% \tabu@verticalsp@pmb - -\def\tabu@verticalinit{% - \ifnum \c@taburow=\z@ \tabu@rearstrut \fi % after \tabu@reset ! - \advance\c@taburow \@ne - \tabu@htdef{\the\ht\@arstrutbox}\tabu@dpdef{\the\dp\@arstrutbox}% - \advance\c@taburow \m@ne -}% \tabu@verticalinit -\def\tabu@htdef {\expandafter\xdef \csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname} -\def\tabu@ht {\csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname} -\def\tabu@dpdef {\expandafter\xdef \csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname} -\def\tabu@dp {\csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname} -\def\tabu@verticaldynamicadjustment {% - \advance\c@taburow \@ne - \extrarowheight \dimexpr\tabu@ht - \ht\strutbox - \extrarowdepth \dimexpr\tabu@dp - \dp\strutbox - \let\arraystretch \@empty - \advance\c@taburow \m@ne -}% \tabu@verticaldynamicadjustment -\def\tabuphantomline{\crcr \noalign{% - {\globaldefs \@ne - \setbox\@arstrutbox \box\voidb@x - \let\tabu@@celllalign \tabu@celllalign - \let\tabu@@cellralign \tabu@cellralign - \let\tabu@@cellleft \tabu@cellleft - \let\tabu@@cellright \tabu@cellright - \let\tabu@@thevline \tabu@thevline - \let\tabu@celllalign \@empty - \let\tabu@cellralign \@empty - \let\tabu@cellright \@empty - \let\tabu@cellleft \@empty - \let\tabu@thevline \relax}% - \edef\tabu@temp{\tabu@multispan \tabu@nbcols{\noindent &}}% - \toks@\expandafter{\tabu@temp \noindent\tabu@everyrowfalse \cr - \noalign{\tabu@rearstrut - {\globaldefs\@ne - \let\tabu@celllalign \tabu@@celllalign - \let\tabu@cellralign \tabu@@cellralign - \let\tabu@cellleft \tabu@@cellleft - \let\tabu@cellright \tabu@@cellright - \let\tabu@thevline \tabu@@thevline}}}% - \expandafter}\the\toks@ -}% \tabuphantomline -%% \firsthline and \lasthline corrections --------------------------- -\def\tabu@firstline {\tabu@hlineAZ \tabu@firsthlinecorrection {}} -\def\tabu@firsthline{\tabu@hlineAZ \tabu@firsthlinecorrection \hline} -\def\tabu@lastline {\tabu@hlineAZ \tabu@lasthlinecorrection {}} -\def\tabu@lasthline {\tabu@hlineAZ \tabu@lasthlinecorrection \hline} -\def\tabu@hline {% replaces \hline if no colortbl (see \AtBeginDocument) - \noalign{\ifnum0=`}\fi - {\CT@arc@\hrule height\arrayrulewidth}% - \futurelet \tabu@temp \tabu@xhline -}% \tabu@hline -\def\tabu@xhline{% - \ifx \tabu@temp \hline - {\ifx \CT@drsc@\relax \vskip - \else\ifx \CT@drsc@\@empty \vskip - \else \CT@drsc@\hrule height - \fi\fi - \doublerulesep}% - \fi - \ifnum0=`{\fi}% -}% \tabu@xhline -\def\tabu@hlineAZ #1#2{\noalign{\ifnum0=`}\fi \dimen@ \z@ \count@ \z@ - \toks@{}\def\tabu@hlinecorrection{#1}\def\tabu@temp{#2}% - \tabu@hlineAZsurround -}% \tabu@hlineAZ -\newcommand*\tabu@hlineAZsurround[1][\extratabsurround]{% - \extratabsurround #1\let\tabucline \tabucline@scan - \let\hline \tabu@hlinescan \let\firsthline \hline - \let\cline \tabu@clinescan \let\lasthline \hline - \expandafter \futurelet \expandafter \tabu@temp - \expandafter \tabu@nexthlineAZ \tabu@temp -}% \tabu@hlineAZsurround -\def\tabu@hlinescan {\tabu@thick \arrayrulewidth \tabu@xhlineAZ \hline} -\def\tabu@clinescan #1{\tabu@thick \arrayrulewidth \tabu@xhlineAZ {\cline{#1}}} -\def\tabucline@scan{\@testopt \tabucline@sc@n {}} -\def\tabucline@sc@n #1[#2]{\tabu@xhlineAZ {\tabucline[{#1}]{#2}}} -\def\tabu@nexthlineAZ{% - \ifx \tabu@temp\hline \else - \ifx \tabu@temp\cline \else - \ifx \tabu@temp\tabucline \else - \tabu@hlinecorrection - \fi\fi\fi -}% \tabu@nexthlineAZ -\def\tabu@xhlineAZ #1{% - \toks@\expandafter{\the\toks@ #1}% - \@tempdimc \tabu@thick % The last line width - \ifcase\count@ \@tempdimb \tabu@thick % The first line width - \else \advance\dimen@ \dimexpr \tabu@thick+\doublerulesep \relax - \fi - \advance\count@ \@ne \futurelet \tabu@temp \tabu@nexthlineAZ -}% \tabu@xhlineAZ -\def\tabu@firsthlinecorrection{% \count@ = number of \hline -1 - \@tempdima \dimexpr \ht\@arstrutbox+\dimen@ - \edef\firsthline{% - \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule - height \the\dimexpr\@tempdima+\extratabsurround - depth \dp\@arstrutbox - width \tabustrutrule}\hss}\cr - \noalign{\vskip -\the\dimexpr \@tempdima+\@tempdimb - +\dp\@arstrutbox \relax}% - \the\toks@ - }\ifnum0=`{\fi - \expandafter}\firsthline % we are then ! -}% \tabu@firsthlinecorrection -\def\tabu@lasthlinecorrection{% - \@tempdima \dimexpr \dp\@arstrutbox+\dimen@+\@tempdimb+\@tempdimc - \edef\lasthline{% - \the\toks@ - \noalign{\vskip -\the\dimexpr\dimen@+\@tempdimb+\dp\@arstrutbox}% - \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule - depth \the\dimexpr \dp\@arstrutbox+\@tempdimb+\dimen@ - +\extratabsurround-\@tempdimc - height \z@ - width \tabustrutrule}\hss}\cr - }\ifnum0=`{\fi - \expandafter}\lasthline % we are then ! -}% \tabu@lasthlinecorrection -\def\tabu@LT@@hline{% - \ifx\LT@next\hline - \global\let\LT@next \@gobble - \ifx \CT@drsc@\relax - \gdef\CT@LT@sep{% - \noalign{\penalty-\@medpenalty\vskip\doublerulesep}}% - \else - \gdef\CT@LT@sep{% - \multispan\LT@cols{% - \CT@drsc@\leaders\hrule\@height\doublerulesep\hfill}\cr}% - \fi - \else - \global\let\LT@next\empty - \gdef\CT@LT@sep{% - \noalign{\penalty-\@lowpenalty\vskip-\arrayrulewidth}}% - \fi - \ifnum0=`{\fi}% - \multispan\LT@cols - {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr - \CT@LT@sep - \multispan\LT@cols - {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr - \noalign{\penalty\@M}% - \LT@next -}% \tabu@LT@@hline -%% Horizontal lines : \tabucline ------------------------------------ -\let\tabu@start \@tempcnta -\let\tabu@stop \@tempcntb -\newcommand*\tabucline{\noalign{\ifnum0=`}\fi \tabu@cline} -\newcommand*\tabu@cline[2][]{\tabu@startstop{#2}% - \ifnum \tabu@stop<\z@ \toks@{}% - \else \tabu@clinearg{#1}\tabu@thestyle - \edef\tabucline{\toks@{% - \ifnum \tabu@start>\z@ \omit - \tabu@multispan\tabu@start {\span\omit}&\fi - \omit \tabu@multispan\tabu@stop {\span\omit}% - \tabu@thehline\cr - }}\tabucline - \tabu@tracinglines{(tabu:tabucline) Style: #1^^J\the\toks@^^J^^J}% - \fi - \futurelet \tabu@temp \tabu@xcline -}% \tabu@cline -\def\tabu@clinearg #1{% - \ifx\\#1\\\let\tabu@thestyle \tabu@ls@ - \else \@defaultunits \expandafter\let\expandafter\@tempa - \romannumeral-`\0#1\relax \@nnil - \ifx \hbox\@tempa \tabu@clinebox{#1}% - \else\ifx \box\@tempa \tabu@clinebox{#1}% - \else\ifx \vbox\@tempa \tabu@clinebox{#1}% - \else\ifx \vtop\@tempa \tabu@clinebox{#1}% - \else\ifx \copy\@tempa \tabu@clinebox{#1}% - \else\ifx \leaders\@tempa \tabu@clineleads{#1}% - \else\ifx \cleaders\@tempa \tabu@clineleads{#1}% - \else\ifx \xleaders\@tempa \tabu@clineleads{#1}% - \else\tabu@getline {#1}% - \fi\fi\fi\fi\fi\fi\fi\fi - \fi -}% \tabu@clinearg -\def\tabu@clinebox #1{\tabu@clineleads{\xleaders#1\hss}} -\def\tabu@clineleads #1{% - \let\tabu@thestyle \relax \let\tabu@leaders \@undefined - \gdef\tabu@thehrule{#1}} -\def\tabu@thehline{\begingroup - \ifdefined\tabu@leaders - \noexpand\tabu@thehleaders - \else \noexpand\tabu@thehrule - \fi \endgroup -}% \tabu@thehline -\def\tabu@xcline{% - \ifx \tabu@temp\tabucline - \toks@\expandafter{\the\toks@ \noalign - {\ifx\CT@drsc@\relax \vskip - \else \CT@drsc@\hrule height - \fi - \doublerulesep}}% - \fi - \tabu@docline -}% \tabu@xcline -\def\tabu@docline {\ifnum0=`{\fi \expandafter}\the\toks@} -\def\tabu@docline@evr {\xdef\tabu@doclineafter{\the\toks@}% - \ifnum0=`{\fi}\aftergroup\tabu@doclineafter} -\def\tabu@multispan #1#2{% - \ifnum\numexpr#1>\@ne #2\expandafter\tabu@multispan - \else \expandafter\@gobbletwo - \fi {#1-1}{#2}% -}% \tabu@multispan -\def\tabu@startstop #1{\tabu@start@stop #1\relax 1-\tabu@nbcols \@nnil} -\def\tabu@start@stop #1-#2\@nnil{% - \@defaultunits \tabu@start\number 0#1\relax \@nnil - \@defaultunits \tabu@stop \number 0#2\relax \@nnil - \tabu@stop \ifnum \tabu@start>\tabu@nbcols \m@ne - \else\ifnum \tabu@stop=\z@ \tabu@nbcols - \else\ifnum \tabu@stop>\tabu@nbcols \tabu@nbcols - \else \tabu@stop - \fi\fi\fi - \advance\tabu@start \m@ne - \ifnum \tabu@start>\z@ \advance\tabu@stop -\tabu@start \fi -}% \tabu@start@stop -%% Numbers: siunitx S columns (and \tabudecimal) ------------------- -\def\tabu@tabudecimal #1{% - \def\tabu@decimal{#1}\@temptokena{}% - \let\tabu@getdecimal@ \tabu@getdecimal@ignorespaces - \tabu@scandecimal -}% \tabu@tabudecimal -\def\tabu@scandecimal{\futurelet \tabu@temp \tabu@getdecimal@} -\def\tabu@skipdecimal#1{#1\tabu@scandecimal} -\def\tabu@getdecimal@ignorespaces{% - \ifcase 0\ifx\tabu@temp\ignorespaces\else - \ifx\tabu@temp\@sptoken1\else - 2\fi\fi\relax - \let\tabu@getdecimal@ \tabu@getdecimal - \expandafter\tabu@skipdecimal - \or \expandafter\tabu@gobblespace\expandafter\tabu@scandecimal - \else \expandafter\tabu@skipdecimal - \fi -}% \tabu@getdecimal@ignorespaces -\def\tabu@get@decimal#1{\@temptokena\expandafter{\the\@temptokena #1}% - \tabu@scandecimal} -\def\do#1{% - \def\tabu@get@decimalspace#1{% - \@temptokena\expandafter{\the\@temptokena #1}\tabu@scandecimal}% -}\do{ } -\let\tabu@@tabudecimal \tabu@tabudecimal -\def\tabu@getdecimal{% - \ifcase 0\ifx 0\tabu@temp\else - \ifx 1\tabu@temp\else - \ifx 2\tabu@temp\else - \ifx 3\tabu@temp\else - \ifx 4\tabu@temp\else - \ifx 5\tabu@temp\else - \ifx 6\tabu@temp\else - \ifx 7\tabu@temp\else - \ifx 8\tabu@temp\else - \ifx 9\tabu@temp\else - \ifx .\tabu@temp\else - \ifx ,\tabu@temp\else - \ifx -\tabu@temp\else - \ifx +\tabu@temp\else - \ifx e\tabu@temp\else - \ifx E\tabu@temp\else - \ifx\tabu@cellleft\tabu@temp1\else - \ifx\ignorespaces\tabu@temp1\else - \ifx\@sptoken\tabu@temp2\else - 3\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax - \expandafter\tabu@get@decimal - \or \expandafter\tabu@skipdecimal - \or \expandafter\tabu@get@decimalspace - \else\expandafter\tabu@printdecimal - \fi -}% \tabu@getdecimal -\def\tabu@printdecimal{% - \edef\tabu@temp{\the\@temptokena}% - \ifx\tabu@temp\@empty\else - \ifx\tabu@temp\space\else - \expandafter\tabu@decimal\expandafter{\the\@temptokena}% - \fi\fi -}% \tabu@printdecimal -%% Verbatim inside X columns ---------------------------------------- -\def\tabu@verbatim{% - \let\verb \tabu@verb - \let\FV@DefineCheckEnd \tabu@FV@DefineCheckEnd -}% \tabu@verbatim -\let\tabu@ltx@verb \verb -\def\tabu@verb{\@ifstar {\tabu@ltx@verb*} \tabu@ltx@verb} -\def\tabu@fancyvrb {% - \def\tabu@FV@DefineCheckEnd ##1{% - \def\tabu@FV@DefineCheckEnd{% - ##1% - \let\FV@CheckEnd \tabu@FV@CheckEnd - \let\FV@@CheckEnd \tabu@FV@@CheckEnd - \let\FV@@@CheckEnd \tabu@FV@@@CheckEnd - \edef\FV@EndScanning{% - \def\noexpand\next{\noexpand\end{\FV@EnvironName}}% - \global\let\noexpand\FV@EnvironName\relax - \noexpand\next}% - \xdef\FV@EnvironName{\detokenize\expandafter{\FV@EnvironName}}}% - }\expandafter\tabu@FV@DefineCheckEnd\expandafter{\FV@DefineCheckEnd} -}% \tabu@fancyvrb -\def\tabu@FV@CheckEnd #1{\expandafter\FV@@CheckEnd \detokenize{#1\end{}}\@nil} -\edef\tabu@FV@@@CheckEnd {\detokenize{\end{}}} -\begingroup -\catcode`\[1 \catcode`\]2 -\@makeother\{ \@makeother\} - \edef\x[\endgroup - \def\noexpand\tabu@FV@@CheckEnd ##1\detokenize[\end{]##2\detokenize[}]##3% - ]\x \@nil{\def\@tempa{#2}\def\@tempb{#3}} -\def\tabu@FV@ListProcessLine #1{% - \hbox {%to \hsize{% - \kern\leftmargin - \hbox {%to \linewidth{% - \FV@LeftListNumber - \FV@LeftListFrame - \FancyVerbFormatLine{#1}\hss -%% DG/SR modification begin - Jan. 28, 1998 (for numbers=right add-on) -%% \FV@RightListFrame}% - \FV@RightListFrame - \FV@RightListNumber}% -%% DG/SR modification end - \hss}} -%% \savetabu -------------------------------------------------------- -\newcommand*\savetabu[1]{\noalign{% - \tabu@sanitizearg{#1}\tabu@temp - \ifx \tabu@temp\@empty \tabu@savewarn{}{The tabu will not be saved}\else - \@ifundefined{tabu@saved@\tabu@temp}{}{\tabu@savewarn{#1}{Overwriting}}% - \ifdefined\tabu@restored \expandafter\let - \csname tabu@saved@\tabu@temp \endcsname \tabu@restored - \else {\tabu@save}% - \fi - \fi}% -}% \savetabu -\def\tabu@save {% - \toks0\expandafter{\tabu@saved@}% - \iftabu@negcoef - \let\tabu@wddef \relax \let\tabu@ \tabu@savewd \edef\tabu@savewd{\tabu@Xcoefs}% - \toks0\expandafter{\the\toks\expandafter0\tabu@savewd}\fi - \toks1\expandafter{\tabu@savedpream}% - \toks2\expandafter{\tabu@savedpreamble}% - \let\@preamble \relax - \let\tabu@savedpream \relax \let\tabu@savedparams \relax - \edef\tabu@preamble{% - \def\noexpand\tabu@aligndefault{\tabu@align}% - \def\tabu@savedparams {\noexpand\the\toks0}% - \def\tabu@savedpream {\noexpand\the\toks1}}% - \edef\tabu@usetabu{% - \def\@preamble {\noexpand\the\toks2}% - \tabu@target \the\tabu@target \relax - \tabucolX \the\tabucolX \relax - \tabu@nbcols \the\tabu@nbcols \relax - \def\noexpand\tabu@aligndefault{\tabu@align}% - \def\tabu@savedparams {\noexpand\the\toks0}% - \def\tabu@savedpream {\noexpand\the\toks1}}% - \let\tabu@aligndefault \relax \let\@sharp \relax - \edef\@tempa{\noexpand\tabu@s@ved - {\tabu@usetabu} - {\tabu@preamble} - {\the\toks1}}\@tempa - \tabu@message@save -}% \tabu@save -\long\def\tabu@s@ved #1#2#3{% - \def\tabu@usetabu{#1}% - \expandafter\gdef\csname tabu@saved@\tabu@temp\endcsname ##1{% - \ifodd ##1% \usetabu - \tabu@measuringfalse \tabu@spreadfalse % Just in case... - \gdef\tabu@usetabu {% - \ifdim \tabu@target>\z@ \tabu@warn@usetabu \fi - \global\let\tabu@usetabu \@undefined - \def\@halignto {to\tabu@target}% - #1% - \ifx \tabu@align\tabu@aligndefault@text - \ifnum \tabu@nested=\z@ - \let\tabu@align \tabu@aligndefault \fi\fi}% - \else % \preamble - \gdef\tabu@preamble {% - \global\let\tabu@preamble \@undefined - #2% - \ifx \tabu@align\tabu@aligndefault@text - \ifnum \tabu@nested=\z@ - \let\tabu@align \tabu@aligndefault \fi\fi}% - \fi - #3}% -}% \tabu@s@ved -\def\tabu@aligndefault@text {\tabu@aligndefault}% -\def\tabu@warn@usetabu {\PackageWarning{tabu} - {Specifying a target with \string\usetabu\space is useless - \MessageBreak The target cannot be changed!}} -\def\tabu@savewd #1#2{\ifdim #2\p@<\z@ \tabu@wddef{#1}{\tabu@wd{#1}}\fi} -\def\tabu@savewarn#1#2{\PackageInfo{tabu} - {User-name `#1' already used for \string\savetabu - \MessageBreak #2}}% -\def\tabu@saveerr#1{\PackageError{tabu} - {User-name `#1' is unknown for \string\usetabu - \MessageBreak I cannot restore an unknown preamble!}\@ehd} -%% \rowfont --------------------------------------------------------- -\newskip \tabu@cellskip -\def\tabu@rowfont{\ifdim \baselineskip=\z@\noalign\fi - {\ifnum0=`}\fi \tabu@row@font} -\newcommand*\tabu@row@font[2][]{% - \ifnum7=\currentgrouptype - \global\let\tabu@@cellleft \tabu@cellleft - \global\let\tabu@@cellright \tabu@cellright - \global\let\tabu@@celllalign \tabu@celllalign - \global\let\tabu@@cellralign \tabu@cellralign - \global\let\tabu@@rowfontreset\tabu@rowfontreset - \fi - \global\let\tabu@rowfontreset \tabu@rowfont@reset - \expandafter\gdef\expandafter\tabu@cellleft\expandafter{\tabu@cellleft #2}% - \ifcsname tabu@cell@#1\endcsname % row alignment - \csname tabu@cell@#1\endcsname \fi - \ifnum0=`{\fi}% end of group / noalign group -}% \rowfont -\def\tabu@ifcolorleavevmode #1{\let\color \tabu@leavevmodecolor #1\let\color\tabu@color}% -\def\tabu@rowfont@reset{% - \global\let\tabu@rowfontreset \tabu@@rowfontreset - \global\let\tabu@cellleft \tabu@@cellleft - \global\let\tabu@cellright \tabu@@cellright - \global\let\tabu@cellfont \@empty - \global\let\tabu@celllalign \tabu@@celllalign - \global\let\tabu@cellralign \tabu@@cellralign -}% \tabu@@rowfontreset -\let\tabu@rowfontreset \@empty % overwritten \AtBeginDocument if colortbl -%% \tabu@prepnext@tok ----------------------------------------------- -\newif \iftabu@cellright -\def\tabu@prepnext@tok{% - \ifnum \count@<\z@ % - \@tempcnta \@M % - \tabu@nbcols\z@ - \let\tabu@fornoopORI \@fornoop - \tabu@cellrightfalse - \else - \ifcase \numexpr \count@-\@tempcnta \relax % (case 0): prev. token is left - \advance \tabu@nbcols \@ne - \iftabu@cellright % before-previous token is right and is finished - \tabu@cellrightfalse % - \tabu@righttok - \fi - \tabu@lefttok - \or % (case 1) previous token is right - \tabu@cellrighttrue \let\@fornoop \tabu@lastnoop - \else % special column: do not change the token - \iftabu@cellright % before-previous token is right - \tabu@cellrightfalse - \tabu@righttok - \fi - \fi % \ifcase - \fi - \tabu@prepnext@tokORI -}% \tabu@prepnext@tok -\long\def\tabu@lastnoop#1\@@#2#3{\tabu@lastn@@p #2\@nextchar \in@\in@@} -\def\tabu@lastn@@p #1\@nextchar #2#3\in@@{% - \ifx \in@#2\else - \let\@fornoop \tabu@fornoopORI - \xdef\tabu@mkpreambuffer{\tabu@nbcols\the\tabu@nbcols \tabu@mkpreambuffer}% - \toks0\expandafter{\expandafter\tabu@everyrowtrue \the\toks0}% - \expandafter\prepnext@tok - \fi -}% \tabu@lastnoop -\def\tabu@righttok{% - \advance \count@ \m@ne - \toks\count@\expandafter {\the\toks\count@ \tabu@cellright \tabu@cellralign}% - \advance \count@ \@ne -}% \tabu@righttok -\def\tabu@lefttok{\toks\count@\expandafter{\expandafter\tabu@celllalign - \the\toks\count@ \tabu@cellleft}% after because of $ -}% \tabu@lefttok -%% Neutralisation of glues ------------------------------------------ -\let\tabu@cellleft \@empty -\let\tabu@cellright \@empty -\tabu@celllalign@def{\tabu@cellleft}% -\let\tabu@cellralign \@empty -\def\tabu@cell@align #1#2#3{% - \let\tabu@maybesiunitx \toks@ \tabu@celllalign - \global \expandafter \tabu@celllalign@def \expandafter {\the\toks@ #1}% - \toks@\expandafter{\tabu@cellralign #2}% - \xdef\tabu@cellralign{\the\toks@}% - \toks@\expandafter{\tabu@cellleft #3}% - \xdef\tabu@cellleft{\the\toks@}% -}% \tabu@cell@align -\def\tabu@cell@l{% force alignment to left - \tabu@cell@align - {\tabu@removehfil \raggedright \tabu@cellleft}% left - {\tabu@flush1\tabu@ignorehfil}% right - \raggedright -}% \tabu@cell@l -\def\tabu@cell@c{% force alignment to center - \tabu@cell@align - {\tabu@removehfil \centering \tabu@flush{.5}\tabu@cellleft} - {\tabu@flush{.5}\tabu@ignorehfil} - \centering -}% \tabu@cell@c -\def\tabu@cell@r{% force alignment to right - \tabu@cell@align - {\tabu@removehfil \raggedleft \tabu@flush1\tabu@cellleft} - \tabu@ignorehfil - \raggedleft -}% \tabu@cell@r -\def\tabu@cell@j{% force justification (for p, m, b columns) - \tabu@cell@align - {\tabu@justify\tabu@cellleft} - {} - \tabu@justify -}% \tabu@cell@j -\def\tabu@justify{% - \leftskip\z@skip \@rightskip\leftskip \rightskip\@rightskip - \parfillskip\@flushglue -}% \tabu@justify -%% ragged2e settings -\def\tabu@cell@L{% force alignment to left (ragged2e) - \tabu@cell@align - {\tabu@removehfil \RaggedRight \tabu@cellleft} - {\tabu@flush 1\tabu@ignorehfil} - \RaggedRight -}% \tabu@cell@L -\def\tabu@cell@C{% force alignment to center (ragged2e) - \tabu@cell@align - {\tabu@removehfil \Centering \tabu@flush{.5}\tabu@cellleft} - {\tabu@flush{.5}\tabu@ignorehfil} - \Centering -}% \tabu@cell@C -\def\tabu@cell@R{% force alignment to right (ragged2e) - \tabu@cell@align - {\tabu@removehfil \RaggedLeft \tabu@flush 1\tabu@cellleft} - \tabu@ignorehfil - \RaggedLeft -}% \tabu@cell@R -\def\tabu@cell@J{% force justification (ragged2e) - \tabu@cell@align - {\justifying \tabu@cellleft} - {} - \justifying -}% \tabu@cell@J -\def\tabu@flush#1{% - \iftabu@colortbl % colortbl uses \hfill rather than \hfil - \hskip \ifnum13<\currentgrouptype \stretch{#1}% - \else \ifdim#1pt<\p@ \tabu@cellskip - \else \stretch{#1} - \fi\fi \relax - \else % array.sty - \ifnum 13<\currentgrouptype - \hfil \hskip1sp \relax \fi - \fi -}% \tabu@flush -\let\tabu@hfil \hfil -\let\tabu@hfill \hfill -\let\tabu@hskip \hskip -\def\tabu@removehfil{% - \iftabu@colortbl - \unkern \tabu@cellskip =\lastskip - \ifnum\gluestretchorder\tabu@cellskip =\tw@ \hskip-\tabu@cellskip - \else \tabu@cellskip \z@skip - \fi - \else - \ifdim\lastskip=1sp\unskip\fi - \ifnum\gluestretchorder\lastskip =\@ne - \hfilneg % \hfilneg for array.sty but not for colortbl... - \fi - \fi -}% \tabu@removehfil -\def\tabu@ignorehfil{\aftergroup \tabu@nohfil} -\def\tabu@nohfil{% \hfil -> do nothing + restore original \hfil - \def\hfil{\let\hfil \tabu@hfil}% local to (alignment template) group -}% \tabu@nohfil -\def\tabu@colortblalignments {% if colortbl - \def\tabu@nohfil{% - \def\hfil {\let\hfil \tabu@hfil}% local to (alignment template) group - \def\hfill {\let\hfill \tabu@hfill}% (colortbl uses \hfill) pfff... - \def\hskip ####1\relax{\let\hskip \tabu@hskip}}% local -}% \tabu@colortblalignments -%% Taking care of footnotes and hyperfootnotes ---------------------- -\long\def\tabu@footnotetext #1{% - \edef\@tempa{\the\tabu@footnotes - \noexpand\footnotetext [\the\csname c@\@mpfn\endcsname]}% - \global\tabu@footnotes\expandafter{\@tempa {#1}}}% -\long\def\tabu@xfootnotetext [#1]#2{% - \global\tabu@footnotes\expandafter{\the\tabu@footnotes - \footnotetext [{#1}]{#2}}} -\let\tabu@xfootnote \@xfootnote -\long\def\tabu@Hy@ftntext{\tabu@Hy@ftntxt {\the \c@footnote }} -\long\def\tabu@Hy@xfootnote [#1]{% - \begingroup - \value\@mpfn #1\relax - \protected@xdef \@thefnmark {\thempfn}% - \endgroup - \@footnotemark \tabu@Hy@ftntxt {#1}% -}% \tabu@Hy@xfootnote -\long\def\tabu@Hy@ftntxt #1#2{% - \edef\@tempa{% - \the\tabu@footnotes - \begingroup - \value\@mpfn #1\relax - \noexpand\protected@xdef\noexpand\@thefnmark {\noexpand\thempfn}% - \expandafter \noexpand \expandafter - \tabu@Hy@footnotetext \expandafter{\Hy@footnote@currentHref}% - }% - \global\tabu@footnotes\expandafter{\@tempa {#2}% - \endgroup}% -}% \tabu@Hy@ftntxt -\long\def\tabu@Hy@footnotetext #1#2{% - \H@@footnotetext{% - \ifHy@nesting - \hyper@@anchor {#1}{#2}% - \else - \Hy@raisedlink{% - \hyper@@anchor {#1}{\relax}% - }% - \def\@currentHref {#1}% - \let\@currentlabelname \@empty - #2% - \fi - }% -}% \tabu@Hy@footnotetext -%% No need for \arraybackslash ! ------------------------------------ -\def\tabu@latextwoe {% -\def\tabu@temp##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}} -\tabu@temp \tabu@centering \centering \arraybackslash -\tabu@temp \tabu@raggedleft \raggedleft \arraybackslash -\tabu@temp \tabu@raggedright \raggedright \arraybackslash -}% \tabu@latextwoe -\def\tabu@raggedtwoe {% -\def\tabu@temp ##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}} -\tabu@temp \tabu@Centering \Centering \arraybackslash -\tabu@temp \tabu@RaggedLeft \RaggedLeft \arraybackslash -\tabu@temp \tabu@RaggedRight \RaggedRight \arraybackslash -\tabu@temp \tabu@justifying \justifying \arraybackslash -}% \tabu@raggedtwoe -\def\tabu@normalcrbackslash{\let\\\@normalcr} -\def\tabu@trivlist{\expandafter\def\expandafter\@trivlist\expandafter{% - \expandafter\tabu@normalcrbackslash \@trivlist}} -%% Utilities: \fbox \fcolorbox and \tabudecimal ------------------- -\def\tabu@fbox {\leavevmode\afterassignment\tabu@beginfbox \setbox\@tempboxa\hbox} -\def\tabu@beginfbox {\bgroup \kern\fboxsep - \bgroup\aftergroup\tabu@endfbox} -\def\tabu@endfbox {\kern\fboxsep\egroup\egroup - \@frameb@x\relax} -\def\tabu@color@b@x #1#2{\leavevmode \bgroup - \def\tabu@docolor@b@x{#1{#2\color@block{\wd\z@}{\ht\z@}{\dp\z@}\box\z@}}% - \afterassignment\tabu@begincolor@b@x \setbox\z@ \hbox -}% \tabu@color@b@x -\def\tabu@begincolor@b@x {\kern\fboxsep \bgroup - \aftergroup\tabu@endcolor@b@x \set@color} -\def\tabu@endcolor@b@x {\kern\fboxsep \egroup - \dimen@\ht\z@ \advance\dimen@ \fboxsep \ht\z@ \dimen@ - \dimen@\dp\z@ \advance\dimen@ \fboxsep \dp\z@ \dimen@ - \tabu@docolor@b@x \egroup -}% \tabu@endcolor@b@x -%% Corrections (arydshln, delarray, colortbl) ----------------------- -\def\tabu@fix@arrayright {%% \@arrayright is missing from \endarray - \iftabu@colortbl - \ifdefined\adl@array % - \def\tabu@endarray{% - \adl@endarray \egroup \adl@arrayrestore \CT@end \egroup % - \@arrayright % - \gdef\@preamble{}}% - \else % - \def\tabu@endarray{% - \crcr \egroup \egroup % - \@arrayright % - \gdef\@preamble{}\CT@end}% - \fi - \else - \ifdefined\adl@array % - \def\tabu@endarray{% - \adl@endarray \egroup \adl@arrayrestore \egroup % - \@arrayright % - \gdef\@preamble{}}% - \else % - \PackageWarning{tabu} - {\string\@arrayright\space is missing from the - \MessageBreak definition of \string\endarray. - \MessageBreak Compatibility with delarray.sty is broken.}% - \fi\fi -}% \tabu@fix@arrayright -\def\tabu@adl@xarraydashrule #1#2#3{% - \ifnum\@lastchclass=\adl@class@start\else - \ifnum\@lastchclass=\@ne\else - \ifnum\@lastchclass=5 \else % @-arg (class 5) and !-arg (class 1) - \adl@leftrulefalse \fi\fi % must be treated the same - \fi - \ifadl@zwvrule\else \ifadl@inactive\else - \@addtopreamble{\vrule\@width\arrayrulewidth - \@height\z@ \@depth\z@}\fi \fi - \ifadl@leftrule - \@addtopreamble{\adl@vlineL{\CT@arc@}{\adl@dashgapcolor}% - {\number#1}#3}% - \else \@addtopreamble{\adl@vlineR{\CT@arc@}{\adl@dashgapcolor}% - {\number#2}#3} - \fi -}% \tabu@adl@xarraydashrule -\def\tabu@adl@act@endpbox {% - \unskip \ifhmode \nobreak \fi \@finalstrut \@arstrutbox - \egroup \egroup - \adl@colhtdp \box\adl@box \hfil -}% \tabu@adl@act@endpbox -\def\tabu@adl@fix {% - \let\adl@xarraydashrule \tabu@adl@xarraydashrule % arydshln - \let\adl@act@endpbox \tabu@adl@act@endpbox % arydshln - \let\adl@act@@endpbox \tabu@adl@act@endpbox % arydshln - \let\@preamerror \@preamerr % arydshln -}% \tabu@adl@fix -%% Correction for longtable' \@startbox definition ------------------ -%% => \everypar is ``missing'' : TeX should be in vertical mode -\def\tabu@LT@startpbox #1{% - \bgroup - \let\@footnotetext\LT@p@ftntext - \setlength\hsize{#1}% - \@arrayparboxrestore - \everypar{% - \vrule \@height \ht\@arstrutbox \@width \z@ - \everypar{}}% -}% \tabu@LT@startpbox -%% \tracingtabu and the package options ------------------ -\DeclareOption{delarray}{\AtEndOfPackage{\RequirePackage{delarray}}} -\DeclareOption{linegoal}{% - \AtEndOfPackage{% - \RequirePackage{linegoal}[2010/12/07]% - \let\tabudefaulttarget \linegoal% \linegoal is \linewidth if not pdfTeX -}} -\DeclareOption{scantokens}{\tabuscantokenstrue} -\DeclareOption{debugshow}{\AtEndOfPackage{\tracingtabu=\tw@}} -\def\tracingtabu {\begingroup\@ifnextchar=% - {\afterassignment\tabu@tracing\count@} - {\afterassignment\tabu@tracing\count@1\relax}} -\def\tabu@tracing{\expandafter\endgroup - \expandafter\tabu@tr@cing \the\count@ \relax -}% \tabu@tracing -\def\tabu@tr@cing #1\relax {% - \ifnum#1>\thr@@ \let\tabu@tracinglines\message - \else \let\tabu@tracinglines\@gobble - \fi - \ifnum#1>\tw@ \let\tabu@DBG \tabu@@DBG - \def\tabu@mkarstrut {\tabu@DBG@arstrut}% - \tabustrutrule 1.5\p@ - \else \let\tabu@DBG \@gobble - \def\tabu@mkarstrut {\tabu@arstrut}% - \tabustrutrule \z@ - \fi - \ifnum#1>\@ne \let\tabu@debug \message - \else \let\tabu@debug \@gobble - \fi - \ifnum#1>\z@ - \let\tabu@message \message - \let\tabu@tracing@save \tabu@message@save - \let\tabu@starttimer \tabu@pdftimer - \else - \let\tabu@message \@gobble - \let\tabu@tracing@save \@gobble - \let\tabu@starttimer \relax - \fi -}% \tabu@tr@cing -%% Setup \AtBeginDocument -\AtBeginDocument{\tabu@AtBeginDocument} -\def\tabu@AtBeginDocument{\let\tabu@AtBeginDocument \@undefined - \ifdefined\arrayrulecolor \tabu@colortbltrue % - \tabu@colortblalignments % different glues are used - \else \tabu@colortblfalse \fi - \ifdefined\CT@arc@ \else \let\CT@arc@ \relax \fi - \ifdefined\CT@drsc@\else \let\CT@drsc@ \relax \fi - \let\tabu@arc@L \CT@arc@ \let\tabu@drsc@L \CT@drsc@ - \ifodd 1\ifcsname siunitx_table_collect_begin:Nn\endcsname % - \expandafter\ifx - \csname siunitx_table_collect_begin:Nn\endcsname\relax 0\fi\fi\relax - \tabu@siunitxtrue - \else \let\tabu@maybesiunitx \@firstofone % - \let\tabu@siunitx \tabu@nosiunitx - \tabu@siunitxfalse - \fi - \ifdefined\adl@array % - \else \let\tabu@adl@fix \relax - \let\tabu@adl@endtrial \@empty \fi - \ifdefined\longtable % - \else \let\longtabu \tabu@nolongtabu \fi - \ifdefined\cellspacetoplimit \tabu@warn@cellspace\fi - \csname\ifcsname ifHy@hyperfootnotes\endcsname % - ifHy@hyperfootnotes\else iffalse\fi\endcsname - \let\tabu@footnotetext \tabu@Hy@ftntext - \let\tabu@xfootnote \tabu@Hy@xfootnote \fi - \ifdefined\FV@DefineCheckEnd% - \tabu@fancyvrb \fi - \ifdefined\color % - \let\tabu@color \color - \def\tabu@leavevmodecolor ##1{% - \def\tabu@leavevmodecolor {\leavevmode ##1}% - }\expandafter\tabu@leavevmodecolor\expandafter{\color}% - \else - \let\tabu@color \tabu@nocolor - \let\tabu@leavevmodecolor \@firstofone \fi - \tabu@latextwoe - \ifdefined\@raggedtwoe@everyselectfont % - \tabu@raggedtwoe - \else - \let\tabu@cell@L \tabu@cell@l - \let\tabu@cell@R \tabu@cell@r - \let\tabu@cell@C \tabu@cell@c - \let\tabu@cell@J \tabu@cell@j \fi - \expandafter\in@ \expandafter\@arrayright \expandafter{\endarray}% - \ifin@ \let\tabu@endarray \endarray - \else \tabu@fix@arrayright \fi% - \everyrow{}% -}% \tabu@AtBeginDocument -\def\tabu@warn@cellspace{% - \PackageWarning{tabu}{% - Package cellspace has some limitations - \MessageBreak And redefines some macros of array.sty. - \MessageBreak Please use \string\tabulinesep\space to control - \MessageBreak vertical spacing of lines inside tabu environment}% -}% \tabu@warn@cellspace -%% tabu Package initialisation -\tabuscantokensfalse -\let\tabu@arc@G \relax -\let\tabu@drsc@G \relax -\let\tabu@evr@G \@empty -\let\tabu@rc@G \@empty -\def\tabu@ls@G {\tabu@linestyle@}% -\let\tabu@@rowfontreset \@empty % -\let\tabu@@celllalign \@empty -\let\tabu@@cellralign \@empty -\let\tabu@@cellleft \@empty -\let\tabu@@cellright \@empty -\def\tabu@naturalXmin {\z@} -\def\tabu@naturalXmax {\z@} -\let\tabu@rowfontreset \@empty -\def\tabulineon {4pt}\let\tabulineoff \tabulineon -\tabu@everyrowtrue -\ifdefined\pdfelapsedtime % - \def\tabu@pdftimer {\xdef\tabu@starttime{\the\pdfelapsedtime}}% -\else \let\tabu@pdftimer \relax \let\tabu@message@etime \relax -\fi -\tracingtabu=\z@ -\newtabulinestyle {=\maxdimen}% creates the 'factory' settings \tabu@linestyle@ -\tabulinestyle{} -\taburowcolors{} -\let\tabudefaulttarget \linewidth -\ProcessOptions* % \ProcessOptions* is quicker ! -\endinput -%% -%% End of file `tabu.sty'. diff --git a/donnee/client.txt b/donnee/client.txt index f4ea830..6bf8547 100644 --- a/donnee/client.txt +++ b/donnee/client.txt @@ -1,4 +1,4 @@ -32 0.00 1 -660 68.00 0 +32 3.20 1 +660 56.00 0 5079 75.50 0 53 0.00 0 diff --git a/makefile b/makefile index 02b4524..16d3168 100644 --- a/makefile +++ b/makefile @@ -1,4 +1,4 @@ -GCCFLAGS = -Wall -Wextra -I src -Wno-unused-parameter -Wno-unused-but-set-variable +GCCFLAGS = -Wall -Wextra -pedantic -I src -Wno-unused-parameter -Wno-unused-but-set-variable BUILD_DIR = build SOURCES = $(shell find src -name '*.c') TARGETS = $(patsubst %.c, %.o, $(SOURCES)) @@ -6,22 +6,25 @@ TARGETS := $(addprefix $(BUILD_DIR)/, $(TARGETS)) APP_NAME = app DOXYGEN_CONFIG = docs/Doxyfile.in +GREEN = \033[0;32m +RESET = \033[0m + all: $(APP_NAME) $(APP_NAME): $(TARGETS) @gcc $(GCCFLAGS) -o $(APP_NAME) $(TARGETS) - @echo -e $(GREEN)build done.$(RESET) + @echo -e build done. $(TARGETS): $(SOURCES) @mkdir -p $(@D) @gcc $(GCCFLAGS) -c $(patsubst %.o, %.c, $(@:$(BUILD_DIR)/%=%)) -o $@ - clean: @rm -r $(BUILD_DIR) $(APP_NAME) - @echo -e $(GREEN)clean done.$(RESET) - + @rm -r docs/html docs/latex + @rm -r obj/*.o, obj/*.d + @echo clean done. docs: @doxygen $(DOXYGEN_CONFIG) - @echo -e $(GREEN)docs done.$(RESET) \ No newline at end of file + @echo docs done. diff --git a/src/app/core_logic/client.c b/src/app/core_logic/client.c index 65aaf55..5f9c8e3 100644 --- a/src/app/core_logic/client.c +++ b/src/app/core_logic/client.c @@ -1,24 +1,8 @@ -/** - * @file client.c - * @brief Fonctions liées à la gestion des clients et de leur panier. - */ - #include "client.h" #define MAX_ARTICLES 100 #define MAX_CLIENTS 100 -/** - * @brief Charge les données des clients à partir d'un fichier. - * - * Cette fonction permet de charger les données des clients à partir d'un fichier. - * - * @param numeros - Tableau des numéros de clients. - * @param cagnottes - Tableau des cagnottes des clients. - * @param suspendues - Tableau des états de suspension des clients. - * @param tPhysique - Taille du tableau physique. - * @return Le nombre de clients chargés ou -1 en cas d'erreur. - */ int charger_clients(int numeros[], float cagnottes[], int suspendues[], int tPhysique) { int i = 0, numero, suspendue; float cagnotte; @@ -42,17 +26,6 @@ int charger_clients(int numeros[], float cagnottes[], int suspendues[], int tPhy return i; } -/** - * @brief Sauvegarde les données clients dans un fichier. - * - * Cette fonction permet de sauvegarder les données clients, y compris les numéros de clients, les cagnottes, - * et les états de suspension, dans un fichier texte. - * - * @param numeros - Tableau des numéros de clients. - * @param cagnottes - Tableau des cagnottes des clients. - * @param suspendus - Tableau des états de suspension des clients. - * @param nombreClients - Nombre de clients. - */ void sauvegarde_clients(int numeros[], float cagnottes[], int suspendus[], int nombreClients) { FILE *fe; fe = fopen("donnee/client.txt", "w"); @@ -66,16 +39,6 @@ void sauvegarde_clients(int numeros[], float cagnottes[], int suspendus[], int n fclose(fe); } -/** - * @brief Recherche l'index de l'article dans le tableau des références. - * - * Cette fonction recherche l'index de l'article avec la référence donnée dans le tableau des références. - * - * @param reference - Référence de l'article à rechercher. - * @param references - Tableau des références des articles. - * @param nombreArticles - Nombre d'articles disponibles. - * @return L'index de l'article s'il est trouvé, sinon -1. - */ int trouver_index_article(int reference, int references[], int nombreArticles) { for (int i = 0; i < nombreArticles; i++) { if (references[i] == reference) { @@ -85,42 +48,15 @@ int trouver_index_article(int reference, int references[], int nombreArticles) { return -1; } -/** - * @brief Trouve l'index d'un client dans le tableau des numéros de clients. - * - * Cette fonction recherche le numéro du client dans le tableau des numéros de clients - * et retourne l'index du client s'il est trouvé. - * - * @param numeroClient - Numéro du client à rechercher. - * @param numeros - Tableau des numéros de clients. - * @param nombreClients - Nombre de clients dans le tableau. - * @return L'index du client s'il est trouvé, -1 sinon. - */ int trouver_index_client(int numeroClient, int numeros[], int nombreClients) { for (int i = 0; i < nombreClients; i++) { if (numeros[i] == numeroClient) { - return i; // Retourne l'index du client si trouvé + return i; } } - return -1; // Retourne -1 si le client n'est pas trouvé + return -1; } -/** - * @brief Supprime un article du panier du client. - * - * Cette fonction permet de supprimer un article du panier du client tout en metant a jour la cagnotte. - * - * @param panier - * @param quantites - * @param taillePanier - * @param reference - * @param numeroClient - * @param numeros - * @param nombreClients - * @param references - * @param prixUnitaire - * @param cagnottes - */ void supprimer_article(int panier[], int quantites[], int *taillePanier, int reference, int numeroClient, int numeros[], int nombreClients, int references[], float prixUnitaire[], float cagnottes[]) { int articleIndex, clientIndex, quantite = 0; articleIndex = trouver_index_article(reference, references, MAX_ARTICLES); @@ -143,5 +79,4 @@ void supprimer_article(int panier[], int quantites[], int *taillePanier, int ref float montantTotal = prixUnitaire[articleIndex] * quantite; cagnottes[clientIndex] -= 0.1 * montantTotal; } -} - +} \ No newline at end of file diff --git a/src/app/core_logic/client.h b/src/app/core_logic/client.h index b074873..4cc46f1 100644 --- a/src/app/core_logic/client.h +++ b/src/app/core_logic/client.h @@ -1,82 +1,77 @@ -#ifndef SAE_101_CLIENT_H -#define SAE_101_CLIENT_H +/** + * @file client.h + * @brief Fichier d'en-tête pour les fonctions de gestion des clients. + * + * Ce fichier d'en-tête définit les fonctions liées à la gestion des clients, telles que le chargement des clients, la sauvegarde, etc. + * + * @author Hersan Mathéo + */ + +#ifndef CLIENT_H +#define CLIENT_H #include #include #include "../interface/interface_client.h" /** - * @file client.h - * @brief Fonctions liées à la gestion des clients et de leur panier. - */ - -/** - * @brief Charge les données des clients à partir d'un fichier. + * @brief Charger les données des clients depuis un fichier. * - * @param numeros - Tableau des numéros de clients. - * @param cagnottes - Tableau des cagnottes des clients. - * @param suspendues - Tableau des états de suspension des clients. - * @param tPhysique - Taille du tableau physique. - * @return Le nombre de clients chargés ou -1 en cas d'erreur. + * @param numeros - Un tableau de numéros de clients. + * @param cagnottes - Un tableau de cagnottes des clients. + * @param suspendues - Un tableau d'état des clients suspendus. + * @param tPhysique - La taille physique du tableau des clients. + * + * @return Le nombre de clients chargés depuis le fichier. */ int charger_clients(int numeros[], float cagnottes[], int suspendues[], int tPhysique); - /** - * @brief Sauvegarde les données clients dans un fichier. + * @brief Sauvegarder les données des clients dans un fichier. * - * Cette fonction permet de sauvegarder les données clients, y compris les numéros de clients, les cagnottes, - * et les états de suspension, dans un fichier texte. - * - * @param numeros - Tableau des numéros de clients. - * @param cagnottes - Tableau des cagnottes des clients. - * @param suspendus - Tableau des états de suspension des clients. - * @param nombreClients - Nombre de clients. + * @param numeros - Un tableau de numéros de clients. + * @param cagnottes - Un tableau de cagnottes des clients. + * @param suspendus - Un tableau d'état des clients suspendus. + * @param nombreClients - Le nombre total de clients. */ void sauvegarde_clients(int numeros[], float cagnottes[], int suspendus[], int nombreClients); - /** - * @brief Supprime un article du panier du client. - * - * Cette fonction permet de supprimer un article du panier du client tout en metant a jour la cagnotte. + * @brief Supprimer un article du panier du client. * - * @param panier - * @param quantites - * @param taillePanier - * @param reference - * @param numeroClient - * @param numeros - * @param nombreClients - * @param references - * @param prixUnitaire - * @param cagnottes + * @param panier - Le panier d'achat du client. + * @param quantites - Un tableau de quantités d'articles dans le panier. + * @param[out] taillePanier - Un pointeur pour stocker la taille du panier. + * @param reference - La référence de l'article à supprimer. + * @param numeroClient - Le numéro du client. + * @param numeros - Un tableau de numéros de clients. + * @param nombreClients - Le nombre total de clients. + * @param references - Un tableau de références d'articles. + * @param prixUnitaire - Un tableau de prix unitaires d'articles. + * @param cagnottes - Un tableau de cagnottes des clients. */ void supprimer_article(int panier[], int quantites[], int *taillePanier, int reference, int numeroClient, int numeros[], int nombreClients, int references[], float prixUnitaire[], float cagnottes[]); /** - * @brief Recherche l'index de l'article dans le tableau des références. + * @brief Trouver l'index d'une référence d'article dans un tableau. * - * Cette fonction recherche l'index de l'article avec la référence donnée dans le tableau des références. + * @param reference - La référence de l'article à rechercher. + * @param references - Un tableau de références d'articles. + * @param nombreArticles - Le nombre total d'articles. * - * @param reference - Référence de l'article à rechercher. - * @param references - Tableau des références des articles. - * @param nombreArticles - Nombre d'articles disponibles. - * @return L'index de l'article s'il est trouvé, sinon -1. + * @return L'index de la référence dans le tableau ou -1 si la référence n'est pas trouvée. */ int trouver_index_article(int reference, int references[], int nombreArticles); /** - * @brief Trouve l'index d'un client dans le tableau des numéros de clients. + * @brief Trouver l'index d'un numéro de client dans un tableau. * - * Cette fonction recherche le numéro du client dans le tableau des numéros de clients - * et retourne l'index du client s'il est trouvé. + * @param numeroClient - Le numéro de client à rechercher. + * @param numeros - Un tableau de numéros de clients. + * @param nombreClients - Le nombre total de clients. * - * @param numeroClient - Numéro du client à rechercher. - * @param numeros - Tableau des numéros de clients. - * @param nombreClients - Nombre de clients dans le tableau. - * @return L'index du client s'il est trouvé, -1 sinon. + * @return L'index du numéro de client dans le tableau ou -1 si le numéro de client n'est pas trouvé. */ int trouver_index_client(int numeroClient, int numeros[], int nombreClients); -#endif // SAE_101_CLIENT_H +#endif // CLIENT_H diff --git a/src/app/interface/interface_client.c b/src/app/interface/interface_client.c index 41cad45..536a3db 100644 --- a/src/app/interface/interface_client.c +++ b/src/app/interface/interface_client.c @@ -1,15 +1,7 @@ -/** - * @file interface_client.c - * @brief Implémentation des fonctions liées à l'interface client. - */ - #include "interface_client.h" #define MAX_ARTICLES 100 #define MAX_CLIENTS 100 -/** - * @brief Affiche le menu principal de l'interface client. - */ void affiche_client() { printf("\n"); printf("+-------------+\n"); @@ -19,37 +11,16 @@ void affiche_client() { printf("+----------------------------------------------------------------+\n"); printf("|| Que voulez-vous faire ?\t\t\t\t\t||\n"); printf("||\t1 : Afficher le récapitulatif du panier.\t \t||\n"); - printf("||\t2 : Ajouter un article au panier. \t\t\t||\n"); - printf("||\t3 : Supprimer un article du panier. \t\t\t||\n"); - printf("||\t4 : Modifier la quantité d'un article du panier. \t||\n"); - printf("||\t5 : Réinitialiser le panier.\t\t\t\t||\n"); + printf("||\t2 : Afficher les articles disponibles.\t\t\t||\n"); + printf("||\t3 : Ajouter un article au panier. \t\t\t||\n"); + printf("||\t4 : Supprimer un article du panier. \t\t\t||\n"); + printf("||\t5 : Modifier la quantité d'un article du panier. \t||\n"); + printf("||\t6 : Réinitialiser le panier.\t\t\t\t||\n"); printf("||\t9 : Quitter.\t\t\t\t\t\t||\n"); printf("+----------------------------------------------------------------+\n"); } -/** - * @brief Ajoute un article au panier du client. - * - * Cette fonction permet d'ajouter un article au panier du client. - * - * @param numeroClient - Numéro du client. - * @param references - Tableau des références des articles. - * @param poids - Tableau des poids des articles. - * @param volume - Tableau des volumes des articles. - * @param prixUnitaire - Tableau des prix unitaires des articles. - * @param numeros - Tableau des numéros de clients. - * @param cagnottes - Tableau des cagnottes des clients. - * @param suspendues - Tableau des états de suspension des clients. - * @param nombreArticles - Nombre d'articles disponibles. - * @param nombreClients - Nombre de clients. - * @param volumeCoffre - Volume total du coffre. - * @param chargeMaximale - Charge maximale du coffre. - * @param panier - Tableau des références des articles dans le panier. - * @param quantites - Tableau des quantités de chaque article dans le panier. - * @param taillePanier - Taille du panier. - * @param budget - Budget du client. - */ void ajouter_article_au_panier(int numeroClient, int references[], float poids[], float volume[], float prixUnitaire[], int numeros[], float cagnottes[], int suspendues[], int nombreArticles, int nombreClients, float volumeCoffre, float chargeMaximale, int panier[], int quantites[], int *taillePanier, float budget) { @@ -148,15 +119,6 @@ void ajouter_article_au_panier(int numeroClient, int references[], float poids[] } -/** - * @brief Supprime un article du panier du client. - * - * Cette fonction permet de supprimer un article du panier du client. - * - * @param panier - Tableau des références des articles dans le panier. - * @param quantites - Tableau des quantités de chaque article dans le panier. - * @param taillePanier - Taille du panier. - */ void supprimer_article_du_panier(int panier[], int quantites[], int *taillePanier, float cagnottes[], int numeroClient, int numeros[], int nombreClients, int references[], float prixUnitaire[]) { int reference, articleIndex; printf("Entrez la référence de l'article à supprimer : "); @@ -179,32 +141,10 @@ void supprimer_article_du_panier(int panier[], int quantites[], int *taillePanie supprimer_article(panier, quantites, taillePanier, reference, numeroClient, numeros, nombreClients, references, prixUnitaire, cagnottes); - printf("Article supprimé du panier avec succès.\n"); } -/** - * @brief Affiche un récapitulatif du contenu du panier. - * - * Cette fonction permet d'afficher un récapitulatif détaillé du contenu du panier du client, y compris les références des articles, - * les quantités, les poids, les volumes, les prix unitaires, les totaux de poids, de volume, de prix, et la cagnotte du client. - * - * @param panier - Tableau des références des articles dans le panier. - * @param taillePanier - Taille du panier. - * @param references - Tableau des références des articles. - * @param poids - Tableau des poids des articles. - * @param volume - Tableau des volumes des articles. - * @param prixUnitaire - Tableau des prix unitaires des articles. - * @param quantites - Tableau des quantités de chaque article dans le panier. - * @param cagnottes - Tableau des cagnottes des clients. - * @param numeroClient - Numéro du client. - * @param numeros - Tableau des numéros de clients. - * @param nombreClients - Nombre de clients. - * @param volumeCoffre - Volume total du coffre. - * @param chargeMaximale - Charge maximale du coffre. - * @param budget - Budget du client. - */ void affiche_recap_panier(int panier[], int taillePanier, int references[], float poids[], float volume[], float prixUnitaire[], int quantites[], float cagnottes[], int numeroClient, int numeros[], int nombreClients, float volumeCoffre, float chargeMaximale, float budget) { @@ -271,19 +211,6 @@ void affiche_recap_panier(int panier[], int taillePanier, int references[], floa } } -/** - * @brief Affiche le récapitulatif du panier. - * - * Cette fonction affiche le récapitulatif du panier, y compris les références, les poids, les volumes, les prix unitaires, elle permet d'initialiser la session du client. - * - * @param numeros - * @param suspendus - * @param nombreClients - * @param budget - * @param volumeCoffre - * @param chargeMaximale - * @param numeroClient - */ void configurer_session_client(int numeros[], int suspendus[], int nombreClients, double *budget, float *volumeCoffre, float *chargeMaximale, int *numeroClient) { int indexClient, choixBudget = 0; @@ -304,10 +231,6 @@ void configurer_session_client(int numeros[], int suspendus[], int nombreClients indexClient = trouver_index_client(*numeroClient, numeros, nombreClients); } - if (suspendus[indexClient] == 1) { - printf("Le client est suspendu et ne peut pas utiliser l'application.\n"); - exit(1); // Quitter l'application si le client est suspendu. - } printf("Voulez-vous définir un budget à ne pas dépasser ? (1 pour Oui, 0 pour Non) : "); while (scanf("%d", &choixBudget) != 1 || (choixBudget != 0 && choixBudget != 1)) { @@ -336,21 +259,6 @@ void configurer_session_client(int numeros[], int suspendus[], int nombreClients } } -/** - * @brief Modifie la quantité d'un article dans le panier du client. - * - * Cette fonction permet de modifier la quantité d'un article dans le panier du client tout en mettant à jour la cagnotte. - * - * @param panier - * @param quantites - * @param taillePanier - * @param cagnottes - * @param numeroClient - * @param prixUnitaire - * @param references - * @param nombreClients - * @param numeros - */ void modifier_quantite_article_panier(int panier[], int quantites[], int *taillePanier, float cagnottes[], int numeroClient, float prixUnitaire[], int references[], int nombreClients, int numeros[]) { int reference, quantite, articleIndex, clientIndex; @@ -366,7 +274,7 @@ void modifier_quantite_article_panier(int panier[], int quantites[], int *taille articleIndex = trouver_index_article(reference, panier, *taillePanier); while (articleIndex == -1) { - printf("Article non trouvé dans le panier. Veuillez entrer une référence valide."); + printf("Article non trouvé dans le panier. Veuillez entrer une référence valide : "); while (scanf("%d", &reference) != 1) { while (getchar() != '\n'); printf("ERREUR : Veuillez entrer une référence valide (nombre) : "); @@ -376,7 +284,7 @@ void modifier_quantite_article_panier(int panier[], int quantites[], int *taille } printf("Entrez la quantité : "); - while (scanf("%d", &quantite) != 1) { + while (scanf("%d", &quantite) != 1 || quantite <= 0) { while (getchar() != '\n'); printf("ERREUR : Veuillez entrer une quantité valide (nombre) : "); } @@ -393,21 +301,6 @@ void modifier_quantite_article_panier(int panier[], int quantites[], int *taille printf("Quantité modifiée avec succès.\n"); } -/** - * @brief Réinitialise le panier du client. - * - * Cette fonction permet de réinitialiser le panier du client. - * - * @param panier - * @param quantites - * @param taillePanier - * @param cagnottes - * @param numeroClient - * @param numeros - * @param nombreClients - * @param references - * @param prixUnitaire - */ void reinitialiser_panier(int panier[], int quantites[], int *taillePanier, float cagnottes[], int numeroClient, int numeros[], int nombreClients, int references[], float prixUnitaire[]) { for (int i = 0; i < *taillePanier; i++) { supprimer_article(panier, quantites, taillePanier, panier[i], numeroClient, numeros, nombreClients, references, prixUnitaire, cagnottes); @@ -415,18 +308,6 @@ void reinitialiser_panier(int panier[], int quantites[], int *taillePanier, floa *taillePanier = 0; } -/** - * @brief Déduit un montant de la cagnotte du client. - * - * Cette fonction permet de déduire un montant de la cagnotte du client. - * - * @param numeroClient - Numéro du client. - * @param montant - Montant à déduire de la cagnotte. - * @param numeros - Tableau des numéros de clients. - * @param cagnottes - Tableau des cagnottes des clients. - * @param nombreClients - Nombre de clients. - * @param suspendus - Tableau des états de suspension des clients. - */ void deduire_cagnotte(int numeroClient, float montant, int numeros[], float cagnottes[], int nombreClients, int suspendus[]) { int clientIndex = -1; for (int i = 0; i < nombreClients; i++) { @@ -451,25 +332,6 @@ void deduire_cagnotte(int numeroClient, float montant, int numeros[], float cagn printf("Montant déduit de la cagnotte avec succès.\n"); } -/** - * @brief Quitte l'application. - * - * Cette fonction permet de quitter l'application en affichant un récapitulatif du panier et en proposant de déduire un montant de la cagnotte. - * - * @param panier - * @param taillePanier - * @param references - * @param poids - * @param volume - * @param prixUnitaire - * @param quantites - * @param cagnottes - * @param numeroClient - * @param numeros - * @param nombreClients - * @param budget - * @param suspendus - */ void quitter_application(int panier[], int taillePanier, int references[], float poids[], float volume[], float prixUnitaire[], int quantites[], float cagnottes[], int numeroClient, int numeros[], int nombreClients, float budget, int suspendus[]) { @@ -497,6 +359,11 @@ void quitter_application(int panier[], int taillePanier, int references[], float clientIndex = trouver_index_client(numeroClient, numeros, nombreClients); + if (suspendus[clientIndex] == 1) { + printf("Vous ne pourrez pas utiliser votre cagnotte car votre carte est suspendu.\n"); + } + + printf("Prix total à payer: %.2f euros\n", montantTotal); if (budget > 0) { printf("Budget : %.2f euros\n", budget); @@ -539,15 +406,11 @@ void quitter_application(int panier[], int taillePanier, int references[], float deduire_cagnotte(numeroClient, montantDeduction, numeros, cagnottes, nombreClients, suspendus); printf("Le montant a été déduit de votre cagnotte.\n"); + printf("Il vous reste %.2f euros dans votre cagnotte.\n", cagnottes[clientIndex]); } } } -/** - * @brief Laisse l'utilisateur choisir une option du menu. - * - * @param[in, out] choix - L'option choisie par l'utilisateur. - */ void menu_client(int *choix) { affiche_client(); printf("Vous choisissez: "); @@ -557,13 +420,6 @@ void menu_client(int *choix) { } } -/** - * @brief Fonction principale de l'interface client. - * - * Cette fonction permet aux clients d'utiliser l'application pour gérer leur panier - * et effectuer des opérations telles que l'ajout, la suppression ou la modification - * d'articles dans le panier. - */ void global_client() { int choix, references[MAX_ARTICLES], numeros[MAX_CLIENTS], suspendus[MAX_CLIENTS], nombreArticles, nombreClients, numeroClient, quantites[MAX_ARTICLES], panier[MAX_ARTICLES], taillePanier = 0; @@ -586,16 +442,21 @@ void global_client() { numeroClient, numeros, nombreClients, volumeCoffre, chargeMaximale, budget); break; case 2: + affichArticles(references, poids, volume, prixUnitaire, nombreArticles); + break; + case 3: ajouter_article_au_panier(numeroClient, references, poids, volume, prixUnitaire, numeros, cagnottes, suspendus, nombreArticles, nombreClients, volumeCoffre, chargeMaximale, panier, quantites, &taillePanier, budget); break; - case 3: + case 4: supprimer_article_du_panier(panier, quantites, &taillePanier, cagnottes, numeroClient, numeros, nombreClients, references, prixUnitaire); + affiche_recap_panier(panier, taillePanier, references, poids, volume, prixUnitaire, quantites, cagnottes, + numeroClient, numeros, nombreClients, volumeCoffre, chargeMaximale, budget); break; - case 4: + case 5: modifier_quantite_article_panier(panier, quantites, &taillePanier, cagnottes, numeroClient, prixUnitaire, references, nombreClients, numeros); break; - case 5: + case 6: reinitialiser_panier(panier, quantites, &taillePanier, cagnottes, numeroClient, numeros, nombreClients, references, prixUnitaire); printf("Le panier a été réinitialisé.\n"); break; diff --git a/src/app/interface/interface_client.h b/src/app/interface/interface_client.h index eee9254..e95b39f 100644 --- a/src/app/interface/interface_client.h +++ b/src/app/interface/interface_client.h @@ -1,175 +1,174 @@ /** * @file interface_client.h - * @brief En-tête des fonctions liées à l'interface client. + * @brief Fichier d'en-tête pour les fonctions de l'interface client. + * + * Ce fichier d'en-tête définit les fonctions liées à l'interaction et à la gestion des clients. + * Ces fonctions incluent des opérations telles que l'ajout d'articles au panier d'un client, la gestion du budget, etc. + * + * @author Hersan Mathéo */ +#ifndef INTERFACE_CLIENT_H +#define INTERFACE_CLIENT_H + #include #include #include "../core_logic/client.h" #include "../core_logic/responsable.h" +#include "../interface/interface_resp.h" /** - * @brief Affiche le menu principal de l'interface client. + * @brief Afficher les informations du client. */ void affiche_client(); /** - * @brief Laisse l'utilisateur choisir une option du menu. + * @brief Afficher le menu du client et enregistrer le choix de l'utilisateur. * - * @param[in, out] choix - L'option choisie par l'utilisateur. + * @param[out] choix - Un pointeur pour stocker le choix de l'utilisateur. */ void menu_client(int *choix); - /** - * @brief Ajoute un article au panier du client. - * - * Cette fonction permet d'ajouter un article au panier du client. - * - * @param numeroClient - Numéro du client. - * @param references - Tableau des références des articles. - * @param poids - Tableau des poids des articles. - * @param volume - Tableau des volumes des articles. - * @param prixUnitaire - Tableau des prix unitaires des articles. - * @param numeros - Tableau des numéros de clients. - * @param cagnottes - Tableau des cagnottes des clients. - * @param suspendues - Tableau des états de suspension des clients. - * @param nombreArticles - Nombre d'articles disponibles. - * @param nombreClients - Nombre de clients. - * @param volumeCoffre - Volume total du coffre. - * @param chargeMaximale - Charge maximale du coffre. - * @param panier - Tableau des références des articles dans le panier. - * @param quantites - Tableau des quantités de chaque article dans le panier. - * @param taillePanier - Taille du panier. - * @param budget - Budget du client. + * @brief Ajouter des articles au panier du client. + * + * @param numeroClient - Le numéro du client. + * @param references - Un tableau de références d'articles. + * @param poids - Un tableau de poids d'articles. + * @param volume - Un tableau de volumes d'articles. + * @param prixUnitaire - Un tableau de prix unitaires d'articles. + * @param numeros - Un tableau de numéros d'articles. + * @param cagnottes - Un tableau de cagnottes. + * @param suspendues - Un tableau d'articles suspendus. + * @param nombreArticles - Le nombre total d'articles disponibles. + * @param nombreClients - Le nombre total de clients. + * @param volumeCoffre - La limite de volume pour le panier du client. + * @param chargeMaximale - La limite de poids pour le panier du client. + * @param panier - Le panier d'achat du client. + * @param quantites - Un tableau de quantités d'articles dans le panier. + * @param[out] taillePanier - Un pointeur pour stocker la taille du panier. + * @param budget - Le budget du client. */ void ajouter_article_au_panier(int numeroClient, int references[], float poids[], float volume[], float prixUnitaire[], int numeros[], float cagnottes[], int suspendues[], int nombreArticles, int nombreClients, float volumeCoffre, float chargeMaximale, int panier[], int quantites[], int *taillePanier, float budget); - /** - * @brief Supprime un article du panier du client. - * - * Cette fonction permet de supprimer un article du panier du client. - * - * @param panier - Tableau des références des articles dans le panier. - * @param quantites - Tableau des quantités de chaque article dans le panier. - * @param taillePanier - Taille du panier. + * @brief Supprimer un article du panier du client. + * + * @param panier - Le panier d'achat du client. + * @param quantites - Un tableau de quantités d'articles dans le panier. + * @param[out] taillePanier - Un pointeur pour stocker la taille du panier. + * @param cagnottes - Un tableau de cagnottes. + * @param numeroClient - Le numéro du client. + * @param numeros - Un tableau de numéros d'articles. + * @param nombreClients - Le nombre total de clients. + * @param references - Un tableau de références d'articles. + * @param prixUnitaire - Un tableau de prix unitaires d'articles. */ -//void supprimer_article_du_panier(int panier[], int quantites[], int *taillePanier, float prixUnitaire[], int clientIndex, float cagnottes[]); - void supprimer_article_du_panier(int panier[], int quantites[], int *taillePanier, float cagnottes[], int numeroClient, int numeros[], int nombreClients, int references[], float prixUnitaire[]); /** - * @brief Affiche un récapitulatif du contenu du panier. - * - * Cette fonction permet d'afficher un récapitulatif détaillé du contenu du panier du client, y compris les références des articles, - * les quantités, les poids, les volumes, les prix unitaires, les totaux de poids, de volume, de prix, et la cagnotte du client. - * - * @param panier - Tableau des références des articles dans le panier. - * @param taillePanier - Taille du panier. - * @param references - Tableau des références des articles. - * @param poids - Tableau des poids des articles. - * @param volume - Tableau des volumes des articles. - * @param prixUnitaire - Tableau des prix unitaires des articles. - * @param quantites - Tableau des quantités de chaque article dans le panier. - * @param cagnottes - Tableau des cagnottes des clients. - * @param numeroClient - Numéro du client. - * @param numeros - Tableau des numéros de clients. - * @param nombreClients - Nombre de clients. - * @param volumeCoffre - Volume total du coffre. - * @param chargeMaximale - Charge maximale du coffre. - * @param budget - Budget du client. + * @brief Afficher un récapitulatif du panier du client. + * + * @param panier - Le panier d'achat du client. + * @param taillePanier - La taille du panier. + * @param references - Un tableau de références d'articles. + * @param poids - Un tableau de poids d'articles. + * @param volume - Un tableau de volumes d'articles. + * @param prixUnitaire - Un tableau de prix unitaires d'articles. + * @param quantites - Un tableau de quantités d'articles dans le panier. + * @param cagnottes - Un tableau de cagnottes. + * @param numeroClient - Le numéro du client. + * @param numeros - Un tableau de numéros d'articles. + * @param nombreClients - Le nombre total de clients. + * @param volumeCoffre - La limite de volume pour le panier du client. + * @param chargeMaximale - La limite de poids pour le panier du client. + * @param budget - Le budget du client. */ - void affiche_recap_panier(int panier[], int taillePanier, int references[], float poids[], float volume[], float prixUnitaire[], int quantites[], float cagnottes[], int numeroClient, int numeros[], int nombreClients, float volumeCoffre, float chargeMaximale, float budget); /** - * @brief Affiche le récapitulatif du panier. - * - * Cette fonction affiche le récapitulatif du panier, y compris les références, les poids, les volumes, les prix unitaires, elle permet d'initialiser la session du client. - * - * @param numeros - * @param suspendus - * @param nombreClients - * @param budget - * @param volumeCoffre - * @param chargeMaximale - * @param numeroClient + * @brief Configurer la session client. + * + * @param numeros - Un tableau de numéros de clients. + * @param suspendus - Un tableau d'état des clients suspendus. + * @param nombreClients - Le nombre total de clients. + * @param[out] budget - Un pointeur pour stocker le budget du client. + * @param[out] volumeCoffre - Un pointeur pour stocker la limite de volume du panier du client. + * @param[out] chargeMaximale - Un pointeur pour stocker la limite de poids du panier du client. + * @param[out] numeroClient - Un pointeur pour stocker le numéro du client. */ void configurer_session_client(int numeros[], int suspendus[], int nombreClients, double *budget, float *volumeCoffre, float *chargeMaximale, int *numeroClient); - /** - * @brief Modifie la quantité d'un article dans le panier du client. - * - * Cette fonction permet de modifier la quantité d'un article dans le panier du client tout en mettant à jour la cagnotte. - * - * @param panier - Tableau des références des articles dans le panier. - * @param quantites - Tableau des quantités de chaque article dans le panier. - * @param taillePanier - Taille du panier. - * @param cagnottes - Tableau des cagnottes des clients. - * @param numeroClient - Numéro du client. - * @param prixUnitaire - Tableau des prix unitaires des articles. - * @param references - Tableau des références des articles. - * @param nombreClients - Nombre de clients. - * @param numeros - Tableau des numéros de clients. + * @brief Modifier la quantité d'un article dans le panier du client. + * + * @param panier - Le panier d'achat du client. + * @param quantites - Un tableau de quantités d'articles dans le panier. + * @param[out] taillePanier - Un pointeur pour stocker la taille du panier. + * @param cagnottes - Un tableau de cagnottes. + * @param numeroClient - Le numéro du client. + * @param prixUnitaire - Un tableau de prix unitaires d'articles. + * @param references - Un tableau de références d'articles. + * @param nombreClients - Le nombre total de clients. + * @param numeros - Un tableau de numéros d'articles. */ void modifier_quantite_article_panier(int panier[], int quantites[], int *taillePanier, float cagnottes[], int numeroClient, float prixUnitaire[], int references[], int nombreClients, int numeros[]); /** - * @brief Réinitialise le panier du client. - * - * @param panier - Tableau des références des articles dans le panier. - * @param quantites - Tableau des quantités de chaque article dans le panier. - * @param taillePanier - Taille du panier. + * @brief Réinitialiser le panier du client. + * + * @param panier - Le panier d'achat du client. + * @param quantites - Un tableau de quantités d'articles dans le panier. + * @param[out] taillePanier - Un pointeur pour stocker la taille du panier. + * @param cagnottes - Un tableau de cagnottes. + * @param numeroClient - Le numéro du client. + * @param numeros - Un tableau de numéros d'articles. + * @param nombreClients - Le nombre total de clients. + * @param references - Un tableau de références d'articles. + * @param prixUnitaire - Un tableau de prix unitaires d'articles. */ void reinitialiser_panier(int panier[], int quantites[], int *taillePanier, float cagnottes[], int numeroClient, int numeros[], int nombreClients, int references[], float prixUnitaire[]); /** - * @brief Déduit un montant de la cagnotte du client. - * - * @param numeroClient - Numéro du client. - * @param montant - Montant à déduire de la cagnotte. - * @param numeros - Tableau des numéros de clients. - * @param cagnottes - Tableau des cagnottes des clients. - * @param nombreClients - Nombre de clients. - * @param suspendus - Tableau des états de suspension des clients. + * @brief Déduire un montant de la cagnotte du client. + * + * @param numeroClient - Le numéro du client. + * @param montant - Le montant à déduire de la cagnotte. + * @param numeros - Un tableau de numéros de clients. + * @param cagnottes - Un tableau de cagnottes. + * @param nombreClients - Le nombre total de clients. + * @param suspendus - Un tableau d'état des clients suspendus. */ void deduire_cagnotte(int numeroClient, float montant, int numeros[], float cagnottes[], int nombreClients, int suspendus[]); - /** - * @brief Fonction principale de l'interface client. - * - * Cette fonction permet aux clients d'utiliser l'application pour gérer leur panier - * et effectuer des opérations telles que l'ajout, la suppression ou la modification - * d'articles dans le panier. + * @brief Quitter l'application client. + * + * @param panier - Le panier d'achat du client. + * @param taillePanier - La taille du panier. + * @param references - Un tableau de références d'articles. + * @param poids - Un tableau de poids d'articles. + * @param volume - Un tableau de volumes d'articles. + * @param prixUnitaire - Un tableau de prix unitaires d'articles. + * @param quantites - Un tableau de quantités d'articles dans le panier. + * @param cagnottes - Un tableau de cagnottes. + * @param numeroClient - Le numéro du client. + * @param numeros - Un tableau de numéros d'articles. + * @param nombreClients - Le nombre total de clients. + * @param budget - Le budget du client. + * @param suspendus - Un tableau d'état des clients suspendus. */ -void global_client(); +void quitter_application(int panier[], int taillePanier, int references[], float poids[], float volume[], + float prixUnitaire[], int quantites[], float cagnottes[], int numeroClient, + int numeros[], int nombreClients, float budget, int suspendus[]); /** - * @brief Quitte l'application. - * - * Cette fonction permet de quitter l'application en affichant un récapitulatif du panier et en proposant de déduire un montant de la cagnotte. - * - * @param panier - * @param taillePanier - * @param references - * @param poids - * @param volume - * @param prixUnitaire - * @param quantites - * @param cagnottes - * @param numeroClient - * @param numeros - * @param nombreClients - * @param budget - * @param suspendus + * @brief Exécute l'ensemble des fonctions de l'interface client. */ -void quitter_application(int panier[], int taillePanier, int references[], float poids[], float volume[], - float prixUnitaire[], int quantites[], float cagnottes[], int numeroClient, - int numeros[], int nombreClients, float budget, int suspendus[]); +void global_client(); + +#endif // INTERFACE_CLIENT_H diff --git a/src/main.c b/src/main.c index 31ed023..3a89683 100644 --- a/src/main.c +++ b/src/main.c @@ -4,10 +4,8 @@ */ #include -#include #include "app/interface/interface_client.h" #include "app/interface/interface_resp.h" -#include "app/core_logic/client.h" #include "app/core_logic/responsable.h" /**