Blame tools/rea.h

Packit Service 9ccfef
/*
Packit Service 9ccfef
 * rea.h --
Packit Service 9ccfef
 *
Packit Service 9ccfef
 *      Common header-file for dump-cm.c and dump-svg.c.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * Copyright (c) 2000 A. Mueller, Technical University of Braunschweig.
Packit Service 9ccfef
 * Copyright (c) 2005 K. Sperner, Technical University of Braunschweig.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * See the file "COPYING" for information on usage and redistribution
Packit Service 9ccfef
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
Packit Service 9ccfef
 *
Packit Service 9ccfef
 * @(#) $Id: rea.h 7382 2007-10-19 23:40:24Z schoenw $
Packit Service 9ccfef
 */
Packit Service 9ccfef
Packit Service 9ccfef
#ifndef _REA_H
Packit Service 9ccfef
#define _REA_H
Packit Service 9ccfef
Packit Service 9ccfef
#include <config.h>
Packit Service 9ccfef
Packit Service 9ccfef
#include <stdio.h>
Packit Service 9ccfef
#include <stdlib.h>
Packit Service 9ccfef
#include <string.h>
Packit Service 9ccfef
#include <ctype.h>
Packit Service 9ccfef
#ifdef HAVE_WIN_H
Packit Service 9ccfef
#include "win.h"
Packit Service 9ccfef
#endif
Packit Service 9ccfef
Packit Service 9ccfef
#include "smi.h"
Packit Service 9ccfef
#include "smidump.h"
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
#define ABS(a) ((float)((a > 0.0) ? (a) : (-(a))))
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
typedef enum GraphCardinality {
Packit Service 9ccfef
    GRAPH_CARD_UNKNOWN            = 0,
Packit Service 9ccfef
    GRAPH_CARD_ONE_TO_ONE         = 1,
Packit Service 9ccfef
    GRAPH_CARD_ONE_TO_MANY        = 2,
Packit Service 9ccfef
    GRAPH_CARD_ZERO_TO_ONE        = 3,
Packit Service 9ccfef
    GRAPH_CARD_ZERO_TO_MANY       = 4,
Packit Service 9ccfef
    GRAPH_CARD_ONE_TO_ZERO_OR_ONE = 5
Packit Service 9ccfef
} GraphCardinality;
Packit Service 9ccfef
Packit Service 9ccfef
typedef enum GraphConnection {
Packit Service 9ccfef
    GRAPH_CON_UNKNOWN       = 0,
Packit Service 9ccfef
    GRAPH_CON_AGGREGATION   = 1,
Packit Service 9ccfef
    GRAPH_CON_DEPENDENCY    = 2,
Packit Service 9ccfef
    GRAPH_CON_ASSOCIATION   = 3
Packit Service 9ccfef
} GraphConnection;
Packit Service 9ccfef
Packit Service 9ccfef
typedef enum GraphEnhIndex {
Packit Service 9ccfef
    GRAPH_ENHINDEX_UNKNOWN      = 0,
Packit Service 9ccfef
    GRAPH_ENHINDEX_NOTIFICATION = 1,
Packit Service 9ccfef
    GRAPH_ENHINDEX_TYPES        = 2,
Packit Service 9ccfef
    GRAPH_ENHINDEX_NAMES        = 3,
Packit Service 9ccfef
    GRAPH_ENHINDEX_INDEX        = 4,
Packit Service 9ccfef
    GRAPH_ENHINDEX_REROUTE      = 5,
Packit Service 9ccfef
    GRAPH_ENHINDEX_POINTER      = 6
Packit Service 9ccfef
} GraphEnhIndex;
Packit Service 9ccfef
Packit Service 9ccfef
/*
Packit Service 9ccfef
 * Definition used by the dia output driver.
Packit Service 9ccfef
 */
Packit Service 9ccfef
Packit Service 9ccfef
#define DIA_PRINT_FLAG	0x01
Packit Service 9ccfef
Packit Service 9ccfef
typedef struct DiaNode {
Packit Service 9ccfef
    int   flags;		/* flags for the dia xml output driver */
Packit Service 9ccfef
    float x,y;			/* coordinates (left upper corner) */
Packit Service 9ccfef
    float xDisp,yDisp;		/* displacement vector for springembedder */
Packit Service 9ccfef
    float w,h;			/* width and height of the dia node */
Packit Service 9ccfef
    int relatedScalars;		/* has related scalars -> print them */
Packit Service 9ccfef
    int indexObjects;		/* has index objects -> print them */
Packit Service 9ccfef
} DiaNode;
Packit Service 9ccfef
Packit Service 9ccfef
typedef struct DiaEdge {
Packit Service 9ccfef
    int   flags;		/* flags for the dia xml output driver */
Packit Service 9ccfef
    float startX, startY;	/* Intersection of edge and startNode */
Packit Service 9ccfef
    float endX, endY;		/* Intersection of edge and endNode */
Packit Service 9ccfef
} DiaEdge;
Packit Service 9ccfef
Packit Service 9ccfef
/*
Packit Service 9ccfef
 * Generic structure for moduleInformation string-lists.
Packit Service 9ccfef
 */
Packit Service 9ccfef
Packit Service 9ccfef
typedef struct StringListElem {
Packit Service 9ccfef
    struct StringListElem *nextPtr;
Packit Service 9ccfef
    SmiStatus             status;
Packit Service 9ccfef
    char                  *miElem;
Packit Service 9ccfef
} StringListElem;
Packit Service 9ccfef
Packit Service 9ccfef
/*
Packit Service 9ccfef
 * Generic structures for the internal graph representation.
Packit Service 9ccfef
 */
Packit Service 9ccfef
Packit Service 9ccfef
typedef struct GraphComponent {
Packit Service 9ccfef
    struct GraphComponent *nextPtr;
Packit Service 9ccfef
    struct GraphNode      *firstComponentNode;
Packit Service 9ccfef
    float                 xMin;
Packit Service 9ccfef
    float                 xMax;
Packit Service 9ccfef
    float                 yMin;
Packit Service 9ccfef
    float                 yMax;
Packit Service 9ccfef
    float                 xOffset;
Packit Service 9ccfef
    float                 yOffset;
Packit Service 9ccfef
} GraphComponent;
Packit Service 9ccfef
Packit Service 9ccfef
typedef struct GraphNode {
Packit Service 9ccfef
    struct GraphNode *nextPtr;
Packit Service 9ccfef
    SmiNode          *smiNode;
Packit Service 9ccfef
    SmiModule        *smiModule;
Packit Service 9ccfef
    int              group;		/* group number of this graph node */
Packit Service 9ccfef
    int              use;		/* use node in the layout-algorithm */
Packit Service 9ccfef
    int              degree;		/* quantity of adjacent nodes */
Packit Service 9ccfef
    GraphComponent   *component;	/* component the node belongs to */
Packit Service 9ccfef
    struct GraphNode *nextComponentNode;
Packit Service 9ccfef
    DiaNode          dia;
Packit Service 9ccfef
} GraphNode;
Packit Service 9ccfef
Packit Service 9ccfef
typedef struct GraphEdge {
Packit Service 9ccfef
    struct GraphEdge *nextPtr;         
Packit Service 9ccfef
    GraphNode        *startNode;
Packit Service 9ccfef
    GraphNode        *endNode;
Packit Service 9ccfef
    SmiIndexkind     indexkind;
Packit Service 9ccfef
    GraphConnection  connection;
Packit Service 9ccfef
    GraphCardinality cardinality;
Packit Service 9ccfef
    GraphEnhIndex    enhancedindex;
Packit Service 9ccfef
    int              use;		/* use edge in the layout-algorithm */
Packit Service 9ccfef
    DiaEdge	     dia;
Packit Service 9ccfef
} GraphEdge;
Packit Service 9ccfef
Packit Service 9ccfef
typedef struct Graph {
Packit Service 9ccfef
    GraphNode      *nodes;
Packit Service 9ccfef
    GraphEdge      *edges;
Packit Service 9ccfef
    GraphComponent *components;
Packit Service 9ccfef
} Graph;
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
/*
Packit Service 9ccfef
 * driver output control
Packit Service 9ccfef
 */
Packit Service 9ccfef
extern int CANVASHEIGHT;
Packit Service 9ccfef
extern int CANVASWIDTH;
Packit Service 9ccfef
extern int SHOW_DEPRECATED;
Packit Service 9ccfef
extern int SHOW_DEPR_OBSOLETE;
Packit Service 9ccfef
extern int STATIC_OUTPUT;
Packit Service 9ccfef
extern int XPLAIN;
Packit Service 9ccfef
extern int XPLAIN_DEBUG;
Packit Service 9ccfef
extern int SUPPRESS_DEPRECATED;
Packit Service 9ccfef
extern int PRINT_DETAILED_ATTR;
Packit Service 9ccfef
extern int IGNORE_IMPORTED_NODES;
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
/*
Packit Service 9ccfef
 * global variables
Packit Service 9ccfef
 */
Packit Service 9ccfef
extern Graph *graph;
Packit Service 9ccfef
Packit Service 9ccfef
/*
Packit Service 9ccfef
 * help functions
Packit Service 9ccfef
 */
Packit Service 9ccfef
#ifndef max
Packit Service 9ccfef
#define max(a, b) ((a < b) ? b : a)
Packit Service 9ccfef
#endif
Packit Service 9ccfef
#ifndef min
Packit Service 9ccfef
#define min(a, b) ((a < b) ? a : b)
Packit Service 9ccfef
#endif
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
/* ------ Misc. -----------------                                            */
Packit Service 9ccfef
Packit Service 9ccfef
extern int cmpSmiNodes(SmiNode *node1, SmiNode *node2);
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
/* ------ Graph primitives ------                                            */
Packit Service 9ccfef
Packit Service 9ccfef
extern GraphNode *graphInsertNode(Graph *graph, SmiNode *smiNode);
Packit Service 9ccfef
Packit Service 9ccfef
extern GraphComponent *graphInsertComponent(Graph *graph);
Packit Service 9ccfef
Packit Service 9ccfef
extern void graphExit(Graph *graph);
Packit Service 9ccfef
Packit Service 9ccfef
extern GraphEdge *graphGetFirstEdgeByNode(Graph *graph, GraphNode *node);
Packit Service 9ccfef
Packit Service 9ccfef
extern GraphEdge *graphGetNextEdgeByNode(Graph *graph, 
Packit Service 9ccfef
					 GraphEdge *edge,
Packit Service 9ccfef
					 GraphNode *node);
Packit Service 9ccfef
Packit Service 9ccfef
extern void graphShowNodes(Graph *graph);
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
/* ------ algorithm primitives ------                                        */
Packit Service 9ccfef
Packit Service 9ccfef
extern int algGetNumberOfGroups();
Packit Service 9ccfef
Packit Service 9ccfef
extern char *algGetTypeDescription(SmiNode *smiNode);
Packit Service 9ccfef
Packit Service 9ccfef
extern char *algGetTypeName(SmiNode *smiNode);
Packit Service 9ccfef
Packit Service 9ccfef
extern SmiModule *algGetTypeModule(SmiNode *smiNode);
Packit Service 9ccfef
Packit Service 9ccfef
extern int isBaseType(SmiNode *node);
Packit Service 9ccfef
Packit Service 9ccfef
extern int algIsIndexElement(SmiNode *table, SmiNode *node);
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
Packit Service 9ccfef
/* -------------- main functions ------------------------------------------- */
Packit Service 9ccfef
Packit Service 9ccfef
extern void algLinkTables();
Packit Service 9ccfef
Packit Service 9ccfef
extern void algCheckLinksByName();
Packit Service 9ccfef
Packit Service 9ccfef
extern void algConnectLonelyNodes();
Packit Service 9ccfef
Packit Service 9ccfef
extern void algCheckForDependency();
Packit Service 9ccfef
Packit Service 9ccfef
extern void algCheckForPointerRels();
Packit Service 9ccfef
Packit Service 9ccfef
#endif
Packit Service 9ccfef