protected override void GenerateSetMethodCodeCore(CodeContainerBase container, string localValueVarName, ref bool localValueVarUsed, string lenVarName, ref bool lenVarUsed, string retErrVarName) { VariableType truthVar = new VariableType("bool_value", LwipDefs.Vt_U8); container.Declarations.Add(new VariableDeclaration(truthVar)); container.AddCodeFormat("snmp_decode_truthvalue({0}, &{1});", localValueVarName, truthVar.Name); localValueVarUsed = true; container.AddElement(new Comment(String.Format("TODO: store new value contained in '{0}' here", truthVar.Name), singleLine: true)); }
protected override void GenerateGetMethodCodeCore(CodeContainerBase container, string localValueVarName, ref bool localValueVarUsed, string retLenVarName) { if (this.Restrictions.Count > 0) { StringBuilder ifCond = new StringBuilder(); foreach (IRestriction restriction in this.Restrictions) { ifCond.Append(restriction.GetCheckCodeValid(retLenVarName)); ifCond.Append(" || "); } ifCond.Length -= 4; container.AddElement(new Comment("TODO: take care of len restrictions defined in MIB: " + ifCond, singleLine: true)); } base.GenerateGetMethodCodeCore(container, localValueVarName, ref localValueVarUsed, retLenVarName); }
protected override void GenerateTestMethodCodeCore(CodeContainerBase container, string localValueVarName, ref bool localValueVarUsed, string lenVarName, ref bool lenVarUsed, string retErrVarName) { System.Diagnostics.Trace.Assert(this.Restrictions.Count > 0); StringBuilder ifCond = new StringBuilder(); foreach (IRestriction restriction in this.Restrictions) { ifCond.Append(restriction.GetCheckCodeValid("*" + localValueVarName)); ifCond.Append(" || "); localValueVarUsed = true; } ifCond.Length -= 4; IfThenElse ite = new IfThenElse(ifCond.ToString()); ite.AddCode(String.Format("{0} = {1};", retErrVarName, LwipDefs.Def_ErrorCode_Ok)); container.AddElement(ite); }
protected virtual void GenerateTestMethodCodeCore(CodeContainerBase container, string localValueVarName, ref bool localValueVarUsed, string lenVarName, ref bool lenVarUsed, string retErrVarName) { container.AddElement(new Comment(String.Format("TODO: test new value here:\nif (*{0} == ) {1} = {2};", localValueVarName, retErrVarName, LwipDefs.Def_ErrorCode_Ok))); }
protected virtual void GenerateSetMethodCodeCore(CodeContainerBase container, string localValueVarName, ref bool localValueVarUsed, string lenVarName, ref bool lenVarUsed, string retErrVarName) { container.AddElement(new Comment(String.Format("TODO: store new value contained in '*{0}' here", localValueVarName), singleLine: true)); }
protected virtual void GenerateGetMethodCodeCore(CodeContainerBase container, string localValueVarName, ref bool localValueVarUsed, string retLenVarName) { container.AddElement(new Comment(String.Format("TODO: put requested value to '*{0}' here", localValueVarName), singleLine: true)); container.AddCodeFormat("{0} = {1};", retLenVarName, (!String.IsNullOrWhiteSpace(this.FixedValueLength)) ? this.FixedValueLength : "0"); }
public virtual void GenerateGetMethodCode(CodeContainerBase container, string valueVarName, ref bool valueVarUsed, string retLenVarName) { bool localValueVarUsed; if (GenerateValueDeclaration(container, LocalValueName, valueVarName)) { valueVarUsed = true; localValueVarUsed = false; } else { localValueVarUsed = true; // do not generate UNUSED_ARG code } if (this.FixedValueLength == null) { // check that value with variable length fits into buffer container.AddElement(new Comment(String.Format("TODO: take care that value with variable length fits into buffer: ({0} <= SNMP_MAX_VALUE_SIZE)", retLenVarName), singleLine: true)); } GenerateGetMethodCodeCore(container, LocalValueName, ref localValueVarUsed, retLenVarName); if (!localValueVarUsed) { container.AddCode(String.Format("LWIP_UNUSED_ARG({0});", LocalValueName)); } }
protected override void GenerateGetMethodCodeCore(CodeContainerBase container, string localValueVarName, ref bool localValueVarUsed, string retLenVarName) { container.AddElement(new Comment(String.Format("TODO: put requested value to '*{0}' here. '{0}' has to be interpreted as {1}[]", localValueVarName, LwipDefs.Vt_U32), singleLine: true)); container.AddElement(EmptyLine.SingleLine); container.AddCode(String.Format("{0} = 0; // TODO: return real value length here (should be 'numOfElements * sizeof({1})')", retLenVarName, LwipDefs.Vt_U32)); }
public override void GenerateSetMethodCode(CodeContainerBase container, string valueVarName, ref bool valueVarUsed, string lenVarName, ref bool lenVarUsed, string retErrVarName) { const string bitVarName = "bits"; container.Declarations.Add(new VariableDeclaration(new VariableType(bitVarName, LwipDefs.Vt_U32))); IfThenElse ite = new IfThenElse(String.Format( "snmp_decode_bits(({0} *){1}, {2}, &{3}) == ERR_OK", LwipDefs.Vt_U8, valueVarName, lenVarName, bitVarName)); valueVarUsed = true; lenVarUsed = true; ite.AddElement(new Comment(String.Format("TODO: store new value contained in '{0}' here", bitVarName), singleLine: true)); container.AddElement(ite); }
public override void GenerateTestMethodCode(CodeContainerBase container, string valueVarName, ref bool valueVarUsed, string lenVarName, ref bool lenVarUsed, string retErrVarName) { if (this.Restrictions.Count > 0) { const string bitVarName = "bits"; container.Declarations.Add(new VariableDeclaration(new VariableType(bitVarName, LwipDefs.Vt_U32))); IfThenElse ite = new IfThenElse(String.Format( "snmp_decode_bits(({0} *){1}, {2}, &{3}) == ERR_OK", LwipDefs.Vt_U8, valueVarName, lenVarName, bitVarName)); valueVarUsed = true; lenVarUsed = true; StringBuilder innerIfCond = new StringBuilder(); foreach (IRestriction restriction in this.Restrictions) { innerIfCond.Append(restriction.GetCheckCodeValid(bitVarName)); innerIfCond.Append(" || "); } innerIfCond.Length -= 4; IfThenElse innerIte = new IfThenElse(innerIfCond.ToString()); innerIte.AddCode(String.Format("{0} = {1};", retErrVarName, LwipDefs.Def_ErrorCode_Ok)); ite.AddElement(innerIte); container.AddElement(ite); } else { base.GenerateTestMethodCode(container, valueVarName, ref valueVarUsed, lenVarName, ref lenVarUsed, retErrVarName); } }