ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/addin/outil/src/hypergraphlib_node.h
Revision: 1156
Committed: Thu Jun 13 22:02:48 2024 UTC (14 months, 2 weeks ago) by francois
Content type: text/plain
File size: 2624 byte(s)
Log Message:
compatibilité Ubuntu 22.04
Suppression des refeences à Windows
Ajout d'une banière

File Contents

# User Rev Content
1 francois 1156 //####//------------------------------------------------------------
2     //####//------------------------------------------------------------
3     //####// MAGiC
4     //####// Jean Christophe Cuilliere et Vincent FRANCOIS
5     //####// Departement de Genie Mecanique - UQTR
6     //####//------------------------------------------------------------
7     //####// MAGIC est un projet de recherche de l equipe ERICCA
8     //####// du departement de genie mecanique de l Universite du Quebec a Trois Rivieres
9     //####// http://www.uqtr.ca/ericca
10     //####// http://www.uqtr.ca/
11     //####//------------------------------------------------------------
12     //####//------------------------------------------------------------
13     //####//
14     //####// hypergraphlib_node.h
15     //####//
16     //####//------------------------------------------------------------
17     //####//------------------------------------------------------------
18     //####// COPYRIGHT 2000-2024
19     //####// jeu 13 jun 2024 11:53:59 EDT
20     //####//------------------------------------------------------------
21     //####//------------------------------------------------------------
22 francois 283 #ifndef NODE_H
23     #define NODE_H
24    
25    
26     #include <map>
27     #include <set>
28 francois 481 #include "hypergraphlib_graphobject.h"
29 francois 283
30     namespace HypergraphLib {
31    
32     class Arc;
33     class Graph;
34    
35     class HYPERGRAPHLIB_ITEM Node : public GraphObject {
36     public:
37     typedef std::multimap < int , Arc * > MultimapArcsById;
38     typedef std::pair < int, Arc* > IntArc_Pair;
39    
40     /**
41     * Constructs an empty node
42     */
43     Node (Graph * __owner, int __id);
44    
45     /**
46     * Copy constructor
47     */
48     Node (const Node & __from, const Graph * __owner=0);
49    
50     /**
51     * Returns the array of incident arcs
52     */
53     MultimapArcsById & IncidentArcs() {
54     return _arcs;
55     };
56    
57     /**
58     * Add an incident arc to this node
59     */
60     void Add(Arc *);
61    
62     /**
63     * Returns the number of ocurences of the specified arc incident
64     * to this node : this function will return "2" for a loop
65     */
66     unsigned int ArcCount (int __id);
67    
68     /**
69     * Removes one occurence of the arc ID incident to this node
70     * Return 1 if the arc ID is found in incident arcs
71     */
72     int Remove (int __id);
73    
74     /**
75     * Return the list of adjacent nodes
76     */
77     void AdjacentNodes ( std::set < int > & __adjacentNodes );
78     /**
79     * Return the list of adjacent nodes
80     */
81     void AdjacentNodes ( std::set < Node * > & __adjacentNodes );
82    
83     Arc * IsAdjacentToNode ( int __nodeId );
84    
85     Arc * IsAdjacentToNode ( Node * __n );
86    
87     /**
88     */
89     int GetNbArcsToNode(Node * __other);
90    
91     protected:
92     MultimapArcsById _arcs;
93     };
94     } // end namespace HypergraphLib
95    
96     #endif