A Discrete-Event Network Simulator
API
model-typeid-creator.cc
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * This program is free software; you can redistribute it and/or modify
4  * it under the terms of the GNU General Public License version 2 as
5  * published by the Free Software Foundation;
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software
14  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15  *
16  * Author: Faker Moatamri <faker.moatamri@sophia.inria.fr>
17  */
18 
19 #include "model-typeid-creator.h"
20 
21 namespace ns3 {
22 
24 {
25 }
26 void
27 
28 ModelTypeidCreator::Build (GtkTreeStore *treestore)
29 {
30  m_treestore = treestore;
31  m_iters.push_back (0);
32  Iterate ();
33  NS_ASSERT (m_iters.size () == 1);
34 }
35 
36 void
38 {
39  GtkTreeIter *parent = m_iters.back ();
40  GtkTreeIter *current = g_new (GtkTreeIter, 1);
41  gtk_tree_store_append (m_treestore, current, parent);
42  gtk_tree_store_set (m_treestore, current, COL_TYPEID, node, -1);
43  m_iters.push_back (current);
44 }
45 
46 void
48 {
49  GtkTreeIter *iter = m_iters.back ();
50  g_free (iter);
51  m_iters.pop_back ();
52 }
53 
54 void
55 ModelTypeidCreator::VisitAttribute (TypeId tid, std::string name, std::string defaultValue, uint32_t index)
56 {
57  ModelTypeid *node = new ModelTypeid ();
59  node->tid = tid;
60  node->name = name;
61  node->defaultValue = defaultValue;
62  node->index = index;
63  Add (node);
64  Remove ();
65 }
66 
67 void
69 {
70  ModelTypeid *node = new ModelTypeid ();
72  node->tid = TypeId::LookupByName (name);
73  Add (node);
74 }
75 
76 void
78 {
79  Remove ();
80 }
81 } //end namespace ns3
std::vector< GtkTreeIter * > m_iters
This contains a vector of iterators used to build the TreeStore.
GtkTreeStore * m_treestore
this is the TreeStore model corresponding to the view
virtual void VisitAttribute(TypeId tid, std::string name, std::string defaultValue, uint32_t index)
This method will add a ModelTypeid to the GtkTreeIterator.
enum ns3::ModelTypeid::@3 type
node type
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
Definition: assert.h:67
void Build(GtkTreeStore *treestore)
This method will iterate on typeIds having default attributes and create a model for them...
std::string defaultValue
TypeId default value.
std::string name
TypeId name.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
TypeId tid
The TypeId object and if it is an attribute, it's the TypeId object of the attribute.
virtual void EndVisitTypeId(void)
Remove the last gtk tree iterator.
virtual void StartVisitTypeId(std::string name)
Add a node for the new TypeId object.
void Add(ModelTypeid *node)
Adds a treestore iterator to m_treestore model.
void Remove(void)
Removes the last GtkTreeIterator from m_iters.
void Iterate(void)
This function will go through all the TypeIds and get only the attributes which are explicit values (...
uint32_t index
stores the index of the attribute in list of attributes for a given TypeId
A class used in the implementation of the GtkConfigStore.
a unique identifier for an interface.
Definition: type-id.h:58
static TypeId LookupByName(std::string name)
Get a TypeId by name.
Definition: type-id.cc:823