Documentation de FKModel.c

par Jean-Luc Mounier
Laboratoire d'Informatique de Paris 6

SOMMAIRE

Types

PFkModel
PFkAttribute
PFkNode
PFkEdge

Fonctions

FkNewModel
FkNewAttributeList
FkNewStringAttribute
FkAppendStringAttribute
FkAppendAttribute
FkNewNode
FkNewEdge

Annexe

Le module FKModel.c fait partie de la librairie libFKData.a, il contient les API permettant de manipuler les modèles :

  • Création de modèles résultats
  • Valeur par défaut des attributs
  • Accès au noms des fichiers contenant le modèle dans FrameKit

Types

Le type PFkModel

C'est un pointeur sur un modèle.
typedef struct FkModel FkModel;
typedef FkModel *PFkModel;

Le type PFkAttribute

C'est un pointeur sur un attribut.
typedef struct FkAttribute FkAttribute;
typedef FkAttribute *PFkAttribute;

Le type PFkNode

C'est un pointeur sur un noeud.
typedef struct FkNode FkNode;
typedef FkNode *PFkNode;

Le type PFkEdge

C'est un pointeur sur un arc.
typedef struct FkEdge FkEdge;
typedef FkEdge *PFkEdge;

Les types simples

typedef FkISOStr      FkFormalismName;
typedef FkConstISOStr FkConstFormalismName;
typedef FkISOStr      FkAttributeName;
typedef FkConstISOStr FkConstAttributeName;
typedef FkConstISOStr FkConstObjectName;
typedef CListe        FkAttributeList;
typedef FkULong       FkObjectID;

Fonctions

FkNewModel

FkNewModel crée une struture de donnée pour le modèle et rend un pointeur sur cette structure. La fonction recopie le nom du formalisme dans la struture de données.
Voir exemple d'utilisation en annexe.

PROTOTYPE

#include <FKModel.h>
PFkModel FkNewModel(FkConstFormalismName pFormalismInternalName);;

pFormalismInternalName

nom interne du formalisme.

RÉSULTAT

Pointeur vers la structure de donnée décrivant le modèle.

CAS D'ERREURS

  • kFk_ParamErr si le nom du formalisme est invalide (null ou vide).
  • kFk_MemFullErr si plus de place en mémoire.

FkNewAttributeList

FkNewAttributeList crée une liste d'attributs. La liste crée est vide, elle devra être remplie par FkNewStringAttribute puis ajoutée à un nœud par zzz ou à un arc par yyy.

Voir exemple d'utilisation en annexe.

PROTOTYPE

#include <FKModel.h>
FkAttributeList FkNewAttributeList(void)

RÉSULTAT

Pointeur vers la liste créée.

CAS D'ERREURS

  • kFk_MemFullErr si plus de place en mémoire.

FkNewStringAttribute

FkNewStringAttribute crée une struture de donnée pour le modèle et rend un pointeur sur cette structure. La fonction recopie le texte passé en paramètre dans pAttributeValue dans la struture de données.
Voir exemple d'utilisation en annexe.

PROTOTYPE

#include <FKModel.h>
PFkAttribute FkNewStringAttribute(PFkModel pFkModel,
  FkConstObjectName fkObjectName,
  FkConstAttributeName pAttributeInternalName,
  FkConstISOStr pAttributeValue)

pFkModel

Modèle créé par FkNewModel.

fkObjectName

Nom interne de l'objet (exemple "place").

pAttributeInternalName

Nom interne de l'attribut créé (exemple "marking").

pAttributeValue

Chaine de caractères C de taille quelconque pourvant comprendre des '\n'.

RÉSULTAT

Pointeur vers la structure de donnée décrivant l'attribut.

CAS D'ERREURS

  • kFk_ParamErr en cas d'erreur sur un des paramètres.
  • kFk_MemFullErr si plus de place en mémoire.

FkAppendStringAttribute

FkAppendStringAttribute complète un attribut déjà créé par la chaine de caractère passé en pAttributeValue. La fonction realloue de la mémoire pour concaténer la chaine initiale de l'attribut à la chaine passé en paramètre. La chaine initiale est désallouée.
Voir exemple d'utilisation en annexe.

PROTOTYPE

#include <FKModel.h>
PFkAttribute FkAppendStringAttribute(PFkAttribute pFkAttribute,
  FkConstISOStr pAttributeValue)

pFkAttribute

Attribut créé par FkNewStringAttribute.

pAttributeValue

Chaine de caractères C de taille quelconque pourvant comprendre des '\n'.

RÉSULTAT

Pointeur vers la structure de donnée décrivant l'attribut (c'est la même structure que celle passée en paramètre).

CAS D'ERREURS

  • kFk_ParamErr en cas d'erreur sur un des paramètres.
  • kFk_MemFullErr si plus de place en mémoire.

FkAppendAttribute

FkNewNode crée un noeud (et transmet des commandes de création).
Voir exemple d'utilisation en annexe.

PROTOTYPE

#include <FKModel.h>
void FkAppendAttribute(FkAttributeList fkAttributeList,
  PFkAttribute pFkAttribute)

pNodeInternalName

Nom interne du nœud (exemple "place");

fkAttributeList

Liste des attributs crée par FkNewAttributeList.

pFkAttribute

Attribut créé par FkNewStringAttribute.

RÉSULTAT

Attache l'attribut à la liste d'attributs.

CAS D'ERREURS

  • kFk_ParamErr en cas d'erreur sur un des paramètres.
  • kFk_MemFullErr si plus de place en mémoire.

FkNewNode

FkNewNode crée un noeud (et transmet des commandes de création).
Voir exemple d'utilisation en annexe.

PROTOTYPE

#include <FKModel.h>
PFkNode FkNewNode(FkConstObjectName pNodeInternalName,
  FkObjectID fkNodeID,
  FkAttributeList fkAttributeList)

pNodeInternalName

Nom interne du nœud (exemple "place");

fkNodeID

Numéro interne du nœud.

fkAttributeList

Liste des attributs crée par FkNewAttributeList.

RÉSULTAT

Pointeur vers la structure de donnée décrivant le noeud.

CAS D'ERREURS

  • kFk_ParamErr en cas d'erreur sur un des paramètres.
  • kFk_MemFullErr si plus de place en mémoire.

FkNewEdge

FkNewEdge crée un arc (et transmet des commandes de création).
Voir exemple d'utilisation en annexe.

PROTOTYPE

#include <FKModel.h>
PFkEdge FkNewEdge(FkConstObjectName pEdgeInternalName,
  FkObjectID fkEdgeID,
  FkObjectID fkBeginNodeID,
  FkObjectID fkEndNodeID,
  FkAttributeList fkAttributeList)

pEdgeInternalName

Nom interne de l'arc (exemple "arc");

fkEdgeID

Numéro interne de l'arc.

fkBeginNodeID

Numéro de nœud de départ.

fkEndNodeID

Numéro de nœud d'arrivée.

fkAttributeList

Liste des attributs crée par FkNewAttributeList.

RÉSULTAT

Pointeur vers la structure de donnée décrivant l'arc.

CAS D'ERREURS

  • kFk_ParamErr en cas d'erreur sur un des paramètres.
  • kFk_MemFullErr si plus de place en mémoire.

FkAppendNodeToModel, FkAppendEdgeToModel, FkSendModel

à décrire

Annexe

Les annexes de ce document illustrent l'utilisation des fonctions décrites ici.

Annexe A

Ci-dessous un exemple de programme principal illustrant les fonctions .

PFkModel         pFkModel;
FkAttributeList  fkAttributeList;
PFkAttribute     pFkAttribute;
PFkNode          pFkNode;
PFkEdge          pFkEdge;
char             message[kFk_CAMI_CommandSize];
 
pFkModel=FkNewModel("AMI-Net");
 
fkAttributeList=FkNewAttributeList();
pFkAttribute=FkNewStringAttribute(pFkModel,"place","marking","hello\nca va\ntrès bien\n");
FkAppendStringAttribute(pFkAttribute,"bref\nca marche");
FkAppendAttribute(fkAttributeList, pFkAttribute);
FkAppendAttribute(fkAttributeList, FkNewStringAttribute(pFkModel,"place","name","toto"));
 
sprintf(message,"DB()");
FkClSendChannelCami(NULL, message);
 
pFkNode=FkNewNode("place", 2, fkAttributeList);
FkSetNodeCenter(pFkNode, 50, 40);
FkAppendNodeToModel(pFkModel, pFkNode);
pFkNode=FkNewNode("place", 3, NULL);
FkSetNodeCenter(pFkNode, 150, 40);
FkAppendNodeToModel(pFkModel, pFkNode);
 
pFkNode=FkNewNode("transition", 4, NULL);
FkSetNodeCenter(pFkNode, 50, 140);
FkAppendNodeToModel(pFkModel, pFkNode);
 
pFkEdge=FkNewEdge("arc", 5, 2, 4, NULL);
FkAppendEdgeToModel(pFkModel, pFkEdge);
 
pFkEdge=FkNewEdge("arc", 6, 3, 4, NULL);
FkAppendEdgeToModel(pFkModel, pFkEdge);
 
sprintf(message,"FB()");
FkClSendChannelCami(NULL, message);
           FkSendModel(pFkModel); /* ne sert à rien pour l'instant car
        les commandes sont déjà envoyée par FkNewNode, ... */

API de Framekit en C | FrameKit
Mise à jour : 28-Oct-1998