carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/reference/api/com/nokia/carbide/cpp/epoc/engine/model/IView.html
changeset 1704 24ac5a5cf80c
parent 0 fb279309251b
--- a/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/reference/api/com/nokia/carbide/cpp/epoc/engine/model/IView.html	Tue Jul 27 15:20:28 2010 -0500
+++ b/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/reference/api/com/nokia/carbide/cpp/epoc/engine/model/IView.html	Tue Jul 27 15:28:19 2010 -0500
@@ -1,670 +1,670 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!--NewPage-->
-<HTML>
-<HEAD>
-<!-- Generated by javadoc (build 1.5.0_15) on Tue Jan 06 17:31:53 CST 2009 -->
-<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<TITLE>
-IView (Carbide.c++ SDK API Reference)
-</TITLE>
-
-<META NAME="keywords" CONTENT="com.nokia.carbide.cpp.epoc.engine.model.IView interface">
-
-<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../../stylesheet.css" TITLE="Style">
-
-<SCRIPT type="text/javascript">
-function windowTitle()
-{
-    parent.document.title="IView (Carbide.c++ SDK API Reference)";
-}
-</SCRIPT>
-<NOSCRIPT>
-</NOSCRIPT>
-
-</HEAD>
-
-<BODY BGCOLOR="white" onload="windowTitle();">
-
-
-<!-- ========= START OF TOP NAVBAR ======= -->
-<A NAME="navbar_top"><!-- --></A>
-<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
-<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
-<TR>
-<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
-<A NAME="navbar_top_firstrow"><!-- --></A>
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
-  <TR ALIGN="center" VALIGN="top">
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/IView.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../../index-files/index-1.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
-  </TR>
-</TABLE>
-</TD>
-<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Carbide.c++</b></EM>
-</TD>
-</TR>
-
-<TR>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IOwnedModel.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model"><B>PREV CLASS</B></A>&nbsp;
-&nbsp;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IViewConfiguration.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model"><B>NEXT CLASS</B></A></FONT></TD>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-  <A HREF="../../../../../../../index.html?com/nokia/carbide/cpp/epoc/engine/model/IView.html" target="_top"><B>FRAMES</B></A>  &nbsp;
-&nbsp;<A HREF="IView.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
-&nbsp;<SCRIPT type="text/javascript">
-  <!--
-  if(window==top) {
-    document.writeln('<A HREF="../../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
-  }
-  //-->
-</SCRIPT>
-<NOSCRIPT>
-  <A HREF="../../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
-</NOSCRIPT>
-
-
-</FONT></TD>
-</TR>
-<TR>
-<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
-  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
-<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
-DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
-</TR>
-</TABLE>
-<A NAME="skip-navbar_top"></A>
-<!-- ========= END OF TOP NAVBAR ========= -->
-
-<HR>
-<!-- ======== START OF CLASS DATA ======== -->
-<H2>
-<FONT SIZE="-1">
-com.nokia.carbide.cpp.epoc.engine.model</FONT>
-<BR>
-Interface IView&lt;Model&gt;</H2>
-<DL>
-<DT><B>All Known Subinterfaces:</B> <DD><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/bldinf/IBldInfView.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model.bldinf">IBldInfView</A>, <A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/makefile/image/IImageMakefileView.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model.makefile.image">IImageMakefileView</A>, <A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/makefile/IMakefileView.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model.makefile">IMakefileView</A>, <A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/mmp/IMMPView.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model.mmp">IMMPView</A></DD>
-</DL>
-<HR>
-<DL>
-<DT><PRE>public interface <B>IView&lt;Model&gt;</B></DL>
-</PRE>
-
-<P>
-The base interface for a filtered view onto a model.
- <p>
- It allows for transactions of changes to be applied back to the model's DOM.
- <p>
- Multiple views may hold changes at the same time (for instance, a dirty
- editor and a project change listener updating SOURCE statements).
- <p>
- The updating model follows the CVS model for handling simultaneous changes:
- <p>
- <li>Client makes changes to View A
- <li>Client makes changes to View B
- <li>Client commits View A. The #commit() call will synchronize on the IOwnedModel
- instance and apply changes, updating the DOM and document. Other existing
- views are out-of-sync (since they reference a stale filtered DOM and may hold
- changes that no longer apply). Also, due to the model’s document being
- changed, any other existing views may have unsynchronized cached source
- ranges into the document. The latter issue is not fatal – any DOM can be
- rewritten from scratch to recover the “essential” source, but obviously, we
- want to avoid this where possible.
- <li>The model notifies listeners (IModelListener#modelUpdated) that changes
- have occurred. The views themselves are always listeners and are always
- notified before client listeners.
- <li>View A ignores notification its own changes
- <li>View B, since it has changes, marks itself “out of sync”
- (#isUnsynchronized()). This disallows any commits.
- <li>Client for View A ignores listener for changes on its own view, if
- needed.
- <li>Client for View B periodically checks its synchronization state, or
- waits until it wants to commit. If out-of-sync on a commit,
- IllegalStateException is thrown. Finding it’s out of sync, the client decides
- whether to #revert() or #merge(). Usually it will #merge() to get an updated
- view combined with its current uncommitted changes. If its changes don’t
- merge cleanly, #merge() returns false. The listener may decide to show UI at
- this point. Only #revert(), a successful #merge(), or a #forceSynchronized()
- will clear the unsynchronized state and allow further writes.
- <li>Now both views are sync with the model.
-<P>
-
-<P>
-<HR>
-
-<P>
-
-<!-- ========== METHOD SUMMARY =========== -->
-
-<A NAME="method_summary"><!-- --></A>
-<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
-<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
-<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
-<B>Method Summary</B></FONT></TH>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#addListener(com.nokia.carbide.cpp.epoc.engine.model.IViewListener)">addListener</A></B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IViewListener.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IViewListener</A>&nbsp;listener)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add listener, ignore duplicates</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#commit()">commit</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commits changes to the underlying translation unit (visible from IOwnedModel#getTranslationUnit() and IView#getFilteredTranslationUnit())
- 
- When a view is committed, changes may or may not be made to the owning model's document.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;IPath</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#convertModelToProjectPath(IPath)">convertModelToProjectPath</A></B>(IPath&nbsp;prjPath)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Convert a model-relative path to an project-relative path.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;IPath</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#convertProjectToModelPath(IPath)">convertProjectToModelPath</A></B>(IPath&nbsp;prjPath)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Convert a project-relative path to an model-relative path.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#dispose()">dispose</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dispose view, removing its listeners and detaching it from model 
- and losing any changes.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#forceSynchronized()">forceSynchronized</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Forces view to be marked synchronized, a last resort if #merge() 
- returns false and you don’t want to #revert().</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IData.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IData</A>&lt;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IView</A>&lt;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html" title="type parameter in IView">Model</A>&gt;&gt;</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#getData()">getData</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a copy of cacheable data for the view.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;IMessage[]</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#getMessages()">getMessages</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get all messages associated with parsing the filtered TU.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html" title="type parameter in IView">Model</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#getModel()">getModel</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the model we're viewing</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;IPath</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#getProjectPath()">getProjectPath</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the project root from the view configuration.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;IPath[]</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#getReferencedFiles()">getReferencedFiles</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the array of filesystem paths for files read 
- while creating the filtered translation units</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IViewConfiguration.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IViewConfiguration</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#getViewConfiguration()">getViewConfiguration</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the configuration used to create the view</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#markUnsynchronized()">markUnsynchronized</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mark a view out-of-sync due to changes in the model.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#merge()">merge</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Merges uncommitted changes with the current model.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;boolean</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#needsSynchonize()">needsSynchonize</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tell whether the view needs to be synchronized (merged) with the model.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#removeListener(com.nokia.carbide.cpp.epoc.engine.model.IViewListener)">removeListener</A></B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IViewListener.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IViewListener</A>&nbsp;listener)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Remove listener, ignore if not present</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#revert()">revert</A></B>()</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reverts changes to mirror model contents and marks the view synchronized.</TD>
-</TR>
-<TR BGCOLOR="white" CLASS="TableRowColor">
-<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
-<CODE>&nbsp;void</CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#setDebug(boolean)">setDebug</A></B>(boolean&nbsp;debug)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable debugging, if supported.</TD>
-</TR>
-</TABLE>
-&nbsp;
-<P>
-
-<!-- ============ METHOD DETAIL ========== -->
-
-<A NAME="method_detail"><!-- --></A>
-<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
-<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
-<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
-<B>Method Detail</B></FONT></TH>
-</TR>
-</TABLE>
-
-<A NAME="getModel()"><!-- --></A><H3>
-getModel</H3>
-<PRE>
-<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html" title="type parameter in IView">Model</A> <B>getModel</B>()</PRE>
-<DL>
-<DD>Get the model we're viewing
-<P>
-<DD><DL>
-</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="dispose()"><!-- --></A><H3>
-dispose</H3>
-<PRE>
-void <B>dispose</B>()</PRE>
-<DL>
-<DD>Dispose view, removing its listeners and detaching it from model 
- and losing any changes.  All views must be disposed before the model
- can be disposed.
-<P>
-<DD><DL>
-</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="getViewConfiguration()"><!-- --></A><H3>
-getViewConfiguration</H3>
-<PRE>
-<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IViewConfiguration.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IViewConfiguration</A> <B>getViewConfiguration</B>()</PRE>
-<DL>
-<DD>Get the configuration used to create the view
-<P>
-<DD><DL>
-
-<DT><B>Returns:</B><DD>configuration (never null)</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="getMessages()"><!-- --></A><H3>
-getMessages</H3>
-<PRE>
-IMessage[] <B>getMessages</B>()</PRE>
-<DL>
-<DD>Get all messages associated with parsing the filtered TU.  This
- includes those from the problem nodes and additional diagnostics.
-<P>
-<DD><DL>
-
-<DT><B>Returns:</B><DD>array (never null)</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="getReferencedFiles()"><!-- --></A><H3>
-getReferencedFiles</H3>
-<PRE>
-IPath[] <B>getReferencedFiles</B>()</PRE>
-<DL>
-<DD>Get the array of filesystem paths for files read 
- while creating the filtered translation units
-<P>
-<DD><DL>
-
-<DT><B>Returns:</B><DD>list of paths (never null)</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="revert()"><!-- --></A><H3>
-revert</H3>
-<PRE>
-void <B>revert</B>()</PRE>
-<DL>
-<DD>Reverts changes to mirror model contents and marks the view synchronized.
-<P>
-<DD><DL>
-</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="commit()"><!-- --></A><H3>
-commit</H3>
-<PRE>
-void <B>commit</B>()
-            throws java.lang.IllegalStateException</PRE>
-<DL>
-<DD>Commits changes to the underlying translation unit (visible from IOwnedModel#getTranslationUnit() and IView#getFilteredTranslationUnit())
- <p>
- When a view is committed, changes may or may not be made to the owning model's document.  A
- document change event will be sent if the contents change, and that event will cause the model
- to mark any open views (except this one) unsynchronized.
- <p>
- During a commit, the contents of the view may be recreated.  Any references to objects provided
- by the view should be considered stale.
- <p>
- A commit can throw IllegalStateException if it is unsynchronized.  The code for a commit should
- be structured like this:
-         <pre>
-                // commit changes
-                while (true) {
-                        try { 
-                                view.commit();
-                                break;
-                        } catch (IllegalStateException e) {  // happens when third party has committed in-between
-                                // usually UI around this...
-                                if (!view.merge()) {
-                                        // worst case (could try view.forceSynchronized() too)
-                                        view.revert();
-                                }
-                                // further failures should not occur, but loop just in case the
-                                // UI above took long enough for someone else to sneak in
-                        }
-                }
-         </pre>
-<P>
-<DD><DL>
-
-<DT><B>Throws:</B>
-<DD><CODE>java.lang.IllegalStateException</CODE> - if out of sync<DT><B>See Also:</B><DD><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#needsSynchonize()"><CODE>needsSynchonize()</CODE></A>, 
-<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#merge()"><CODE>merge()</CODE></A>, 
-<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#revert()"><CODE>revert()</CODE></A></DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="markUnsynchronized()"><!-- --></A><H3>
-markUnsynchronized</H3>
-<PRE>
-void <B>markUnsynchronized</B>()</PRE>
-<DL>
-<DD>Mark a view out-of-sync due to changes in the model.
-<P>
-<DD><DL>
-<DT><B>See Also:</B><DD><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#needsSynchonize()"><CODE>needsSynchonize()</CODE></A></DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="needsSynchonize()"><!-- --></A><H3>
-needsSynchonize</H3>
-<PRE>
-boolean <B>needsSynchonize</B>()</PRE>
-<DL>
-<DD>Tell whether the view needs to be synchronized (merged) with the model.
- <p>  
- A newly created view never needs synchronization, and a view 
- with changes does not necessarily need synchronization.
- <p>  
- Only when the model is changed underneath (e.g. other views commit, 
- the DOM is changed directly, or the document is changed) and 
- the view has uncommited changes and wants to commit is 
- synchronization needed.
-<P>
-<DD><DL>
-
-<DT><B>Returns:</B><DD>true: view needs to be reverted or forced synchronized</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="merge()"><!-- --></A><H3>
-merge</H3>
-<PRE>
-boolean <B>merge</B>()</PRE>
-<DL>
-<DD>Merges uncommitted changes with the current model.  <p>
- Returns true if pending changes merge cleanly, with view 
- left in synchronized state.  
- Returns false otherwise, leaving view in a unsynchronized state, 
- possibly with partial updates.
-<P>
-<DD><DL>
-
-<DT><B>Returns:</B><DD>merge succeeded<DT><B>See Also:</B><DD><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#needsSynchonize()"><CODE>needsSynchonize()</CODE></A></DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="forceSynchronized()"><!-- --></A><H3>
-forceSynchronized</H3>
-<PRE>
-void <B>forceSynchronized</B>()</PRE>
-<DL>
-<DD>Forces view to be marked synchronized, a last resort if #merge() 
- returns false and you don’t want to #revert().
-<P>
-<DD><DL>
-</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="addListener(com.nokia.carbide.cpp.epoc.engine.model.IViewListener)"><!-- --></A><H3>
-addListener</H3>
-<PRE>
-void <B>addListener</B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IViewListener.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IViewListener</A>&nbsp;listener)</PRE>
-<DL>
-<DD>Add listener, ignore duplicates
-<P>
-<DD><DL>
-</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="removeListener(com.nokia.carbide.cpp.epoc.engine.model.IViewListener)"><!-- --></A><H3>
-removeListener</H3>
-<PRE>
-void <B>removeListener</B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IViewListener.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IViewListener</A>&nbsp;listener)</PRE>
-<DL>
-<DD>Remove listener, ignore if not present
-<P>
-<DD><DL>
-</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="getProjectPath()"><!-- --></A><H3>
-getProjectPath</H3>
-<PRE>
-IPath <B>getProjectPath</B>()</PRE>
-<DL>
-<DD>Get the project root from the view configuration.
-<P>
-<DD><DL>
-
-<DT><B>Returns:</B><DD>IPath absolute path to project root</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="setDebug(boolean)"><!-- --></A><H3>
-setDebug</H3>
-<PRE>
-void <B>setDebug</B>(boolean&nbsp;debug)</PRE>
-<DL>
-<DD>Enable debugging, if supported.  Dumps information to System.out.
-<P>
-<DD><DL>
-<DT><B>Parameters:</B><DD><CODE>debug</CODE> - true to debug, false to stop</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="convertProjectToModelPath(IPath)"><!-- --></A><H3>
-convertProjectToModelPath</H3>
-<PRE>
-IPath <B>convertProjectToModelPath</B>(IPath&nbsp;prjPath)</PRE>
-<DL>
-<DD>Convert a project-relative path to an model-relative path.<p>
- Null or full paths returned as identity.
-<P>
-<DD><DL>
-<DT><B>Parameters:</B><DD><CODE>prjPath</CODE> - project-relative path (or null or full path)
-<DT><B>Returns:</B><DD>path adjusted to be model-relative (except for null or full path which are returned the same)</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="convertModelToProjectPath(IPath)"><!-- --></A><H3>
-convertModelToProjectPath</H3>
-<PRE>
-IPath <B>convertModelToProjectPath</B>(IPath&nbsp;prjPath)</PRE>
-<DL>
-<DD>Convert a model-relative path to an project-relative path.<p>
- Null or full paths returned as identity.
-<P>
-<DD><DL>
-<DT><B>Parameters:</B><DD><CODE>modelPath</CODE> - model-relative path (or null or full path)
-<DT><B>Returns:</B><DD>path adjusted to be project-relative (except for null or full path which are returned the same)</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="getData()"><!-- --></A><H3>
-getData</H3>
-<PRE>
-<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IData.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IData</A>&lt;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IView</A>&lt;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html" title="type parameter in IView">Model</A>&gt;&gt; <B>getData</B>()</PRE>
-<DL>
-<DD>Get a copy of cacheable data for the view.
-<P>
-<DD><DL>
-
-<DT><B>Returns:</B><DD>instance of IData containing current data in the view, or <code>null</code> if such data cannot be created</DL>
-</DD>
-</DL>
-<!-- ========= END OF CLASS DATA ========= -->
-<HR>
-
-
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<A NAME="navbar_bottom"><!-- --></A>
-<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
-<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
-<TR>
-<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
-<A NAME="navbar_bottom_firstrow"><!-- --></A>
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
-  <TR ALIGN="center" VALIGN="top">
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/IView.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../../index-files/index-1.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
-  </TR>
-</TABLE>
-</TD>
-<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-<b>Carbide.c++</b></EM>
-</TD>
-</TR>
-
-<TR>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IOwnedModel.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model"><B>PREV CLASS</B></A>&nbsp;
-&nbsp;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IViewConfiguration.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model"><B>NEXT CLASS</B></A></FONT></TD>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-  <A HREF="../../../../../../../index.html?com/nokia/carbide/cpp/epoc/engine/model/IView.html" target="_top"><B>FRAMES</B></A>  &nbsp;
-&nbsp;<A HREF="IView.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
-&nbsp;<SCRIPT type="text/javascript">
-  <!--
-  if(window==top) {
-    document.writeln('<A HREF="../../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
-  }
-  //-->
-</SCRIPT>
-<NOSCRIPT>
-  <A HREF="../../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
-</NOSCRIPT>
-
-
-</FONT></TD>
-</TR>
-<TR>
-<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
-  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
-<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
-DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
-</TR>
-</TABLE>
-<A NAME="skip-navbar_bottom"></A>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-
-<HR>
-<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
-</BODY>
-</HTML>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.5.0_15) on Tue Jan 06 17:31:53 CST 2009 -->
+<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<TITLE>
+IView (Carbide.c++ SDK API Reference)
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.nokia.carbide.cpp.epoc.engine.model.IView interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="IView (Carbide.c++ SDK API Reference)";
+}
+</SCRIPT>
+<NOSCRIPT>
+</NOSCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/IView.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../../index-files/index-1.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Carbide.c++</b></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IOwnedModel.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IViewConfiguration.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../../index.html?com/nokia/carbide/cpp/epoc/engine/model/IView.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="IView.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.nokia.carbide.cpp.epoc.engine.model</FONT>
+<BR>
+Interface IView&lt;Model&gt;</H2>
+<DL>
+<DT><B>All Known Subinterfaces:</B> <DD><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/bldinf/IBldInfView.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model.bldinf">IBldInfView</A>, <A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/makefile/image/IImageMakefileView.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model.makefile.image">IImageMakefileView</A>, <A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/makefile/IMakefileView.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model.makefile">IMakefileView</A>, <A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/mmp/IMMPView.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model.mmp">IMMPView</A></DD>
+</DL>
+<HR>
+<DL>
+<DT><PRE>public interface <B>IView&lt;Model&gt;</B></DL>
+</PRE>
+
+<P>
+The base interface for a filtered view onto a model.
+ <p>
+ It allows for transactions of changes to be applied back to the model's DOM.
+ <p>
+ Multiple views may hold changes at the same time (for instance, a dirty
+ editor and a project change listener updating SOURCE statements).
+ <p>
+ The updating model follows the CVS model for handling simultaneous changes:
+ <p>
+ <li>Client makes changes to View A
+ <li>Client makes changes to View B
+ <li>Client commits View A. The #commit() call will synchronize on the IOwnedModel
+ instance and apply changes, updating the DOM and document. Other existing
+ views are out-of-sync (since they reference a stale filtered DOM and may hold
+ changes that no longer apply). Also, due to the model’s document being
+ changed, any other existing views may have unsynchronized cached source
+ ranges into the document. The latter issue is not fatal – any DOM can be
+ rewritten from scratch to recover the “essential” source, but obviously, we
+ want to avoid this where possible.
+ <li>The model notifies listeners (IModelListener#modelUpdated) that changes
+ have occurred. The views themselves are always listeners and are always
+ notified before client listeners.
+ <li>View A ignores notification its own changes
+ <li>View B, since it has changes, marks itself “out of sync”
+ (#isUnsynchronized()). This disallows any commits.
+ <li>Client for View A ignores listener for changes on its own view, if
+ needed.
+ <li>Client for View B periodically checks its synchronization state, or
+ waits until it wants to commit. If out-of-sync on a commit,
+ IllegalStateException is thrown. Finding it’s out of sync, the client decides
+ whether to #revert() or #merge(). Usually it will #merge() to get an updated
+ view combined with its current uncommitted changes. If its changes don’t
+ merge cleanly, #merge() returns false. The listener may decide to show UI at
+ this point. Only #revert(), a successful #merge(), or a #forceSynchronized()
+ will clear the unsynchronized state and allow further writes.
+ <li>Now both views are sync with the model.
+<P>
+
+<P>
+<HR>
+
+<P>
+
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TH>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#addListener(com.nokia.carbide.cpp.epoc.engine.model.IViewListener)">addListener</A></B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IViewListener.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IViewListener</A>&nbsp;listener)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add listener, ignore duplicates</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#commit()">commit</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commits changes to the underlying translation unit (visible from IOwnedModel#getTranslationUnit() and IView#getFilteredTranslationUnit())
+ 
+ When a view is committed, changes may or may not be made to the owning model's document.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;IPath</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#convertModelToProjectPath(IPath)">convertModelToProjectPath</A></B>(IPath&nbsp;prjPath)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Convert a model-relative path to an project-relative path.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;IPath</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#convertProjectToModelPath(IPath)">convertProjectToModelPath</A></B>(IPath&nbsp;prjPath)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Convert a project-relative path to an model-relative path.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#dispose()">dispose</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dispose view, removing its listeners and detaching it from model 
+ and losing any changes.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#forceSynchronized()">forceSynchronized</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Forces view to be marked synchronized, a last resort if #merge() 
+ returns false and you don’t want to #revert().</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IData.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IData</A>&lt;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IView</A>&lt;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html" title="type parameter in IView">Model</A>&gt;&gt;</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#getData()">getData</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get a copy of cacheable data for the view.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;IMessage[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#getMessages()">getMessages</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get all messages associated with parsing the filtered TU.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html" title="type parameter in IView">Model</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#getModel()">getModel</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the model we're viewing</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;IPath</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#getProjectPath()">getProjectPath</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the project root from the view configuration.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;IPath[]</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#getReferencedFiles()">getReferencedFiles</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the array of filesystem paths for files read 
+ while creating the filtered translation units</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IViewConfiguration.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IViewConfiguration</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#getViewConfiguration()">getViewConfiguration</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the configuration used to create the view</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#markUnsynchronized()">markUnsynchronized</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mark a view out-of-sync due to changes in the model.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#merge()">merge</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Merges uncommitted changes with the current model.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;boolean</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#needsSynchonize()">needsSynchonize</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tell whether the view needs to be synchronized (merged) with the model.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#removeListener(com.nokia.carbide.cpp.epoc.engine.model.IViewListener)">removeListener</A></B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IViewListener.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IViewListener</A>&nbsp;listener)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Remove listener, ignore if not present</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#revert()">revert</A></B>()</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reverts changes to mirror model contents and marks the view synchronized.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>&nbsp;void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#setDebug(boolean)">setDebug</A></B>(boolean&nbsp;debug)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable debugging, if supported.</TD>
+</TR>
+</TABLE>
+&nbsp;
+<P>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TH>
+</TR>
+</TABLE>
+
+<A NAME="getModel()"><!-- --></A><H3>
+getModel</H3>
+<PRE>
+<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html" title="type parameter in IView">Model</A> <B>getModel</B>()</PRE>
+<DL>
+<DD>Get the model we're viewing
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="dispose()"><!-- --></A><H3>
+dispose</H3>
+<PRE>
+void <B>dispose</B>()</PRE>
+<DL>
+<DD>Dispose view, removing its listeners and detaching it from model 
+ and losing any changes.  All views must be disposed before the model
+ can be disposed.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getViewConfiguration()"><!-- --></A><H3>
+getViewConfiguration</H3>
+<PRE>
+<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IViewConfiguration.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IViewConfiguration</A> <B>getViewConfiguration</B>()</PRE>
+<DL>
+<DD>Get the configuration used to create the view
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>configuration (never null)</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getMessages()"><!-- --></A><H3>
+getMessages</H3>
+<PRE>
+IMessage[] <B>getMessages</B>()</PRE>
+<DL>
+<DD>Get all messages associated with parsing the filtered TU.  This
+ includes those from the problem nodes and additional diagnostics.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>array (never null)</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getReferencedFiles()"><!-- --></A><H3>
+getReferencedFiles</H3>
+<PRE>
+IPath[] <B>getReferencedFiles</B>()</PRE>
+<DL>
+<DD>Get the array of filesystem paths for files read 
+ while creating the filtered translation units
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>list of paths (never null)</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="revert()"><!-- --></A><H3>
+revert</H3>
+<PRE>
+void <B>revert</B>()</PRE>
+<DL>
+<DD>Reverts changes to mirror model contents and marks the view synchronized.
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="commit()"><!-- --></A><H3>
+commit</H3>
+<PRE>
+void <B>commit</B>()
+            throws java.lang.IllegalStateException</PRE>
+<DL>
+<DD>Commits changes to the underlying translation unit (visible from IOwnedModel#getTranslationUnit() and IView#getFilteredTranslationUnit())
+ <p>
+ When a view is committed, changes may or may not be made to the owning model's document.  A
+ document change event will be sent if the contents change, and that event will cause the model
+ to mark any open views (except this one) unsynchronized.
+ <p>
+ During a commit, the contents of the view may be recreated.  Any references to objects provided
+ by the view should be considered stale.
+ <p>
+ A commit can throw IllegalStateException if it is unsynchronized.  The code for a commit should
+ be structured like this:
+         <pre>
+                // commit changes
+                while (true) {
+                        try { 
+                                view.commit();
+                                break;
+                        } catch (IllegalStateException e) {  // happens when third party has committed in-between
+                                // usually UI around this...
+                                if (!view.merge()) {
+                                        // worst case (could try view.forceSynchronized() too)
+                                        view.revert();
+                                }
+                                // further failures should not occur, but loop just in case the
+                                // UI above took long enough for someone else to sneak in
+                        }
+                }
+         </pre>
+<P>
+<DD><DL>
+
+<DT><B>Throws:</B>
+<DD><CODE>java.lang.IllegalStateException</CODE> - if out of sync<DT><B>See Also:</B><DD><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#needsSynchonize()"><CODE>needsSynchonize()</CODE></A>, 
+<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#merge()"><CODE>merge()</CODE></A>, 
+<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#revert()"><CODE>revert()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="markUnsynchronized()"><!-- --></A><H3>
+markUnsynchronized</H3>
+<PRE>
+void <B>markUnsynchronized</B>()</PRE>
+<DL>
+<DD>Mark a view out-of-sync due to changes in the model.
+<P>
+<DD><DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#needsSynchonize()"><CODE>needsSynchonize()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="needsSynchonize()"><!-- --></A><H3>
+needsSynchonize</H3>
+<PRE>
+boolean <B>needsSynchonize</B>()</PRE>
+<DL>
+<DD>Tell whether the view needs to be synchronized (merged) with the model.
+ <p>  
+ A newly created view never needs synchronization, and a view 
+ with changes does not necessarily need synchronization.
+ <p>  
+ Only when the model is changed underneath (e.g. other views commit, 
+ the DOM is changed directly, or the document is changed) and 
+ the view has uncommited changes and wants to commit is 
+ synchronization needed.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>true: view needs to be reverted or forced synchronized</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="merge()"><!-- --></A><H3>
+merge</H3>
+<PRE>
+boolean <B>merge</B>()</PRE>
+<DL>
+<DD>Merges uncommitted changes with the current model.  <p>
+ Returns true if pending changes merge cleanly, with view 
+ left in synchronized state.  
+ Returns false otherwise, leaving view in a unsynchronized state, 
+ possibly with partial updates.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>merge succeeded<DT><B>See Also:</B><DD><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html#needsSynchonize()"><CODE>needsSynchonize()</CODE></A></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="forceSynchronized()"><!-- --></A><H3>
+forceSynchronized</H3>
+<PRE>
+void <B>forceSynchronized</B>()</PRE>
+<DL>
+<DD>Forces view to be marked synchronized, a last resort if #merge() 
+ returns false and you don’t want to #revert().
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="addListener(com.nokia.carbide.cpp.epoc.engine.model.IViewListener)"><!-- --></A><H3>
+addListener</H3>
+<PRE>
+void <B>addListener</B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IViewListener.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IViewListener</A>&nbsp;listener)</PRE>
+<DL>
+<DD>Add listener, ignore duplicates
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="removeListener(com.nokia.carbide.cpp.epoc.engine.model.IViewListener)"><!-- --></A><H3>
+removeListener</H3>
+<PRE>
+void <B>removeListener</B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IViewListener.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IViewListener</A>&nbsp;listener)</PRE>
+<DL>
+<DD>Remove listener, ignore if not present
+<P>
+<DD><DL>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getProjectPath()"><!-- --></A><H3>
+getProjectPath</H3>
+<PRE>
+IPath <B>getProjectPath</B>()</PRE>
+<DL>
+<DD>Get the project root from the view configuration.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>IPath absolute path to project root</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setDebug(boolean)"><!-- --></A><H3>
+setDebug</H3>
+<PRE>
+void <B>setDebug</B>(boolean&nbsp;debug)</PRE>
+<DL>
+<DD>Enable debugging, if supported.  Dumps information to System.out.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>debug</CODE> - true to debug, false to stop</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="convertProjectToModelPath(IPath)"><!-- --></A><H3>
+convertProjectToModelPath</H3>
+<PRE>
+IPath <B>convertProjectToModelPath</B>(IPath&nbsp;prjPath)</PRE>
+<DL>
+<DD>Convert a project-relative path to an model-relative path.<p>
+ Null or full paths returned as identity.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>prjPath</CODE> - project-relative path (or null or full path)
+<DT><B>Returns:</B><DD>path adjusted to be model-relative (except for null or full path which are returned the same)</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="convertModelToProjectPath(IPath)"><!-- --></A><H3>
+convertModelToProjectPath</H3>
+<PRE>
+IPath <B>convertModelToProjectPath</B>(IPath&nbsp;prjPath)</PRE>
+<DL>
+<DD>Convert a model-relative path to an project-relative path.<p>
+ Null or full paths returned as identity.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>modelPath</CODE> - model-relative path (or null or full path)
+<DT><B>Returns:</B><DD>path adjusted to be project-relative (except for null or full path which are returned the same)</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getData()"><!-- --></A><H3>
+getData</H3>
+<PRE>
+<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IData.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IData</A>&lt;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IView</A>&lt;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IView.html" title="type parameter in IView">Model</A>&gt;&gt; <B>getData</B>()</PRE>
+<DL>
+<DD>Get a copy of cacheable data for the view.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>instance of IData containing current data in the view, or <code>null</code> if such data cannot be created</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/IView.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../../index-files/index-1.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+<b>Carbide.c++</b></EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+&nbsp;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IOwnedModel.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model"><B>PREV CLASS</B></A>&nbsp;
+&nbsp;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IViewConfiguration.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../../../index.html?com/nokia/carbide/cpp/epoc/engine/model/IView.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="IView.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
+&nbsp;<SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+<div id="footer">Copyright &copy; 2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
+</BODY>
+</HTML>