summaryrefslogtreecommitdiff
path: root/doc/public/html/language-bindings.html
diff options
context:
space:
mode:
Diffstat (limited to 'doc/public/html/language-bindings.html')
-rw-r--r--doc/public/html/language-bindings.html73
1 files changed, 73 insertions, 0 deletions
diff --git a/doc/public/html/language-bindings.html b/doc/public/html/language-bindings.html
new file mode 100644
index 000000000..f3623e822
--- /dev/null
+++ b/doc/public/html/language-bindings.html
@@ -0,0 +1,73 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Cairo: A Vector Graphics Library: Appendix A. Creating a language binding for cairo</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<link rel="home" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="up" href="index.html" title="Cairo: A Vector Graphics Library">
+<link rel="prev" href="index-1.12.html" title="Index of new symbols in 1.12">
+<link rel="next" href="bindings-memory.html" title="Memory management">
+<meta name="generator" content="GTK-Doc V1.20 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
+<td><a accesskey="p" href="index-1.12.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="bindings-memory.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="appendix">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="language-bindings"></a>Appendix A. Creating a language binding for cairo</h1></div></div></div>
+<p>
+ While cairo is implemented and C, and has a C API, it is expected
+ that many users of cairo will be using it from languages other
+ than C. The glue that connects the core cairo library to another
+ language is known as a <em class="firstterm">language
+ binding</em>. This appendix attempts to collect together
+ issues that come up when creating a language bindings for cairo
+ and present standardized solutions to promote consistency among
+ the different language bindings.
+ </p>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="bindings-general"></a>General considerations</h2></div></div></div>
+<p>
+ The naming of the central <a class="link" href="cairo-cairo-t.html#cairo-t" title="cairo_t"><span class="type">cairo_t</span></a> type is a
+ special exception. The object is “a cairo context” not “a
+ cairo”, and names such as <span class="type">cairo_t</span> rather than
+ <span class="type">cairo_context_t</span> and
+ <code class="function">cairo_set_source()</code> rather than
+ <code class="function">cairo_context_set_source()</code> are simply
+ abbreviations to make the C API more palatable. In languages
+ which have object-oriented syntax, this abbreviation is much
+ less useful. In fact, if ‘Cairo’ is used as a namespace, then
+ in many languages, you'd end up with a ridiculous type name
+ like ‘Cairo.Cairo’. For this reason, and for inter-language
+ consistency all object-oriented languages should name this
+ type as if it were <span class="type">cairo_context_t</span>.
+ </p>
+<p>
+ The punctuation and casing of the type names and
+ method names of cairo should be changed to match the general
+ convention of the language. In Java, where type names are written
+ in StudlyCaps and method names in javaCaps, cairo_font_extents_t
+ will become FontExtents and
+ <code class="literal">cairo_set_source(cr,source)</code>,
+ <code class="literal">cr.setSource(source)</code>.
+ As compared to changing the punctuation, and casing, much
+ more reluctance should be used in changing the method names
+ themselves. Even if get is usually omitted from getters in
+ your language, you shouldn't bind cairo_get_source() as
+ cr.source().
+ </p>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.20</div>
+</body>
+</html> \ No newline at end of file