plc4go/protocols/bacnetip/readwrite/model/BACnetPriorityValue.go (504 lines of code) (raw):

/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package model import ( "context" "fmt" "github.com/pkg/errors" "github.com/rs/zerolog" . "github.com/apache/plc4x/plc4go/spi/codegen/fields" . "github.com/apache/plc4x/plc4go/spi/codegen/io" "github.com/apache/plc4x/plc4go/spi/utils" ) // Code generated by code-generation. DO NOT EDIT. // BACnetPriorityValue is the corresponding interface of BACnetPriorityValue type BACnetPriorityValue interface { BACnetPriorityValueContract BACnetPriorityValueRequirements fmt.Stringer utils.LengthAware utils.Serializable utils.Copyable // IsBACnetPriorityValue is a marker method to prevent unintentional type checks (interfaces of same signature) IsBACnetPriorityValue() // CreateBuilder creates a BACnetPriorityValueBuilder CreateBACnetPriorityValueBuilder() BACnetPriorityValueBuilder } // BACnetPriorityValueContract provides a set of functions which can be overwritten by a sub struct type BACnetPriorityValueContract interface { // GetPeekedTagHeader returns PeekedTagHeader (property field) GetPeekedTagHeader() BACnetTagHeader // GetPeekedTagNumber returns PeekedTagNumber (virtual field) GetPeekedTagNumber() uint8 // GetPeekedIsContextTag returns PeekedIsContextTag (virtual field) GetPeekedIsContextTag() bool // GetObjectTypeArgument() returns a parser argument GetObjectTypeArgument() BACnetObjectType // IsBACnetPriorityValue is a marker method to prevent unintentional type checks (interfaces of same signature) IsBACnetPriorityValue() // CreateBuilder creates a BACnetPriorityValueBuilder CreateBACnetPriorityValueBuilder() BACnetPriorityValueBuilder } // BACnetPriorityValueRequirements provides a set of functions which need to be implemented by a sub struct type BACnetPriorityValueRequirements interface { GetLengthInBits(ctx context.Context) uint16 GetLengthInBytes(ctx context.Context) uint16 // GetPeekedIsContextTag returns PeekedIsContextTag (discriminator field) GetPeekedIsContextTag() bool // GetPeekedTagNumber returns PeekedTagNumber (discriminator field) GetPeekedTagNumber() uint8 } // _BACnetPriorityValue is the data-structure of this message type _BACnetPriorityValue struct { _SubType interface { BACnetPriorityValueContract BACnetPriorityValueRequirements } PeekedTagHeader BACnetTagHeader // Arguments. ObjectTypeArgument BACnetObjectType } var _ BACnetPriorityValueContract = (*_BACnetPriorityValue)(nil) // NewBACnetPriorityValue factory function for _BACnetPriorityValue func NewBACnetPriorityValue(peekedTagHeader BACnetTagHeader, objectTypeArgument BACnetObjectType) *_BACnetPriorityValue { if peekedTagHeader == nil { panic("peekedTagHeader of type BACnetTagHeader for BACnetPriorityValue must not be nil") } return &_BACnetPriorityValue{PeekedTagHeader: peekedTagHeader, ObjectTypeArgument: objectTypeArgument} } /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////// Builder /////////////////////// // BACnetPriorityValueBuilder is a builder for BACnetPriorityValue type BACnetPriorityValueBuilder interface { utils.Copyable // WithMandatoryFields adds all mandatory fields (convenience for using multiple builder calls) WithMandatoryFields(peekedTagHeader BACnetTagHeader) BACnetPriorityValueBuilder // WithPeekedTagHeader adds PeekedTagHeader (property field) WithPeekedTagHeader(BACnetTagHeader) BACnetPriorityValueBuilder // WithPeekedTagHeaderBuilder adds PeekedTagHeader (property field) which is build by the builder WithPeekedTagHeaderBuilder(func(BACnetTagHeaderBuilder) BACnetTagHeaderBuilder) BACnetPriorityValueBuilder // WithArgObjectTypeArgument sets a parser argument WithArgObjectTypeArgument(BACnetObjectType) BACnetPriorityValueBuilder // AsBACnetPriorityValueNull converts this build to a subType of BACnetPriorityValue. It is always possible to return to current builder using Done() AsBACnetPriorityValueNull() BACnetPriorityValueNullBuilder // AsBACnetPriorityValueReal converts this build to a subType of BACnetPriorityValue. It is always possible to return to current builder using Done() AsBACnetPriorityValueReal() BACnetPriorityValueRealBuilder // AsBACnetPriorityValueEnumerated converts this build to a subType of BACnetPriorityValue. It is always possible to return to current builder using Done() AsBACnetPriorityValueEnumerated() BACnetPriorityValueEnumeratedBuilder // AsBACnetPriorityValueUnsigned converts this build to a subType of BACnetPriorityValue. It is always possible to return to current builder using Done() AsBACnetPriorityValueUnsigned() BACnetPriorityValueUnsignedBuilder // AsBACnetPriorityValueBoolean converts this build to a subType of BACnetPriorityValue. It is always possible to return to current builder using Done() AsBACnetPriorityValueBoolean() BACnetPriorityValueBooleanBuilder // AsBACnetPriorityValueInteger converts this build to a subType of BACnetPriorityValue. It is always possible to return to current builder using Done() AsBACnetPriorityValueInteger() BACnetPriorityValueIntegerBuilder // AsBACnetPriorityValueDouble converts this build to a subType of BACnetPriorityValue. It is always possible to return to current builder using Done() AsBACnetPriorityValueDouble() BACnetPriorityValueDoubleBuilder // AsBACnetPriorityValueTime converts this build to a subType of BACnetPriorityValue. It is always possible to return to current builder using Done() AsBACnetPriorityValueTime() BACnetPriorityValueTimeBuilder // AsBACnetPriorityValueCharacterString converts this build to a subType of BACnetPriorityValue. It is always possible to return to current builder using Done() AsBACnetPriorityValueCharacterString() BACnetPriorityValueCharacterStringBuilder // AsBACnetPriorityValueOctetString converts this build to a subType of BACnetPriorityValue. It is always possible to return to current builder using Done() AsBACnetPriorityValueOctetString() BACnetPriorityValueOctetStringBuilder // AsBACnetPriorityValueBitString converts this build to a subType of BACnetPriorityValue. It is always possible to return to current builder using Done() AsBACnetPriorityValueBitString() BACnetPriorityValueBitStringBuilder // AsBACnetPriorityValueDate converts this build to a subType of BACnetPriorityValue. It is always possible to return to current builder using Done() AsBACnetPriorityValueDate() BACnetPriorityValueDateBuilder // AsBACnetPriorityValueObjectidentifier converts this build to a subType of BACnetPriorityValue. It is always possible to return to current builder using Done() AsBACnetPriorityValueObjectidentifier() BACnetPriorityValueObjectidentifierBuilder // AsBACnetPriorityValueConstructedValue converts this build to a subType of BACnetPriorityValue. It is always possible to return to current builder using Done() AsBACnetPriorityValueConstructedValue() BACnetPriorityValueConstructedValueBuilder // AsBACnetPriorityValueDateTime converts this build to a subType of BACnetPriorityValue. It is always possible to return to current builder using Done() AsBACnetPriorityValueDateTime() BACnetPriorityValueDateTimeBuilder // Build builds the BACnetPriorityValue or returns an error if something is wrong PartialBuild() (BACnetPriorityValueContract, error) // MustBuild does the same as Build but panics on error PartialMustBuild() BACnetPriorityValueContract // Build builds the BACnetPriorityValue or returns an error if something is wrong Build() (BACnetPriorityValue, error) // MustBuild does the same as Build but panics on error MustBuild() BACnetPriorityValue } // NewBACnetPriorityValueBuilder() creates a BACnetPriorityValueBuilder func NewBACnetPriorityValueBuilder() BACnetPriorityValueBuilder { return &_BACnetPriorityValueBuilder{_BACnetPriorityValue: new(_BACnetPriorityValue)} } type _BACnetPriorityValueChildBuilder interface { utils.Copyable setParent(BACnetPriorityValueContract) buildForBACnetPriorityValue() (BACnetPriorityValue, error) } type _BACnetPriorityValueBuilder struct { *_BACnetPriorityValue childBuilder _BACnetPriorityValueChildBuilder err *utils.MultiError } var _ (BACnetPriorityValueBuilder) = (*_BACnetPriorityValueBuilder)(nil) func (b *_BACnetPriorityValueBuilder) WithMandatoryFields(peekedTagHeader BACnetTagHeader) BACnetPriorityValueBuilder { return b.WithPeekedTagHeader(peekedTagHeader) } func (b *_BACnetPriorityValueBuilder) WithPeekedTagHeader(peekedTagHeader BACnetTagHeader) BACnetPriorityValueBuilder { b.PeekedTagHeader = peekedTagHeader return b } func (b *_BACnetPriorityValueBuilder) WithPeekedTagHeaderBuilder(builderSupplier func(BACnetTagHeaderBuilder) BACnetTagHeaderBuilder) BACnetPriorityValueBuilder { builder := builderSupplier(b.PeekedTagHeader.CreateBACnetTagHeaderBuilder()) var err error b.PeekedTagHeader, err = builder.Build() if err != nil { if b.err == nil { b.err = &utils.MultiError{MainError: errors.New("sub builder failed")} } b.err.Append(errors.Wrap(err, "BACnetTagHeaderBuilder failed")) } return b } func (b *_BACnetPriorityValueBuilder) WithArgObjectTypeArgument(objectTypeArgument BACnetObjectType) BACnetPriorityValueBuilder { b.ObjectTypeArgument = objectTypeArgument return b } func (b *_BACnetPriorityValueBuilder) PartialBuild() (BACnetPriorityValueContract, error) { if b.PeekedTagHeader == nil { if b.err == nil { b.err = new(utils.MultiError) } b.err.Append(errors.New("mandatory field 'peekedTagHeader' not set")) } if b.err != nil { return nil, errors.Wrap(b.err, "error occurred during build") } return b._BACnetPriorityValue.deepCopy(), nil } func (b *_BACnetPriorityValueBuilder) PartialMustBuild() BACnetPriorityValueContract { build, err := b.PartialBuild() if err != nil { panic(err) } return build } func (b *_BACnetPriorityValueBuilder) AsBACnetPriorityValueNull() BACnetPriorityValueNullBuilder { if cb, ok := b.childBuilder.(BACnetPriorityValueNullBuilder); ok { return cb } cb := NewBACnetPriorityValueNullBuilder().(*_BACnetPriorityValueNullBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_BACnetPriorityValueBuilder) AsBACnetPriorityValueReal() BACnetPriorityValueRealBuilder { if cb, ok := b.childBuilder.(BACnetPriorityValueRealBuilder); ok { return cb } cb := NewBACnetPriorityValueRealBuilder().(*_BACnetPriorityValueRealBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_BACnetPriorityValueBuilder) AsBACnetPriorityValueEnumerated() BACnetPriorityValueEnumeratedBuilder { if cb, ok := b.childBuilder.(BACnetPriorityValueEnumeratedBuilder); ok { return cb } cb := NewBACnetPriorityValueEnumeratedBuilder().(*_BACnetPriorityValueEnumeratedBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_BACnetPriorityValueBuilder) AsBACnetPriorityValueUnsigned() BACnetPriorityValueUnsignedBuilder { if cb, ok := b.childBuilder.(BACnetPriorityValueUnsignedBuilder); ok { return cb } cb := NewBACnetPriorityValueUnsignedBuilder().(*_BACnetPriorityValueUnsignedBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_BACnetPriorityValueBuilder) AsBACnetPriorityValueBoolean() BACnetPriorityValueBooleanBuilder { if cb, ok := b.childBuilder.(BACnetPriorityValueBooleanBuilder); ok { return cb } cb := NewBACnetPriorityValueBooleanBuilder().(*_BACnetPriorityValueBooleanBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_BACnetPriorityValueBuilder) AsBACnetPriorityValueInteger() BACnetPriorityValueIntegerBuilder { if cb, ok := b.childBuilder.(BACnetPriorityValueIntegerBuilder); ok { return cb } cb := NewBACnetPriorityValueIntegerBuilder().(*_BACnetPriorityValueIntegerBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_BACnetPriorityValueBuilder) AsBACnetPriorityValueDouble() BACnetPriorityValueDoubleBuilder { if cb, ok := b.childBuilder.(BACnetPriorityValueDoubleBuilder); ok { return cb } cb := NewBACnetPriorityValueDoubleBuilder().(*_BACnetPriorityValueDoubleBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_BACnetPriorityValueBuilder) AsBACnetPriorityValueTime() BACnetPriorityValueTimeBuilder { if cb, ok := b.childBuilder.(BACnetPriorityValueTimeBuilder); ok { return cb } cb := NewBACnetPriorityValueTimeBuilder().(*_BACnetPriorityValueTimeBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_BACnetPriorityValueBuilder) AsBACnetPriorityValueCharacterString() BACnetPriorityValueCharacterStringBuilder { if cb, ok := b.childBuilder.(BACnetPriorityValueCharacterStringBuilder); ok { return cb } cb := NewBACnetPriorityValueCharacterStringBuilder().(*_BACnetPriorityValueCharacterStringBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_BACnetPriorityValueBuilder) AsBACnetPriorityValueOctetString() BACnetPriorityValueOctetStringBuilder { if cb, ok := b.childBuilder.(BACnetPriorityValueOctetStringBuilder); ok { return cb } cb := NewBACnetPriorityValueOctetStringBuilder().(*_BACnetPriorityValueOctetStringBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_BACnetPriorityValueBuilder) AsBACnetPriorityValueBitString() BACnetPriorityValueBitStringBuilder { if cb, ok := b.childBuilder.(BACnetPriorityValueBitStringBuilder); ok { return cb } cb := NewBACnetPriorityValueBitStringBuilder().(*_BACnetPriorityValueBitStringBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_BACnetPriorityValueBuilder) AsBACnetPriorityValueDate() BACnetPriorityValueDateBuilder { if cb, ok := b.childBuilder.(BACnetPriorityValueDateBuilder); ok { return cb } cb := NewBACnetPriorityValueDateBuilder().(*_BACnetPriorityValueDateBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_BACnetPriorityValueBuilder) AsBACnetPriorityValueObjectidentifier() BACnetPriorityValueObjectidentifierBuilder { if cb, ok := b.childBuilder.(BACnetPriorityValueObjectidentifierBuilder); ok { return cb } cb := NewBACnetPriorityValueObjectidentifierBuilder().(*_BACnetPriorityValueObjectidentifierBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_BACnetPriorityValueBuilder) AsBACnetPriorityValueConstructedValue() BACnetPriorityValueConstructedValueBuilder { if cb, ok := b.childBuilder.(BACnetPriorityValueConstructedValueBuilder); ok { return cb } cb := NewBACnetPriorityValueConstructedValueBuilder().(*_BACnetPriorityValueConstructedValueBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_BACnetPriorityValueBuilder) AsBACnetPriorityValueDateTime() BACnetPriorityValueDateTimeBuilder { if cb, ok := b.childBuilder.(BACnetPriorityValueDateTimeBuilder); ok { return cb } cb := NewBACnetPriorityValueDateTimeBuilder().(*_BACnetPriorityValueDateTimeBuilder) cb.parentBuilder = b b.childBuilder = cb return cb } func (b *_BACnetPriorityValueBuilder) Build() (BACnetPriorityValue, error) { v, err := b.PartialBuild() if err != nil { return nil, errors.Wrap(err, "error occurred during partial build") } if b.childBuilder == nil { return nil, errors.New("no child builder present") } b.childBuilder.setParent(v) return b.childBuilder.buildForBACnetPriorityValue() } func (b *_BACnetPriorityValueBuilder) MustBuild() BACnetPriorityValue { build, err := b.Build() if err != nil { panic(err) } return build } func (b *_BACnetPriorityValueBuilder) DeepCopy() any { _copy := b.CreateBACnetPriorityValueBuilder().(*_BACnetPriorityValueBuilder) _copy.childBuilder = b.childBuilder.DeepCopy().(_BACnetPriorityValueChildBuilder) _copy.childBuilder.setParent(_copy) if b.err != nil { _copy.err = b.err.DeepCopy().(*utils.MultiError) } return _copy } // CreateBACnetPriorityValueBuilder creates a BACnetPriorityValueBuilder func (b *_BACnetPriorityValue) CreateBACnetPriorityValueBuilder() BACnetPriorityValueBuilder { if b == nil { return NewBACnetPriorityValueBuilder() } return &_BACnetPriorityValueBuilder{_BACnetPriorityValue: b.deepCopy()} } /////////////////////// /////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////// Accessors for property fields. /////////////////////// func (m *_BACnetPriorityValue) GetPeekedTagHeader() BACnetTagHeader { return m.PeekedTagHeader } /////////////////////// /////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////// Accessors for virtual fields. /////////////////////// func (pm *_BACnetPriorityValue) GetPeekedTagNumber() uint8 { m := pm._SubType ctx := context.Background() _ = ctx return uint8(m.GetPeekedTagHeader().GetActualTagNumber()) } func (pm *_BACnetPriorityValue) GetPeekedIsContextTag() bool { m := pm._SubType ctx := context.Background() _ = ctx return bool(bool((m.GetPeekedTagHeader().GetTagClass()) == (TagClass_CONTEXT_SPECIFIC_TAGS))) } /////////////////////// /////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// // Deprecated: use the interface for direct cast func CastBACnetPriorityValue(structType any) BACnetPriorityValue { if casted, ok := structType.(BACnetPriorityValue); ok { return casted } if casted, ok := structType.(*BACnetPriorityValue); ok { return *casted } return nil } func (m *_BACnetPriorityValue) GetTypeName() string { return "BACnetPriorityValue" } func (m *_BACnetPriorityValue) getLengthInBits(ctx context.Context) uint16 { lengthInBits := uint16(0) // A virtual field doesn't have any in- or output. // A virtual field doesn't have any in- or output. return lengthInBits } func (m *_BACnetPriorityValue) GetLengthInBits(ctx context.Context) uint16 { return m._SubType.GetLengthInBits(ctx) } func (m *_BACnetPriorityValue) GetLengthInBytes(ctx context.Context) uint16 { return m._SubType.GetLengthInBits(ctx) / 8 } func BACnetPriorityValueParse[T BACnetPriorityValue](ctx context.Context, theBytes []byte, objectTypeArgument BACnetObjectType) (T, error) { return BACnetPriorityValueParseWithBuffer[T](ctx, utils.NewReadBufferByteBased(theBytes), objectTypeArgument) } func BACnetPriorityValueParseWithBufferProducer[T BACnetPriorityValue](objectTypeArgument BACnetObjectType) func(ctx context.Context, readBuffer utils.ReadBuffer) (T, error) { return func(ctx context.Context, readBuffer utils.ReadBuffer) (T, error) { v, err := BACnetPriorityValueParseWithBuffer[T](ctx, readBuffer, objectTypeArgument) if err != nil { var zero T return zero, err } return v, nil } } func BACnetPriorityValueParseWithBuffer[T BACnetPriorityValue](ctx context.Context, readBuffer utils.ReadBuffer, objectTypeArgument BACnetObjectType) (T, error) { v, err := (&_BACnetPriorityValue{ObjectTypeArgument: objectTypeArgument}).parse(ctx, readBuffer, objectTypeArgument) if err != nil { var zero T return zero, err } vc, ok := v.(T) if !ok { var zero T return zero, errors.Errorf("Unexpected type %T. Expected type %T", v, *new(T)) } return vc, nil } func (m *_BACnetPriorityValue) parse(ctx context.Context, readBuffer utils.ReadBuffer, objectTypeArgument BACnetObjectType) (__bACnetPriorityValue BACnetPriorityValue, err error) { positionAware := readBuffer _ = positionAware if pullErr := readBuffer.PullContext("BACnetPriorityValue"); pullErr != nil { return nil, errors.Wrap(pullErr, "Error pulling for BACnetPriorityValue") } currentPos := positionAware.GetPos() _ = currentPos peekedTagHeader, err := ReadPeekField[BACnetTagHeader](ctx, "peekedTagHeader", ReadComplex[BACnetTagHeader](BACnetTagHeaderParseWithBuffer, readBuffer), 0) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'peekedTagHeader' field")) } m.PeekedTagHeader = peekedTagHeader peekedTagNumber, err := ReadVirtualField[uint8](ctx, "peekedTagNumber", (*uint8)(nil), peekedTagHeader.GetActualTagNumber()) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'peekedTagNumber' field")) } _ = peekedTagNumber peekedIsContextTag, err := ReadVirtualField[bool](ctx, "peekedIsContextTag", (*bool)(nil), bool((peekedTagHeader.GetTagClass()) == (TagClass_CONTEXT_SPECIFIC_TAGS))) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("Error parsing 'peekedIsContextTag' field")) } _ = peekedIsContextTag // Validation if !(bool((!(peekedIsContextTag))) || bool((bool(bool(peekedIsContextTag) && bool(bool((peekedTagHeader.GetLengthValueType()) != (0x6)))) && bool(bool((peekedTagHeader.GetLengthValueType()) != (0x7)))))) { return nil, errors.WithStack(utils.ParseValidationError{Message: "unexpected opening or closing tag"}) } // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type) var _child BACnetPriorityValue switch { case peekedTagNumber == 0x0 && peekedIsContextTag == bool(false): // BACnetPriorityValueNull if _child, err = new(_BACnetPriorityValueNull).parse(ctx, readBuffer, m, objectTypeArgument); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueNull for type-switch of BACnetPriorityValue") } case peekedTagNumber == 0x4 && peekedIsContextTag == bool(false): // BACnetPriorityValueReal if _child, err = new(_BACnetPriorityValueReal).parse(ctx, readBuffer, m, objectTypeArgument); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueReal for type-switch of BACnetPriorityValue") } case peekedTagNumber == 0x9 && peekedIsContextTag == bool(false): // BACnetPriorityValueEnumerated if _child, err = new(_BACnetPriorityValueEnumerated).parse(ctx, readBuffer, m, objectTypeArgument); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueEnumerated for type-switch of BACnetPriorityValue") } case peekedTagNumber == 0x2 && peekedIsContextTag == bool(false): // BACnetPriorityValueUnsigned if _child, err = new(_BACnetPriorityValueUnsigned).parse(ctx, readBuffer, m, objectTypeArgument); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueUnsigned for type-switch of BACnetPriorityValue") } case peekedTagNumber == 0x1 && peekedIsContextTag == bool(false): // BACnetPriorityValueBoolean if _child, err = new(_BACnetPriorityValueBoolean).parse(ctx, readBuffer, m, objectTypeArgument); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueBoolean for type-switch of BACnetPriorityValue") } case peekedTagNumber == 0x3 && peekedIsContextTag == bool(false): // BACnetPriorityValueInteger if _child, err = new(_BACnetPriorityValueInteger).parse(ctx, readBuffer, m, objectTypeArgument); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueInteger for type-switch of BACnetPriorityValue") } case peekedTagNumber == 0x5 && peekedIsContextTag == bool(false): // BACnetPriorityValueDouble if _child, err = new(_BACnetPriorityValueDouble).parse(ctx, readBuffer, m, objectTypeArgument); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueDouble for type-switch of BACnetPriorityValue") } case peekedTagNumber == 0xB && peekedIsContextTag == bool(false): // BACnetPriorityValueTime if _child, err = new(_BACnetPriorityValueTime).parse(ctx, readBuffer, m, objectTypeArgument); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueTime for type-switch of BACnetPriorityValue") } case peekedTagNumber == 0x7 && peekedIsContextTag == bool(false): // BACnetPriorityValueCharacterString if _child, err = new(_BACnetPriorityValueCharacterString).parse(ctx, readBuffer, m, objectTypeArgument); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueCharacterString for type-switch of BACnetPriorityValue") } case peekedTagNumber == 0x6 && peekedIsContextTag == bool(false): // BACnetPriorityValueOctetString if _child, err = new(_BACnetPriorityValueOctetString).parse(ctx, readBuffer, m, objectTypeArgument); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueOctetString for type-switch of BACnetPriorityValue") } case peekedTagNumber == 0x8 && peekedIsContextTag == bool(false): // BACnetPriorityValueBitString if _child, err = new(_BACnetPriorityValueBitString).parse(ctx, readBuffer, m, objectTypeArgument); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueBitString for type-switch of BACnetPriorityValue") } case peekedTagNumber == 0xA && peekedIsContextTag == bool(false): // BACnetPriorityValueDate if _child, err = new(_BACnetPriorityValueDate).parse(ctx, readBuffer, m, objectTypeArgument); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueDate for type-switch of BACnetPriorityValue") } case peekedTagNumber == 0xC && peekedIsContextTag == bool(false): // BACnetPriorityValueObjectidentifier if _child, err = new(_BACnetPriorityValueObjectidentifier).parse(ctx, readBuffer, m, objectTypeArgument); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueObjectidentifier for type-switch of BACnetPriorityValue") } case peekedTagNumber == uint8(0) && peekedIsContextTag == bool(true): // BACnetPriorityValueConstructedValue if _child, err = new(_BACnetPriorityValueConstructedValue).parse(ctx, readBuffer, m, objectTypeArgument); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueConstructedValue for type-switch of BACnetPriorityValue") } case peekedTagNumber == uint8(1) && peekedIsContextTag == bool(true): // BACnetPriorityValueDateTime if _child, err = new(_BACnetPriorityValueDateTime).parse(ctx, readBuffer, m, objectTypeArgument); err != nil { return nil, errors.Wrap(err, "Error parsing sub-type BACnetPriorityValueDateTime for type-switch of BACnetPriorityValue") } default: return nil, errors.Errorf("Unmapped type for parameters [peekedTagNumber=%v, peekedIsContextTag=%v]", peekedTagNumber, peekedIsContextTag) } if closeErr := readBuffer.CloseContext("BACnetPriorityValue"); closeErr != nil { return nil, errors.Wrap(closeErr, "Error closing for BACnetPriorityValue") } return _child, nil } func (pm *_BACnetPriorityValue) serializeParent(ctx context.Context, writeBuffer utils.WriteBuffer, child BACnetPriorityValue, serializeChildFunction func() error) error { // We redirect all calls through client as some methods are only implemented there m := child _ = m positionAware := writeBuffer _ = positionAware log := zerolog.Ctx(ctx) _ = log if pushErr := writeBuffer.PushContext("BACnetPriorityValue"); pushErr != nil { return errors.Wrap(pushErr, "Error pushing for BACnetPriorityValue") } // Virtual field peekedTagNumber := m.GetPeekedTagNumber() _ = peekedTagNumber if _peekedTagNumberErr := writeBuffer.WriteVirtual(ctx, "peekedTagNumber", m.GetPeekedTagNumber()); _peekedTagNumberErr != nil { return errors.Wrap(_peekedTagNumberErr, "Error serializing 'peekedTagNumber' field") } // Virtual field peekedIsContextTag := m.GetPeekedIsContextTag() _ = peekedIsContextTag if _peekedIsContextTagErr := writeBuffer.WriteVirtual(ctx, "peekedIsContextTag", m.GetPeekedIsContextTag()); _peekedIsContextTagErr != nil { return errors.Wrap(_peekedIsContextTagErr, "Error serializing 'peekedIsContextTag' field") } // Switch field (Depending on the discriminator values, passes the serialization to a sub-type) if _typeSwitchErr := serializeChildFunction(); _typeSwitchErr != nil { return errors.Wrap(_typeSwitchErr, "Error serializing sub-type field") } if popErr := writeBuffer.PopContext("BACnetPriorityValue"); popErr != nil { return errors.Wrap(popErr, "Error popping for BACnetPriorityValue") } return nil } //// // Arguments Getter func (m *_BACnetPriorityValue) GetObjectTypeArgument() BACnetObjectType { return m.ObjectTypeArgument } // //// func (m *_BACnetPriorityValue) IsBACnetPriorityValue() {} func (m *_BACnetPriorityValue) DeepCopy() any { return m.deepCopy() } func (m *_BACnetPriorityValue) deepCopy() *_BACnetPriorityValue { if m == nil { return nil } _BACnetPriorityValueCopy := &_BACnetPriorityValue{ nil, // will be set by child utils.DeepCopy[BACnetTagHeader](m.PeekedTagHeader), m.ObjectTypeArgument, } return _BACnetPriorityValueCopy }