<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//TaxonX//DTD Taxonomic Treatment Publishing DTD v0 20100105//EN" "../../nlm/tax-treatment-NS0.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:tp="http://www.plazi.org/taxpub" article-type="research-article" dtd-version="3.0" xml:lang="en">
  <front>
    <journal-meta>
      <journal-id journal-id-type="publisher-id">109</journal-id>
      <journal-id journal-id-type="index">urn:lsid:arphahub.com:pub:3dc5f44e-8666-58db-bc76-a455210e8891</journal-id>
      <journal-title-group>
        <journal-title xml:lang="en">JUCS - Journal of Universal Computer Science</journal-title>
        <abbrev-journal-title xml:lang="en">jucs</abbrev-journal-title>
      </journal-title-group>
      <issn pub-type="ppub">0948-695X</issn>
      <issn pub-type="epub">0948-6968</issn>
      <publisher>
        <publisher-name>Journal of Universal Computer Science</publisher-name>
      </publisher>
    </journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.3217/jucs-014-20-3358</article-id>
      <article-id pub-id-type="publisher-id">29246</article-id>
      <article-categories>
        <subj-group subj-group-type="heading">
          <subject>Research Article</subject>
        </subj-group>
        <subj-group subj-group-type="scientific_subject">
          <subject>D.1.5 - Object-oriented Programming</subject>
          <subject>D.2.2 - Design Tools and Techniques</subject>
          <subject>D.3.3 - Language Constructs and Features</subject>
        </subj-group>
      </article-categories>
      <title-group>
        <article-title>An Implementation of CLIM Presentation Types</article-title>
      </title-group>
      <contrib-group content-type="authors">
        <contrib contrib-type="author" corresp="yes">
          <name name-style="western">
            <surname>Moore</surname>
            <given-names>Timothy</given-names>
          </name>
          <email xlink:type="simple">timoore@redhat.com</email>
          <xref ref-type="aff" rid="A1">1</xref>
        </contrib>
      </contrib-group>
      <aff id="A1">
        <label>1</label>
        <addr-line content-type="verbatim">Red Hat SARL, Paris, France</addr-line>
        <institution>Red Hat SARL</institution>
        <addr-line content-type="city">Paris</addr-line>
        <country>France</country>
      </aff>
      <author-notes>
        <fn fn-type="corresp">
          <p>Corresponding author: Timothy Moore (<email xlink:type="simple">timoore@redhat.com</email>).</p>
        </fn>
        <fn fn-type="edited-by">
          <p>Academic editor: </p>
        </fn>
      </author-notes>
      <pub-date pub-type="collection">
        <year>2008</year>
      </pub-date>
      <pub-date pub-type="epub">
        <day>28</day>
        <month>11</month>
        <year>2008</year>
      </pub-date>
      <volume>14</volume>
      <issue>20</issue>
      <fpage>3358</fpage>
      <lpage>3369</lpage>
      <uri content-type="arpha" xlink:href="http://openbiodiv.net/2906935B-4813-527C-8AFF-7BFB1615C1A7">2906935B-4813-527C-8AFF-7BFB1615C1A7</uri>
      <uri content-type="zenodo_dep_id" xlink:href="https://zenodo.org/record/7000557">7000557</uri>
      <permissions>
        <copyright-statement>Timothy Moore</copyright-statement>
        <license license-type="creative-commons-attribution" xlink:href="" xlink:type="simple">
          <license-p>This article is freely available under the J.UCS Open Content License.</license-p>
        </license>
      </permissions>
      <abstract>
        <label>Abstract</label>
        <p>Presentation types are used in the CLIM interface library to tag graphical output with a type and establish an input type context in which the user may use the keyboard to type input, accepted by a parser associated with that presentation type, or click on the graphical representation of an object that has an appropriate presentation type. Presentation types are defined using a syntax reminiscent of the deftype syntax of Common Lisp; the input and output actions of the types, as well as aspects of their inheritance, are implemented using a system of generic functions and methods directly based on CLOS. The presentation type system is different enough from the Common Lisp type system that its types, generic functions and methods do not map directly to those of Common Lisp. We describe the presentation type implemention in McCLIM which uses the CLOS Metaobject Protocol to implement presentation type inheritance, method dispatch and method combination without implementing an entire parallel object system next to CLOS. Our implementation supports all types of method combination in the presentation methods, including user-defined method combination.</p>
      </abstract>
    </article-meta>
  </front>
</article>
