INVOKE.Shape_area(swigCPtr);
    return ret;
  }

  /// &lt;returns&gt;the perimeter&lt;/returns&gt;
  public virtual double perimeter() {
    double ret = ShapesCsPINVOKE.Shape_perimeter(swigCPtr);
    return ret;
  }

  public static int nshapes {
    set {
      ShapesCsPINVOKE.Shape_nshapes_set(value);
    }
    get {
      int ret = ShapesCsPINVOKE.Shape_nshapes_get();
      return ret;
    }
  }
}

</pre></div>

<p>
Otherwise, the code should be identical to what would have been
generated without the 