A.I.M.S


graphmanip_d.h
Go to the documentation of this file.
1 /* This software and supporting documentation are distributed by
2  * Institut Federatif de Recherche 49
3  * CEA/NeuroSpin, Batiment 145,
4  * 91191 Gif-sur-Yvette cedex
5  * France
6  *
7  * This software is governed by the CeCILL-B license under
8  * French law and abiding by the rules of distribution of free software.
9  * You can use, modify and/or redistribute the software under the
10  * terms of the CeCILL-B license as circulated by CEA, CNRS
11  * and INRIA at the following URL "http://www.cecill.info".
12  *
13  * As a counterpart to the access to the source code and rights to copy,
14  * modify and redistribute granted by the license, users are provided only
15  * with a limited warranty and the software's author, the holder of the
16  * economic rights, and the successive licensors have only limited
17  * liability.
18  *
19  * In this respect, the user's attention is drawn to the risks associated
20  * with loading, using, modifying and/or developing or reproducing the
21  * software by the user in light of its specific status of free software,
22  * that may mean that it is complicated to manipulate, and that also
23  * therefore means that it is reserved for developers and experienced
24  * professionals having in-depth computer knowledge. Users are therefore
25  * encouraged to load and test the software's suitability as regards their
26  * requirements in conditions enabling the security of their systems and/or
27  * data to be ensured and, more generally, to use and operate it in the
28  * same conditions as regards security.
29  *
30  * The fact that you are presently reading this means that you have had
31  * knowledge of the CeCILL-B license and that you accept its terms.
32  */
33 
34 #ifndef AIMS_GRAPH_GRAPHMANIP_D_H
35 #define AIMS_GRAPH_GRAPHMANIP_D_H
36 
37 #include <aims/graph/graphmanip.h>
38 #include <aims/io/datatypecode.h>
39 #include <aims/io/finder.h>
40 #include <graph/graph/graph.h>
41 
42 namespace aims
43 {
44 
45  template<typename T>
47  const std::string & att, carto::rc_ptr<T> obj )
48  {
49  vertex->setProperty( att, obj );
51  if( !g.getProperty( "aims_objects_table", mgec ) )
52  {
54  g.setProperty( "aims_objects_table", mgec );
55  }
56  GraphElementCode & gec
57  = graphElementCodeByAtt( g, vertex->getSyntax(), att );
59  if( gec.objectType != dtc.objectType() || gec.dataType != dtc.dataType() )
60  {
61  gec.objectType = dtc.objectType();
62  gec.dataType = dtc.dataType();
63  gec.global_filename = att
65  }
66  gec.attribute = att;
67  std::string att2 = att;
68  if( att2.substr( 0, 5 ) == "aims_" )
69  att2 = att2.substr( 5, att2.length() - 5 );
70  if( gec.global_index_attribute.empty() )
71  gec.global_index_attribute = att2 + "_label";
72  if( gec.local_file_attribute.empty() )
73  gec.local_file_attribute = att2 + "_filename"
75  gec.dataType );
76  }
77 
78 }
79 
80 #endif
static GraphElementCode & graphElementCodeByAtt(Graph &, const std::string &syntax, const std::string &attrib)
std::string local_file_attribute
Definition: graphmanip.h:90
std::string dataType
data type as in Aims Finder: "S16", "U8", "FLOAT", ...
Definition: graphmanip.h:88
std::map< std::string, std::map< std::string, GraphElementCode > > GraphElementTable
GraphElementCode table, stored in graphs in attribute "aims_objects_table" (carto::rc_ptr
Definition: graphmanip.h:101
Describe how Aims objects are stored in graph objects.
Definition: graphmanip.h:64
std::string global_index_attribute
Definition: graphmanip.h:91
std::string attribute
attribute found in graph objects, this attribute is a reference-counting pointer (carto::rc_ptr) t...
Definition: graphmanip.h:84
std::string objectType
object type as in aims Finder: "Volume", "Bucket", "Mesh", ...
Definition: graphmanip.h:86
static std::string defaultExtensionForObjectType(const std::string &otype, const std::string &dtype)
std::string global_filename
Definition: graphmanip.h:92
static void storeAims(Graph &graph, GraphObject *vertex, const std::string &attribute, carto::rc_ptr< T > obj)
This template function stores the given object in the given Vertex / Edge of the graph and takes care...
Definition: graphmanip_d.h:46