Interface IDestructable

All Known Implementing Classes:
NdBinding, NdComplexTypeSignature, NdConstant, NdConstantAnnotation, NdConstantArray, NdConstantBoolean, NdConstantByte, NdConstantChar, NdConstantClass, NdConstantDouble, NdConstantEnum, NdConstantFloat, NdConstantInt, NdConstantLong, NdConstantShort, NdConstantString, NdMethod, NdMethodAnnotationData, NdNode, NdResourceFile, NdType, NdTypeAnnotation, NdTypeArgument, NdTypeId, NdTypeInterface, NdTypeSignature, NdVariable, NdWorkspaceLocation

public interface IDestructable
This mix-in interface is implemented by database objects that require a custom destruction step.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Intended to be implemented by objects which require a custom destruction step.
  • Method Details

    • destruct

      void destruct()
      Intended to be implemented by objects which require a custom destruction step. This should normally not be invoked by clients, since custom destruction is just one step in tearing down an object. The normal way to tear down an object is NdNode.delete()

      If you are writing code that must run as part of delete (or are implementing part of the destruct method on a custom ITypeFactory)the correct steps to destructing an object are:

      • Invoke this destruct method (which serves the same purpose as the user-implemented portion of a C++ destructor)
      • Invoke ITypeFactory.destructFields to destruct its fields (which serves the same purpose as the compiler-implemented portion of a C++ destructor)
      • Invoke Database.free on its address to free up memory allocated for the object itself. (Which serves the same purpose as the memory deallocation step in the C++ delete operator)

      Normally, first two steps are performed together as part of ITypeFactory.destruct