[libchamplain] Bindings for ChamplainPoint
- From: Pierre-Luc Beaudoin <plbeaudoin src gnome org>
- To: svn-commits-list gnome org
- Subject: [libchamplain] Bindings for ChamplainPoint
- Date: Sun, 14 Jun 2009 13:21:08 -0400 (EDT)
commit b5b44316868e3738c43fcda3d1e87715dcd3d3cb
Author: Emmanuel Rodriguez <emmanuel rodriguez gmail com>
Date: Sun Jun 14 16:46:02 2009 +0200
Bindings for ChamplainPoint
bindings/perl/Champlain/MANIFEST | 2 +
bindings/perl/Champlain/maps | 1 +
bindings/perl/Champlain/t/ChamplainPoint.t | 42 +++++++++++++++++++++++
bindings/perl/Champlain/xs/ChamplainPoint.xs | 47 ++++++++++++++++++++++++++
4 files changed, 92 insertions(+), 0 deletions(-)
---
diff --git a/bindings/perl/Champlain/MANIFEST b/bindings/perl/Champlain/MANIFEST
index 024f42e..6f81967 100644
--- a/bindings/perl/Champlain/MANIFEST
+++ b/bindings/perl/Champlain/MANIFEST
@@ -16,6 +16,7 @@ xs/ChamplainMapSourceDesc.xs
xs/ChamplainMapSourceFactory.xs
xs/ChamplainMarker.xs
xs/ChamplainNetworkMapSource.xs
+xs/ChamplainPoint.xs
xs/ChamplainTile.xs
xs/ChamplainView.xs
xs/ChamplainZoomLevel.xs
@@ -28,6 +29,7 @@ t/ChamplainMapSourceDesc.t
t/ChamplainMapSourceFactory.t
t/ChamplainMarker.t
t/ChamplainNetworkMapSource.t
+t/ChamplainPoint.t
t/ChamplainTile.t
t/ChamplainView.t
t/ChamplainZoomLevel.t
diff --git a/bindings/perl/Champlain/maps b/bindings/perl/Champlain/maps
index aaf00cc..12be7ba 100644
--- a/bindings/perl/Champlain/maps
+++ b/bindings/perl/Champlain/maps
@@ -12,3 +12,4 @@ CHAMPLAIN_TYPE_STATE ChamplainState GEnum Champlain
CHAMPLAIN_TYPE_MAP_SOURCE_FACTORY ChamplainMapSourceFactory GObject Champlain::MapSourceFactory
CHAMPLAIN_TYPE_CACHE ChamplainCache GObject Champlain::Cache
CHAMPLAIN_TYPE_MAP_SOURCE_DESC ChamplainMapSourceDesc GBoxed Champlain::MapSourceDesc
+CHAMPLAIN_TYPE_POINT ChamplainPoint GBoxed Champlain::Point
diff --git a/bindings/perl/Champlain/t/ChamplainPoint.t b/bindings/perl/Champlain/t/ChamplainPoint.t
new file mode 100644
index 0000000..e791efb
--- /dev/null
+++ b/bindings/perl/Champlain/t/ChamplainPoint.t
@@ -0,0 +1,42 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Clutter::TestHelper tests => 10;
+use Test::Exception;
+
+use Champlain ':maps';
+
+exit tests();
+
+sub tests {
+ test_generic();
+ return 0;
+}
+
+
+sub test_generic {
+ my $point = Champlain::Point->new(10.2, 34.5);
+ isa_ok($point, 'Champlain::Point');
+
+ is($point->lat, 10.2, "point->lat()");
+ is($point->lon, 34.5, "point->lon()");
+
+
+ # Copy the point
+ my $copy = $point->copy;
+ isa_ok($copy, 'Champlain::Point');
+ is($copy->lat, $point->lat, "lat of copy is identical to the original");
+ is($copy->lon, $point->lon, "lon of copy is identical to the original");
+
+
+ # Modify the copy
+ $copy->lat(-45.03);
+ is($copy->lat, -45.03, "point->lat(x)");
+ is($point->lat, 10.2, "point->lat()");
+
+ $copy->lon(74.364);
+ is($copy->lon, 74.364, "point->lon(y)");
+ is($point->lon, 34.5, "point->lon()");
+}
diff --git a/bindings/perl/Champlain/xs/ChamplainPoint.xs b/bindings/perl/Champlain/xs/ChamplainPoint.xs
new file mode 100644
index 0000000..12c04b5
--- /dev/null
+++ b/bindings/perl/Champlain/xs/ChamplainPoint.xs
@@ -0,0 +1,47 @@
+#include "champlain-perl.h"
+
+
+MODULE = Champlain::Point PACKAGE = Champlain::Point PREFIX = champlain_point_
+
+
+ChamplainPoint*
+champlain_point_new (class, gdouble lat, gdouble lon)
+ C_ARGS: lat, lon
+
+
+ChamplainPoint*
+champlain_point_copy (const ChamplainPoint* point)
+
+
+void
+champlain_point_free (ChamplainPoint* point)
+
+
+#
+# Provide nice accessors to the data members of the struct.
+#
+gdouble
+lat (ChamplainPoint *point, gdouble newval = 0)
+ ALIAS:
+ lon = 1
+
+ CODE:
+ switch (ix) {
+ case 0:
+ RETVAL = point->lat;
+ if (items > 1) point->lat = newval;
+ break;
+
+ case 1:
+ RETVAL = point->lon;
+ if (items > 1) point->lon = newval;
+ break;
+
+ default:
+ RETVAL = 0.0;
+ g_assert_not_reached();
+ break;
+ }
+
+ OUTPUT:
+ RETVAL
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]