34 using System.Collections.Generic;
42 private readonly List<SnmpNode> childNodes =
new List<SnmpNode>();
43 private readonly List<SnmpScalarNode> childScalarNodes =
new List<SnmpScalarNode>();
44 private string fullOid =
"";
53 get {
return this.
Name +
"_treenode"; }
58 get {
return this.fullOid; }
59 set { this.fullOid = value; }
64 get {
return this.childNodes; }
69 get {
return this.childScalarNodes; }
72 private void GenerateAggregatedCode(
MibCFile mibFile,
bool generateDeclarations,
bool generateImplementations)
75 base.GenerateAggregatedCode(
78 String.Format(
"{0}->node->oid", instanceType.
Name),
80 generateImplementations);
83 private void GenerateAggregateMethodDeclarations(
MibCFile mibFile)
85 if (LwipOpts.GenerateSingleAccessMethodsForTreeNodeScalars && (
this.childScalarNodes.Count > 1))
87 GenerateAggregatedCode(mibFile,
true,
false);
93 string nodeInitialization;
95 if (LwipOpts.GenerateSingleAccessMethodsForTreeNodeScalars && (
this.childScalarNodes.Count > 1))
97 GenerateAggregatedCode(mibFile,
false,
true);
101 if (this.childNodes.Count > 0)
103 StringBuilder subnodeArrayInitialization =
new StringBuilder();
105 for (
int i=0; i<this.childNodes.Count; i++)
107 subnodeArrayInitialization.Append(
" &");
108 subnodeArrayInitialization.Append(this.childNodes[i].
FullNodeName);
109 subnodeArrayInitialization.Append(
".node");
112 subnodeArrayInitialization.Append(
".node");
115 if (i < (this.childNodes.Count - 1))
117 subnodeArrayInitialization.Append(
",\n");
123 "{\n" + subnodeArrayInitialization +
"\n}",
128 nodeInitialization = String.Format(
"SNMP_CREATE_TREE_NODE({0}, {1})", this.
Oid, subnodeArray.
Type.
Name);
132 nodeInitialization = String.Format(
"SNMP_CREATE_EMPTY_TREE_NODE({0})", this.
Oid);
143 this.childScalarNodes.Clear();
146 for (
int i=this.
ChildNodes.Count-1; i>=0; i--)
152 foreach (
SnmpNode childNode
in this.childNodes)
155 if (scalarNode != null)
157 this.childScalarNodes.Add(scalarNode);
164 if (this.childNodes.Count > 0)
166 if (LwipOpts.GenerateScalarArrays && (
this.childScalarNodes.Count ==
this.childNodes.Count) && (
this.ParentNode != null))
169 scalarArrayNode.
Oid = this.
Oid;
182 else if (LwipOpts.GenerateSingleAccessMethodsForTreeNodeScalars && (
this.childScalarNodes.Count > 1))
195 if (!LwipOpts.GenerateEmptyFolders && (
this.ParentNode != null))
213 foreach (
SnmpNode childNode
in this.childNodes)
217 childNode.
Generate(generatedFile, generatedHeaderFile);
222 String.Format(
"--- {0} {1} -----------------------------------------------------",
this.Name,
this.fullOid),
225 generatedFile.Declarations.Add(dividerComment);
226 generatedFile.Implementation.Add(dividerComment);
228 this.GenerateAggregateMethodDeclarations(generatedFile);
230 foreach (
SnmpNode childNode
in this.childNodes)
234 childNode.
Generate(generatedFile, generatedHeaderFile);
238 base.Generate(generatedFile, generatedHeaderFile);
virtual string SetMethodName
virtual void Generate(MibCFile generatedFile, MibHeaderFile generatedHeaderFile)
override IEnumerable< SnmpScalarNode > AggregatedScalarNodes
override void Generate(MibCFile generatedFile, MibHeaderFile generatedHeaderFile)
string ExternalTestMethod
override void GenerateCode(MibCFile mibFile)
override void Analyze()
Called after node structure creation is completed and before code is created. Offers the possibility ...
override string FullNodeName
virtual string TestMethodName
virtual void Analyze()
Called after node structure creation is completed and before code is created. Offers the possibility ...
virtual string GetMethodName
List< SnmpNode > ChildNodes
List< CodeElement > Declarations
SnmpTreeNode(SnmpTreeNode parentNode)