View | Details | Raw Unified | Return to bug 1516
Collapse All | Expand All

(-)a/src/config-store/model/attribute-default-iterator.cc (+5 lines)
 Lines 112-117    Link Here 
112
}
112
}
113
113
114
void 
114
void 
115
AttributeDefaultIterator::DoVisitAttributeReadOnly (std::string name, std::string defaultValue)
116
{
117
}
118
119
void 
115
AttributeDefaultIterator::VisitAttribute (TypeId tid, std::string name, std::string defaultValue, uint32_t index)
120
AttributeDefaultIterator::VisitAttribute (TypeId tid, std::string name, std::string defaultValue, uint32_t index)
116
{
121
{
117
  DoVisitAttribute (name, defaultValue);
122
  DoVisitAttribute (name, defaultValue);
(-)a/src/config-store/model/attribute-default-iterator.h (+4 lines)
 Lines 53-58    Link Here 
53
   * \brief This method is just an interface and needs to be implemented
53
   * \brief This method is just an interface and needs to be implemented
54
   */
54
   */
55
  virtual void DoVisitAttribute (std::string name, std::string defaultValue);
55
  virtual void DoVisitAttribute (std::string name, std::string defaultValue);
56
  /**
57
   * \brief This method is just an interface and needs to be implemented
58
   */
59
  virtual void DoVisitAttributeReadOnly (std::string name, std::string defaultValue);
56
};
60
};
57
61
58
} // namespace ns3
62
} // namespace ns3
(-)a/src/config-store/model/attribute-iterator.cc (+12 lines)
 Lines 134-139    Link Here 
134
}
134
}
135
135
136
void 
136
void 
137
AttributeIterator::VisitAttributeReadOnly (Ptr<Object> object, std::string name)
138
{
139
  m_currentPath.push_back (name);
140
  DoVisitAttributeReadOnly (object, name);
141
  m_currentPath.pop_back ();
142
}
143
144
void 
137
AttributeIterator::StartVisitObject (Ptr<Object> object)
145
AttributeIterator::StartVisitObject (Ptr<Object> object)
138
{
146
{
139
  m_currentPath.push_back ("$" + object->GetInstanceTypeId ().GetName ());
147
  m_currentPath.push_back ("$" + object->GetInstanceTypeId ().GetName ());
 Lines 250-255    Link Here 
250
            {
258
            {
251
              VisitAttribute (object, info.name);
259
              VisitAttribute (object, info.name);
252
            }
260
            }
261
          else if ((info.flags & TypeId::ATTR_GET) && info.accessor->HasGetter ())
262
            {
263
              VisitAttributeReadOnly (object, info.name);
264
            }
253
          else
265
          else
254
            {
266
            {
255
              NS_LOG_DEBUG ("could not store " << info.name);
267
              NS_LOG_DEBUG ("could not store " << info.name);
(-)a/src/config-store/model/attribute-iterator.h (+2 lines)
 Lines 42-47    Link Here 
42
  std::string GetCurrentPath (void) const;
42
  std::string GetCurrentPath (void) const;
43
private:
43
private:
44
  virtual void DoVisitAttribute (Ptr<Object> object, std::string name) = 0;
44
  virtual void DoVisitAttribute (Ptr<Object> object, std::string name) = 0;
45
  virtual void DoVisitAttributeReadOnly (Ptr<Object> object, std::string name) = 0;
45
  virtual void DoStartVisitObject (Ptr<Object> object);
46
  virtual void DoStartVisitObject (Ptr<Object> object);
46
  virtual void DoEndVisitObject (void);
47
  virtual void DoEndVisitObject (void);
47
  virtual void DoStartVisitPointerAttribute (Ptr<Object> object, std::string name, Ptr<Object> value);
48
  virtual void DoStartVisitPointerAttribute (Ptr<Object> object, std::string name, Ptr<Object> value);
 Lines 56-61    Link Here 
56
  std::string GetCurrentPath (std::string attr) const;
57
  std::string GetCurrentPath (std::string attr) const;
57
58
58
  void VisitAttribute (Ptr<Object> object, std::string name);
59
  void VisitAttribute (Ptr<Object> object, std::string name);
60
  void VisitAttributeReadOnly (Ptr<Object> object, std::string name);
59
  void StartVisitObject (Ptr<Object> object);
61
  void StartVisitObject (Ptr<Object> object);
60
  void EndVisitObject (void);
62
  void EndVisitObject (void);
61
  void StartVisitPointerAttribute (Ptr<Object> object, std::string name, Ptr<Object> value);
63
  void StartVisitPointerAttribute (Ptr<Object> object, std::string name, Ptr<Object> value);
(-)a/src/config-store/model/display-functions.cc (+9 lines)
 Lines 40-45    Link Here 
40
      g_object_set (renderer, "text", str.Get ().c_str (), (char*) 0);
40
      g_object_set (renderer, "text", str.Get ().c_str (), (char*) 0);
41
      g_object_set (renderer, "editable", TRUE, (char*) 0);
41
      g_object_set (renderer, "editable", TRUE, (char*) 0);
42
    }
42
    }
43
  else if (node->type == ModelNode::NODE_ATTRIBUTE_READ_ONLY)
44
    {
45
      StringValue str;
46
      node->object->GetAttribute (node->name, str);
47
      g_object_set (renderer, "text", str.Get ().c_str (), (char*) 0);
48
      g_object_set (renderer, "editable", FALSE, (char*) 0);
49
    }
43
  else
50
  else
44
    {
51
    {
45
      g_object_set (renderer, "text", "", (char*) 0);
52
      g_object_set (renderer, "text", "", (char*) 0);
 Lines 76-81    Link Here 
76
      }
83
      }
77
      break;
84
      break;
78
    case ModelNode::NODE_ATTRIBUTE:
85
    case ModelNode::NODE_ATTRIBUTE:
86
    case ModelNode::NODE_ATTRIBUTE_READ_ONLY:
79
      g_object_set (renderer, "text", node->name.c_str (), (char*) 0);
87
      g_object_set (renderer, "text", node->name.c_str (), (char*) 0);
80
      break;
88
      break;
81
    }
89
    }
 Lines 173-178    Link Here 
173
        }
181
        }
174
      break;
182
      break;
175
    case ModelNode::NODE_ATTRIBUTE:
183
    case ModelNode::NODE_ATTRIBUTE:
184
    case ModelNode::NODE_ATTRIBUTE_READ_ONLY:
176
      {
185
      {
177
        uint32_t attrIndex = 0;
186
        uint32_t attrIndex = 0;
178
        TypeId tid;
187
        TypeId tid;
(-)a/src/config-store/model/model-node-creator.cc (+12 lines)
 Lines 64-69    Link Here 
64
  Add (node);
64
  Add (node);
65
  Remove ();
65
  Remove ();
66
}
66
}
67
68
void 
69
ModelCreator::DoVisitAttributeReadOnly (Ptr<Object> object, std::string name)
70
{
71
  ModelNode *node = new ModelNode ();
72
  node->type = ModelNode::NODE_ATTRIBUTE_READ_ONLY;
73
  node->object = object;
74
  node->name = name;
75
  Add (node);
76
  Remove ();
77
}
78
67
void 
79
void 
68
ModelCreator::DoStartVisitObject (Ptr<Object> object)
80
ModelCreator::DoStartVisitObject (Ptr<Object> object)
69
{
81
{
(-)a/src/config-store/model/model-node-creator.h (+3 lines)
 Lines 35-40    Link Here 
35
    // store object + attribute name
35
    // store object + attribute name
36
    NODE_ATTRIBUTE,
36
    NODE_ATTRIBUTE,
37
    // store object + attribute name
37
    // store object + attribute name
38
    NODE_ATTRIBUTE_READ_ONLY,
39
    // store object + attribute name
38
    NODE_POINTER,
40
    NODE_POINTER,
39
    // store object + attribute name
41
    // store object + attribute name
40
    NODE_VECTOR,
42
    NODE_VECTOR,
 Lines 59-64    Link Here 
59
  void Build (GtkTreeStore *treestore);
61
  void Build (GtkTreeStore *treestore);
60
private:
62
private:
61
  virtual void DoVisitAttribute (Ptr<Object> object, std::string name);
63
  virtual void DoVisitAttribute (Ptr<Object> object, std::string name);
64
  virtual void DoVisitAttributeReadOnly (Ptr<Object> object, std::string name);
62
  virtual void DoStartVisitObject (Ptr<Object> object);
65
  virtual void DoStartVisitObject (Ptr<Object> object);
63
  virtual void DoEndVisitObject (void);
66
  virtual void DoEndVisitObject (void);
64
  virtual void DoStartVisitPointerAttribute (Ptr<Object> object, std::string name, Ptr<Object> value);
67
  virtual void DoStartVisitPointerAttribute (Ptr<Object> object, std::string name, Ptr<Object> value);
(-)a/src/config-store/model/raw-text-config.cc (+3 lines)
 Lines 76-81    Link Here 
76
      object->GetAttribute (name, str);
76
      object->GetAttribute (name, str);
77
      *m_os << "value " << GetCurrentPath () << " \"" << str.Get () << "\"" << std::endl;
77
      *m_os << "value " << GetCurrentPath () << " \"" << str.Get () << "\"" << std::endl;
78
    }
78
    }
79
    virtual void DoVisitAttributeReadOnly (Ptr<Object> object, std::string name) {
80
    }
81
79
    std::ostream *m_os;
82
    std::ostream *m_os;
80
  };
83
  };
81
84
(-)a/src/config-store/model/xml-config.cc (+3 lines)
 Lines 159-164    Link Here 
159
          NS_FATAL_ERROR ("Error at xmlTextWriterEndElement");
159
          NS_FATAL_ERROR ("Error at xmlTextWriterEndElement");
160
        }
160
        }
161
    }
161
    }
162
    virtual void DoVisitAttributeReadOnly (Ptr<Object> object, std::string name) {
163
    }
164
    
162
    xmlTextWriterPtr m_writer;
165
    xmlTextWriterPtr m_writer;
163
  };
166
  };
164
167

Return to bug 1516