\documentclass{sig-alternate-05-2015}
\usepackage[utf8]{inputenc}
\usepackage{color}

\def\inputfig#1{\input #1}
\def\inputtex#1{\input #1}
\def\inputal#1{\input #1}
\def\inputcode#1{\input #1}

\inputtex{logos.tex}
\inputtex{refmacros.tex}
\inputtex{other-macros.tex}

\begin{document}
\setcopyright{rightsretained}
\title{A CLOS Protocol for Editor Buffers}
\numberofauthors{1}
\author{\alignauthor
Robert Strandh\\
\affaddr{University of Bordeaux}\\
\affaddr{351, Cours de la Libération}\\
\affaddr{Talence, France}\\
\email{robert.strandh@u-bordeaux.fr}}

\maketitle

\begin{abstract}
Many applications and libraries contain a data structure for storing
and editing text.  Frequently, this data structure is chosen in a
somewhat arbitrary way, without taking into account typical use cases
and their consequence to performance.  In this paper, we present a
data structure in the form of a \clos{} protocol that addresses these
issues.  In particular, the protocol is divided into an \emph{edit}
protocol and an \emph{update} protocol, designed to be executed at
different frequencies.  The update protocol is based on the concept of
\emph{time stamps} allowing multiple \emph{views} without any need for
\emph{observers} or similar techniques for informing the views of
changes to the model (i.e., the text buffer).

In addition to the protocol definition, we also present two different
implementations of the definition.  The main implementation uses a
splay tree of lines, where each line is represented either as an
ordinary vector or as a gap buffer, depending on whether the line is
being edited or not.  The other implementation is very simple and
supplied only for the purpose of testing the main implementation.
\end{abstract}

\begin{CCSXML}
  <ccs2012>
  <concept>
  <concept_id>10010405.10010497.10010500.10010501</concept_id>
  <concept_desc>Applied computing~Text editing</concept_desc>
  <concept_significance>500</concept_significance>
  </concept>
  </ccs2012>
\end{CCSXML}

\ccsdesc[500]{Applied computing~Text editing}

\printccsdesc

\keywords{\clos{}, \commonlisp{}, Text editor}

\inputtex{spec-macros.tex}

\inputtex{sec-introduction.tex}
\inputtex{sec-previous.tex}
\inputtex{sec-our-method.tex}
\inputtex{sec-benefits.tex}
\inputtex{sec-conclusions.tex}
\inputtex{sec-acknowledgments.tex}
\inputtex{app-protocol.tex}

\bibliographystyle{abbrv}
\bibliography{cluffer}
\end{document}

%%  LocalWords:  sandboxing runtime
