Outils pour utilisateurs

Outils du site


public:documentation:documentation_c

Documentation C

MinGW

Implémentation pour windows de la toolchain GNU. Permet aussi de cross-compiler pour Windows sur une machine Linux.

"opendir" function

“opendir” est une fonction déclarée dans “dirent.h” de la GNU library. Elle appelle “readdir” qui itère sur les fichiers du dossier

chemins de fichiers

MinGW convertit les chemins qu'il manipule selon les règles indiquées ici : http://www.mingw.org/wiki/Posix_path_conversion.

Pour les chemins réseaux UNC de type “\\serveur\partage” mingw convertit pas les “\” en “/” et n'interprete correctement les chemins UNC que si ils commencent par “” au lieu de “\\”. note: Java interprète les chemin UNC qui commencent par “\\” ou “”.

Glib

Sous-ensemble de GTK+, glib est une bibliothèque portable de manipulation de structures de données entre autres : https://developer.gnome.org/glib/stable.

File utilities

Utilité

Utile pour manipuler des chemins UTF-8 avec Windows.

Différences entre les systèmes

Dans les systèmes d'exploitation POSIX, l'implémentation de g_open est réalisée par le système hôte (le noyau).

Sous Windows, l'implémentation de g_open est réalisée par la librairie C (du compilateur C), qui utilise l'API Win32. Par exemple la fonction CreateFile() de l'API Win32 ouvre ou crée un fichier.

Sous Windows

  • ces fonctions reçoivent des arguments désignant des fichiers, chemins ou namespaces.
  • les chemins sont soit relatifs, soit entièrement qualifiés.
  • Les chemins entièrement qualifiés sont de 3 types :
    • \path\file\ (chemin local absolu)
    • \D:\path\file\ (désignation d'une unité, ou disque - attention la lettre de l'unité est sensible à la casse)
    • \\server\share\path\file\ désignation UNC (Universal Naming Convention)

Répertoires Windows standard

Depuis Windows Vista, tous les répertoires standards sont définis dans KNOWNFOLDERID. Ces répertoires sont décrits dans CSIDL (ancienne nomenclature).

FOLDERID_Profile (anciennement CSIDL_PROFILE) correspond le plus à ce qu'on appelle répertoire personnel dans les autres systèmes d'exploitation:

The user's profile folder. A typical path is C:\Users\username. 
Applications should not create files or folders at this level; they should put their data under the locations referred to by CSIDL_APPDATA or CSIDL_LOCAL_APPDATA.

FOLDERID_LocalAppData:

The file system directory that serves as a data repository for local (nonroaming) applications. 
A typical path is C:\Documents and Settings\username\Local Settings\Application Data.

FOLDERID_RoamingAppData:

The file system directory that serves as a common repository for application-specific data. 
A typical path is C:\Documents and Settings\username\Application Data.

Variables d'environnement correspondantes

  • USERPROFILE = FOLDERID_Profile = HOMEDRIVE + HOMEPATH (compte local)
  • HOMESHARE = HOMEDRIVE + HOMEPATH (compte itinérant)
  • HOMEDRIVE + HOMEPATH pointe toujours vers le répertoire utilisateur
  • APPDATA = FOLDERID_RoamingAppData
  • LOCALAPPDATA = FOLDERID_LocalAppData

CWB

CL

CL est utilisé par CQP et CQPlib pour accéder au système de fichiers (via les Component de CL)

storage.c

Méthodes pour ouvrir, fermer, lire, etc. des fichiers avec mmap ou malloc.

Pour corriger le bug des chemins Windows #871, nous avons remplacé l'API IO noyau (open, close…) par l'appel des fonctions IO de glib (g_open, g_close,… voir ci-dessus).

cqp

Parseur de requête CQL

Opérateurs de répétition

Ils sont définis dans cqp/parser.y dans la règle “RegWordfFactor” et créent un noeud d'évaluation :

NEW_EVALNODE($$, re_repeat, BG, BD, MINREPEAT, MAXREPEAT);

NEW_EVALNODE défini dans cqp/macros Arguments :

  • %$$% = je sais pas, nœud courant ?
  • re_repeat = l'instruction du nœud à effectuer
  • BG = branche de gauche, prend un RegWordfPower (= (…) ou un element XML ou une position)
  • BD = branche de droite, toujours NULL
  • MINREPEAT = nombre minimum de répétition
  • MAXREPEAT = nombre maximum de répétition, -1 signifie l'infini

Le matching strategy intervient dans :

  • la fonction “simulate”
  • la fonction “do_StandardQuery” de cqp/parse_actions.c : retire d'un QueryResult les résultats en trop par rapport au matching strategy
WIP

cwb-encode

Outil construisant les indexes d'un corpus CQP et qui écrit le fichier registry du corpus. Il peut prendre en entré :

  • un ou plusieurs fichiers WTC (format qui mélange des lignes tabulées avec des lignes contenant une balise XML)
  • une ou plusieurs archives gz de fichiers WTC (si gzip est installé dans dans le PATH)
  • ou bien rien et le flux de stdin sera utilisé.

Lors de l'appel, il va créer plusieurs fichiers par propriété (de mot ou de structure) :

Pour une propriété de mot “a” :

  • a.corpus
  • a.lexicon
  • a.lexicon.idx

Pour une propriété “b” d'une structure “s” :

  • s_b.avs
  • s_b.avx
  • s_b.rng

Exemple de ligne de commande d'appel de cwb-encode :

/usr/lib/TXM/TXM/../cwb/bin/cwb-encode -d /home/mdecorde/TXM/corpora/BFM2013BIS/data/BFM2013BIS -f /home/mdecorde/TXM/corpora/BFM2013BIS/wtc/bfm2013bis.wtc -R /home/mdecorde/TXM/corpora/BFM2013BIS/registry/bfm2013bis -U  -c utf8 -xsB -P id -P frolemma -P fropos -S txmcorpus:0+lang -S body -S trailer -S cb:+n -S choice -S caesura -S div:+type+n+id+lang+rend+part+corresp -S orig -S corr:+resp+rend+cert+type -S hi:+rend -S date -S add:+place+status -S stage:+type -S anchor:+id+n -S milestone:+unit+n+id+rend+ed -S title:+rend -S subst:+status -S quote:+rend -S name:+rend -S head:+rend+lang+id+type -S surplus:+resp+rend -S expan -S sic:+rend -S text:+genre+datecompolibre+restrictions+msdatelibre+ssiecle+domaine+titre+siecle+forme+notafter+ednum+edcomm+dialecte+msnotbefore+msnotafter+edville+auteur+deaf+idbfm+notbefore+relation+datecompo+morphosynt+edsci+sigle+msdate+eddate+id+base+project -S sp:+rend+who -S speaker:+lang+rend -S damage:+agent -S abbr -S back -S front -S list -S supplied:+resp+source+rend+cert+reason -S gloss:+rend -S socalled -S seg:+rend+type+lang -S num -S s:+n+id -S reg:+resp -S q:+lang+rend+n+id+type -S pb:+n+ed+id+rend -S p:+lang+n+rend+id -S item -S unclear:+resp+reason -S ab:+type+rend+n+id+part+lang -S lb:+rend+n+ana+id+type -S foreign:+lang+rend -S gap:+unit+quantity+rend+reason+resp+extent

Cette ligne de commande créé 423 fichiers.

algo

Les propriétés de mots et de structures en cours de traitement sont stockées dans 2 listes :

  • Range ranges[MAXRANGES]; : propriétés de structures
  • WAttr wattrs[MAXRANGES]; : propriétés de mots

Range et WAttr sont 2 structures qui contiennent chacunes des pointeurs vers les descripteurs de fichiers en cours d'ouverture :

  • Range :
    • FILE *fd; /**< fd of rng component */
    • FILE *avx; /**< fd of avx component (the attribute value index) */
    • FILE *avs; /**< fd of avs component (the attribute values) */

Ils sont ouverts lors de l'appel de Range *range_declare(char *name, char *directory, int store_values, int null_attribute)

  • WAttr :
    • FILE *lex_fd; /**< file handle of lexicon component */
    • FILE *lexidx_fd; /**< file handle of lexicon index component */
    • FILE *corpus_fd; /**< file handle of corpus component */

Ils sont ouverts lors de l'appel de int wattr_declare(char *name, char *directory, int nr_buckets)

cwb-makeall

Outil de finalisation des indexes d'un corpus CQP.

cwb-s-encode

Permet de rajouté une propriété de structure en donnant un fichier tabulé

startposition	endposition	valeur
startposition	endposition	valeur
startposition	endposition	valeur

cwb-align et cwb-align-encode

cwb-align créé un fichier out.align que cwb-align-encode lit pour mettre à jour les indexes des corpus alignés et créer les fichiers d'alignement “*.alx” (un par alignement avec un autre corpus).

Extrait d'un fichier out.align

tmx_ru4	seg	tmx_en0	seg
0	3	0	3	1:1	169
4	67	4	82	1:1	1595
68	318	83	352	1:1	6502
319	324	353	358	1:1	79
325	478	359	521	1:1	4150
  • La 1ere et 2e colonne codent le segment aligné du premier corpus
  • La 3e et 4e colonne codent le segment aligné du deuxième corpus
  • La 5e : ???
  • La 6e : le nombre de mot ???

En utilisant l'argument “-V” suivie d'une propriété de structure, on peut indiquer à “cwb-align” un pré-alignement.

public/documentation/documentation_c.txt · Dernière modification: 2017/04/10 16:23 par matthieu.decorde@ens-lyon.fr