carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/reference/api/com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.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/IModelProvider.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/IModelProvider.html	Tue Jul 27 15:28:19 2010 -0500
@@ -1,511 +1,511 @@
-<!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>
-IModelProvider (Carbide.c++ SDK API Reference)
-</TITLE>
-
-<META NAME="keywords" CONTENT="com.nokia.carbide.cpp.epoc.engine.model.IModelProvider interface">
-
-<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../../stylesheet.css" TITLE="Style">
-
-<SCRIPT type="text/javascript">
-function windowTitle()
-{
-    parent.document.title="IModelProvider (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/IModelProvider.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/IModelLoadResults.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/IOwnedModel.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/IModelProvider.html" target="_top"><B>FRAMES</B></A>  &nbsp;
-&nbsp;<A HREF="IModelProvider.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 IModelProvider&lt;Model extends <A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IOwnedModel.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IOwnedModel</A>,SharedModel extends <A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModel.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IModel</A>&gt;</H2>
-<HR>
-<DL>
-<DT><PRE>public interface <B>IModelProvider&lt;Model extends <A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IOwnedModel.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IOwnedModel</A>,SharedModel extends <A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModel.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IModel</A>&gt;</B></DL>
-</PRE>
-
-<P>
-Interface managing shared access to models.
- <p>
- The provider gives access to the factory, for creation of private Model
- instances, and provides shared instances through #findOrCreateModel(). The
- model provider is responsible for the real contents of the files provided to
- it through the #createModel(IPath) call, thus clients must use the provider
- for safe access to the file. Further, the provider exposes only the base
- interface IModel to limit inadvertent changes to shared models.
- <p>
- The domain of files managed is not specified by this interface –- a model
- provider may work entirely on memory buffers. But if an implementations of
- the model provider manage resources in the workspace, it is responsible for
- synchronizing the models with the workspace; e.g. persisting changes to
- IDocuments to the workspace and listening for changes to such resources
- outside its own APIs.
-<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;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html#createModel(IPath)">createModel</A></B>(IPath&nbsp;workspacePath)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a <b>new</b> model with an <b>empty</b> document, which is slated to live
- at the given workspace path.</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/IModelProvider.html" title="type parameter in IModelProvider">SharedModel</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html#findSharedModel(IPath)">findSharedModel</A></B>(IPath&nbsp;workspacePath)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Find a registered Model instance for the given path.</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/IModelProvider.html" title="type parameter in IModelProvider">SharedModel</A></CODE></FONT></TD>
-<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html#getSharedModel(IPath)">getSharedModel</A></B>(IPath&nbsp;workspacePath)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Load a model for shared use.</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/IModelProvider.html#load(Model)">load</A></B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Load the document of a model from persistent storage.</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/IModelProvider.html#registerModel(Model)">registerModel</A></B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Make a model visible to clients of the provider and manage its contents.</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/IModelProvider.html#releaseSharedModel(SharedModel)">releaseSharedModel</A></B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">SharedModel</A>&nbsp;model)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Indicate that the client is no longer using the model, which allows it to
- be eventually cleaned up.</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/IModelProvider.html#save(Model)">save</A></B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>since 1.4 (Carbide 2.0), this variant is unsafe, since the model
- is no longer locked during a save, so the document map from a model 
- might be changing.</I></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/IModelProvider.html#save(Model, java.util.Map)">save</A></B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model,
-     java.util.Map&lt;IPath,IDocument&gt;&nbsp;documentMap)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Save the contents of a model's document(s) to persistent storage.</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/IModelProvider.html#unregisterModel(Model)">unregisterModel</A></B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Make a model invisible to clients of the provider and stop managing its
- contents.</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/IModelProvider.html#updateModelDocumentMappings(Model)">updateModelDocumentMappings</A></B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model)</CODE>
-
-<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Update tracked files using the map of IPath -> IDocument mappings for the model.</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="createModel(IPath)"><!-- --></A><H3>
-createModel</H3>
-<PRE>
-<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A> <B>createModel</B>(IPath&nbsp;workspacePath)</PRE>
-<DL>
-<DD>Create a <b>new</b> model with an <b>empty</b> document, which is slated to live
- at the given workspace path.  (See <A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html#getSharedModel(IPath)"><CODE>getSharedModel(IPath)</CODE></A>
- for the normal case of loading a model from an existing file.)
- <p>
- The returned model is not registered and its document is not tracked
- until <CODE>#registerModel(IOwnedModel))</CODE> is called.
-<P>
-<DD><DL>
-<DT><B>Parameters:</B><DD><CODE>workspacePath</CODE> - workspace-relative path.
-<DT><B>Returns:</B><DD>model (never null)</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="load(com.nokia.carbide.cpp.epoc.engine.model.IOwnedModel)"><!-- --></A><A NAME="load(Model)"><!-- --></A><H3>
-load</H3>
-<PRE>
-void <B>load</B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model)
-          throws CoreException</PRE>
-<DL>
-<DD>Load the document of a model from persistent storage.  Only allowed on owned models.
- This either updates the existing document or replaces a null document
- with a new one.
-<P>
-<DD><DL>
-<DT><B>Parameters:</B><DD><CODE>model</CODE> - 
-<DT><B>Throws:</B>
-<DD><CODE>CoreException</CODE></DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="save(com.nokia.carbide.cpp.epoc.engine.model.IOwnedModel)"><!-- --></A><A NAME="save(Model)"><!-- --></A><H3>
-save</H3>
-<PRE>
-void <B>save</B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model)
-          throws CoreException</PRE>
-<DL>
-<DD><B>Deprecated.</B>&nbsp;<I>since 1.4 (Carbide 2.0), this variant is unsafe, since the model
- is no longer locked during a save, so the document map from a model 
- might be changing.</I>
-<P>
-<DD>Save the contents of a model's document(s) to persistent storage.  
- Only allowed on owned models.
-<P>
-<DD><DL>
-<DT><B>Parameters:</B><DD><CODE>model</CODE> - 
-<DT><B>Throws:</B>
-<DD><CODE>CoreException</CODE></DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="save(com.nokia.carbide.cpp.epoc.engine.model.IOwnedModel,java.util.Map)"><!-- --></A><A NAME="save(Model, java.util.Map)"><!-- --></A><H3>
-save</H3>
-<PRE>
-void <B>save</B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model,
-          java.util.Map&lt;IPath,IDocument&gt;&nbsp;documentMap)
-          throws CoreException</PRE>
-<DL>
-<DD>Save the contents of a model's document(s) to persistent storage.  
- Only allowed on owned models.
- <p>
- This variant is called directly from a model when views commit themselves.
- The model is no longer locked, but the provided document map is consistent
- and may be persisted as a group.  This change was made to avoid deadlocks
- when a model save triggers a resource change event which also wants to reread 
- the model.
-<P>
-<DD><DL>
-<DT><B>Parameters:</B><DD><CODE>model</CODE> - <DD><CODE>documentMap</CODE> - a copy of the documents generated by the last view commit
-<DT><B>Throws:</B>
-<DD><CODE>CoreException</CODE><DT><B>Since:</B></DT>
-  <DD>1.4 (Carbide 2.0)</DD>
-</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="registerModel(com.nokia.carbide.cpp.epoc.engine.model.IOwnedModel)"><!-- --></A><A NAME="registerModel(Model)"><!-- --></A><H3>
-registerModel</H3>
-<PRE>
-void <B>registerModel</B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model)
-                   throws CoreException</PRE>
-<DL>
-<DD>Make a model visible to clients of the provider and manage its contents.
- <p>
- Once registered, the model's owned model is counted as a shared model
- reference.  The caller should <A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html#releaseSharedModel(SharedModel)"><CODE>release</CODE></A> 
- this model eventually.
- <p>
- If the model has a <code>null</code> IDocument, then it will be loaded
- from storage.  Otherwise, it will be persisted immediately from the document
- contents.   Then, the model will be parsed.
- <p>
- The registered model always has a document, though it may be empty if
- the load failed.
- <p>
- Once registered, changes to the model's document are persisted to underlying storage,
- and changes to the persisted storage cause reloads of the model.
-<P>
-<DD><DL>
-<DT><B>Parameters:</B><DD><CODE>model</CODE> - a newly created model
-<DT><B>Throws:</B>
-<DD><CODE>java.lang.IllegalArgumentException</CODE> - if already registered
-<DD><CODE>CoreException</CODE> - if problems registering model, loading (when existing), or saving contents</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="unregisterModel(com.nokia.carbide.cpp.epoc.engine.model.IOwnedModel)"><!-- --></A><A NAME="unregisterModel(Model)"><!-- --></A><H3>
-unregisterModel</H3>
-<PRE>
-void <B>unregisterModel</B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model)</PRE>
-<DL>
-<DD>Make a model invisible to clients of the provider and stop managing its
- contents.  Any pending changes in the view, if committed, will not be
- automatically persisted, and changes to the persisted storage are
- no longer tracked.
-<P>
-<DD><DL>
-<DT><B>Parameters:</B><DD><CODE>model</CODE> - a registered model
-<DT><B>Throws:</B>
-<DD><CODE>java.lang.IllegalArgumentException</CODE> - if not registered</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="findSharedModel(IPath)"><!-- --></A><H3>
-findSharedModel</H3>
-<PRE>
-<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">SharedModel</A> <B>findSharedModel</B>(IPath&nbsp;workspacePath)</PRE>
-<DL>
-<DD>Find a registered Model instance for the given path.
- <p>
- The path is used to identify the model and is a key to its real contents
- (usually the given workspace resource, as implied by the name). The
- client has limited access to the model.  The real work happens through
- IView.
- <p>
- The model must be <A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html#releaseSharedModel(SharedModel)"><CODE>released</CODE></A> after use.
-<P>
-<DD><DL>
-<DT><B>Parameters:</B><DD><CODE>workspacePath</CODE> - 
-<DT><B>Returns:</B><DD>existing model or null</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="getSharedModel(IPath)"><!-- --></A><H3>
-getSharedModel</H3>
-<PRE>
-<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">SharedModel</A> <B>getSharedModel</B>(IPath&nbsp;workspacePath)
-                                          throws CoreException</PRE>
-<DL>
-<DD>Load a model for shared use.  This is the normal client use of the provider.
- <p>
- This finds a registered model instance. If none registered, it loads a new 
- model instance and registers it, then loads and parse its contents.
- <p>
- If the persisted resource does not exist, a <code>null</code> model is returned.
- <p>
- The client is responsible for <A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html#releaseSharedModel(SharedModel)"><CODE>releasing</CODE></A> 
- the model when done.
- <p>
- The client has limited (read-only) direct access to the model but may
- create views and make changes through them.
-<P>
-<DD><DL>
-<DT><B>Parameters:</B><DD><CODE>workspacePath</CODE> - 
-<DT><B>Returns:</B><DD>model or null if no such path registered
-<DT><B>Throws:</B>
-<DD><CODE>org.eclipse.core.runtime.CoreException</CODE> - if model cannot be created, e.g. due to a problem loading it
-             when it otherwise appears to exist
-<DD><CODE>CoreException</CODE></DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="releaseSharedModel(com.nokia.carbide.cpp.epoc.engine.model.IModel)"><!-- --></A><A NAME="releaseSharedModel(SharedModel)"><!-- --></A><H3>
-releaseSharedModel</H3>
-<PRE>
-void <B>releaseSharedModel</B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">SharedModel</A>&nbsp;model)
-                        throws java.lang.IllegalStateException</PRE>
-<DL>
-<DD>Indicate that the client is no longer using the model, which allows it to
- be eventually cleaned up.
- <p>
- View created on the model must be disposed first.
-<P>
-<DD><DL>
-<DT><B>Parameters:</B><DD><CODE>model</CODE> - 
-<DT><B>Throws:</B>
-<DD><CODE>java.lang.IllegalStateException</CODE> - if all clients have released the model, but views are still
-             undisposed (this condition is delayed until all clients have
-             released the model, so the last client to release will be
-             blamed :( )</DL>
-</DD>
-</DL>
-<HR>
-
-<A NAME="updateModelDocumentMappings(com.nokia.carbide.cpp.epoc.engine.model.IOwnedModel)"><!-- --></A><A NAME="updateModelDocumentMappings(Model)"><!-- --></A><H3>
-updateModelDocumentMappings</H3>
-<PRE>
-void <B>updateModelDocumentMappings</B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model)</PRE>
-<DL>
-<DD>Update tracked files using the map of IPath -> IDocument mappings for the model.
- These can change as different #includes are detected as a result
- of different IViewFilters.  The provider tracks these documents
- so that changes to #included files can be saved to disk.
-<P>
-<DD><DL>
-</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/IModelProvider.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/IModelLoadResults.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/IOwnedModel.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/IModelProvider.html" target="_top"><B>FRAMES</B></A>  &nbsp;
-&nbsp;<A HREF="IModelProvider.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>
+IModelProvider (Carbide.c++ SDK API Reference)
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.nokia.carbide.cpp.epoc.engine.model.IModelProvider interface">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="IModelProvider (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/IModelProvider.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/IModelLoadResults.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/IOwnedModel.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/IModelProvider.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="IModelProvider.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 IModelProvider&lt;Model extends <A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IOwnedModel.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IOwnedModel</A>,SharedModel extends <A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModel.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IModel</A>&gt;</H2>
+<HR>
+<DL>
+<DT><PRE>public interface <B>IModelProvider&lt;Model extends <A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IOwnedModel.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IOwnedModel</A>,SharedModel extends <A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModel.html" title="interface in com.nokia.carbide.cpp.epoc.engine.model">IModel</A>&gt;</B></DL>
+</PRE>
+
+<P>
+Interface managing shared access to models.
+ <p>
+ The provider gives access to the factory, for creation of private Model
+ instances, and provides shared instances through #findOrCreateModel(). The
+ model provider is responsible for the real contents of the files provided to
+ it through the #createModel(IPath) call, thus clients must use the provider
+ for safe access to the file. Further, the provider exposes only the base
+ interface IModel to limit inadvertent changes to shared models.
+ <p>
+ The domain of files managed is not specified by this interface –- a model
+ provider may work entirely on memory buffers. But if an implementations of
+ the model provider manage resources in the workspace, it is responsible for
+ synchronizing the models with the workspace; e.g. persisting changes to
+ IDocuments to the workspace and listening for changes to such resources
+ outside its own APIs.
+<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;<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html#createModel(IPath)">createModel</A></B>(IPath&nbsp;workspacePath)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a <b>new</b> model with an <b>empty</b> document, which is slated to live
+ at the given workspace path.</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/IModelProvider.html" title="type parameter in IModelProvider">SharedModel</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html#findSharedModel(IPath)">findSharedModel</A></B>(IPath&nbsp;workspacePath)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Find a registered Model instance for the given path.</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/IModelProvider.html" title="type parameter in IModelProvider">SharedModel</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html#getSharedModel(IPath)">getSharedModel</A></B>(IPath&nbsp;workspacePath)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Load a model for shared use.</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/IModelProvider.html#load(Model)">load</A></B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Load the document of a model from persistent storage.</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/IModelProvider.html#registerModel(Model)">registerModel</A></B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Make a model visible to clients of the provider and manage its contents.</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/IModelProvider.html#releaseSharedModel(SharedModel)">releaseSharedModel</A></B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">SharedModel</A>&nbsp;model)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Indicate that the client is no longer using the model, which allows it to
+ be eventually cleaned up.</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/IModelProvider.html#save(Model)">save</A></B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>since 1.4 (Carbide 2.0), this variant is unsafe, since the model
+ is no longer locked during a save, so the document map from a model 
+ might be changing.</I></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/IModelProvider.html#save(Model, java.util.Map)">save</A></B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model,
+     java.util.Map&lt;IPath,IDocument&gt;&nbsp;documentMap)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Save the contents of a model's document(s) to persistent storage.</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/IModelProvider.html#unregisterModel(Model)">unregisterModel</A></B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Make a model invisible to clients of the provider and stop managing its
+ contents.</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/IModelProvider.html#updateModelDocumentMappings(Model)">updateModelDocumentMappings</A></B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model)</CODE>
+
+<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Update tracked files using the map of IPath -> IDocument mappings for the model.</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="createModel(IPath)"><!-- --></A><H3>
+createModel</H3>
+<PRE>
+<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A> <B>createModel</B>(IPath&nbsp;workspacePath)</PRE>
+<DL>
+<DD>Create a <b>new</b> model with an <b>empty</b> document, which is slated to live
+ at the given workspace path.  (See <A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html#getSharedModel(IPath)"><CODE>getSharedModel(IPath)</CODE></A>
+ for the normal case of loading a model from an existing file.)
+ <p>
+ The returned model is not registered and its document is not tracked
+ until <CODE>#registerModel(IOwnedModel))</CODE> is called.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>workspacePath</CODE> - workspace-relative path.
+<DT><B>Returns:</B><DD>model (never null)</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="load(com.nokia.carbide.cpp.epoc.engine.model.IOwnedModel)"><!-- --></A><A NAME="load(Model)"><!-- --></A><H3>
+load</H3>
+<PRE>
+void <B>load</B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model)
+          throws CoreException</PRE>
+<DL>
+<DD>Load the document of a model from persistent storage.  Only allowed on owned models.
+ This either updates the existing document or replaces a null document
+ with a new one.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>model</CODE> - 
+<DT><B>Throws:</B>
+<DD><CODE>CoreException</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="save(com.nokia.carbide.cpp.epoc.engine.model.IOwnedModel)"><!-- --></A><A NAME="save(Model)"><!-- --></A><H3>
+save</H3>
+<PRE>
+void <B>save</B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model)
+          throws CoreException</PRE>
+<DL>
+<DD><B>Deprecated.</B>&nbsp;<I>since 1.4 (Carbide 2.0), this variant is unsafe, since the model
+ is no longer locked during a save, so the document map from a model 
+ might be changing.</I>
+<P>
+<DD>Save the contents of a model's document(s) to persistent storage.  
+ Only allowed on owned models.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>model</CODE> - 
+<DT><B>Throws:</B>
+<DD><CODE>CoreException</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="save(com.nokia.carbide.cpp.epoc.engine.model.IOwnedModel,java.util.Map)"><!-- --></A><A NAME="save(Model, java.util.Map)"><!-- --></A><H3>
+save</H3>
+<PRE>
+void <B>save</B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model,
+          java.util.Map&lt;IPath,IDocument&gt;&nbsp;documentMap)
+          throws CoreException</PRE>
+<DL>
+<DD>Save the contents of a model's document(s) to persistent storage.  
+ Only allowed on owned models.
+ <p>
+ This variant is called directly from a model when views commit themselves.
+ The model is no longer locked, but the provided document map is consistent
+ and may be persisted as a group.  This change was made to avoid deadlocks
+ when a model save triggers a resource change event which also wants to reread 
+ the model.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>model</CODE> - <DD><CODE>documentMap</CODE> - a copy of the documents generated by the last view commit
+<DT><B>Throws:</B>
+<DD><CODE>CoreException</CODE><DT><B>Since:</B></DT>
+  <DD>1.4 (Carbide 2.0)</DD>
+</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="registerModel(com.nokia.carbide.cpp.epoc.engine.model.IOwnedModel)"><!-- --></A><A NAME="registerModel(Model)"><!-- --></A><H3>
+registerModel</H3>
+<PRE>
+void <B>registerModel</B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model)
+                   throws CoreException</PRE>
+<DL>
+<DD>Make a model visible to clients of the provider and manage its contents.
+ <p>
+ Once registered, the model's owned model is counted as a shared model
+ reference.  The caller should <A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html#releaseSharedModel(SharedModel)"><CODE>release</CODE></A> 
+ this model eventually.
+ <p>
+ If the model has a <code>null</code> IDocument, then it will be loaded
+ from storage.  Otherwise, it will be persisted immediately from the document
+ contents.   Then, the model will be parsed.
+ <p>
+ The registered model always has a document, though it may be empty if
+ the load failed.
+ <p>
+ Once registered, changes to the model's document are persisted to underlying storage,
+ and changes to the persisted storage cause reloads of the model.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>model</CODE> - a newly created model
+<DT><B>Throws:</B>
+<DD><CODE>java.lang.IllegalArgumentException</CODE> - if already registered
+<DD><CODE>CoreException</CODE> - if problems registering model, loading (when existing), or saving contents</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="unregisterModel(com.nokia.carbide.cpp.epoc.engine.model.IOwnedModel)"><!-- --></A><A NAME="unregisterModel(Model)"><!-- --></A><H3>
+unregisterModel</H3>
+<PRE>
+void <B>unregisterModel</B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model)</PRE>
+<DL>
+<DD>Make a model invisible to clients of the provider and stop managing its
+ contents.  Any pending changes in the view, if committed, will not be
+ automatically persisted, and changes to the persisted storage are
+ no longer tracked.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>model</CODE> - a registered model
+<DT><B>Throws:</B>
+<DD><CODE>java.lang.IllegalArgumentException</CODE> - if not registered</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="findSharedModel(IPath)"><!-- --></A><H3>
+findSharedModel</H3>
+<PRE>
+<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">SharedModel</A> <B>findSharedModel</B>(IPath&nbsp;workspacePath)</PRE>
+<DL>
+<DD>Find a registered Model instance for the given path.
+ <p>
+ The path is used to identify the model and is a key to its real contents
+ (usually the given workspace resource, as implied by the name). The
+ client has limited access to the model.  The real work happens through
+ IView.
+ <p>
+ The model must be <A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html#releaseSharedModel(SharedModel)"><CODE>released</CODE></A> after use.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>workspacePath</CODE> - 
+<DT><B>Returns:</B><DD>existing model or null</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="getSharedModel(IPath)"><!-- --></A><H3>
+getSharedModel</H3>
+<PRE>
+<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">SharedModel</A> <B>getSharedModel</B>(IPath&nbsp;workspacePath)
+                                          throws CoreException</PRE>
+<DL>
+<DD>Load a model for shared use.  This is the normal client use of the provider.
+ <p>
+ This finds a registered model instance. If none registered, it loads a new 
+ model instance and registers it, then loads and parse its contents.
+ <p>
+ If the persisted resource does not exist, a <code>null</code> model is returned.
+ <p>
+ The client is responsible for <A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html#releaseSharedModel(SharedModel)"><CODE>releasing</CODE></A> 
+ the model when done.
+ <p>
+ The client has limited (read-only) direct access to the model but may
+ create views and make changes through them.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>workspacePath</CODE> - 
+<DT><B>Returns:</B><DD>model or null if no such path registered
+<DT><B>Throws:</B>
+<DD><CODE>org.eclipse.core.runtime.CoreException</CODE> - if model cannot be created, e.g. due to a problem loading it
+             when it otherwise appears to exist
+<DD><CODE>CoreException</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="releaseSharedModel(com.nokia.carbide.cpp.epoc.engine.model.IModel)"><!-- --></A><A NAME="releaseSharedModel(SharedModel)"><!-- --></A><H3>
+releaseSharedModel</H3>
+<PRE>
+void <B>releaseSharedModel</B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">SharedModel</A>&nbsp;model)
+                        throws java.lang.IllegalStateException</PRE>
+<DL>
+<DD>Indicate that the client is no longer using the model, which allows it to
+ be eventually cleaned up.
+ <p>
+ View created on the model must be disposed first.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>model</CODE> - 
+<DT><B>Throws:</B>
+<DD><CODE>java.lang.IllegalStateException</CODE> - if all clients have released the model, but views are still
+             undisposed (this condition is delayed until all clients have
+             released the model, so the last client to release will be
+             blamed :( )</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="updateModelDocumentMappings(com.nokia.carbide.cpp.epoc.engine.model.IOwnedModel)"><!-- --></A><A NAME="updateModelDocumentMappings(Model)"><!-- --></A><H3>
+updateModelDocumentMappings</H3>
+<PRE>
+void <B>updateModelDocumentMappings</B>(<A HREF="../../../../../../../com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html" title="type parameter in IModelProvider">Model</A>&nbsp;model)</PRE>
+<DL>
+<DD>Update tracked files using the map of IPath -> IDocument mappings for the model.
+ These can change as different #includes are detected as a result
+ of different IViewFilters.  The provider tracks these documents
+ so that changes to #included files can be saved to disk.
+<P>
+<DD><DL>
+</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/IModelProvider.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/IModelLoadResults.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/IOwnedModel.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/IModelProvider.html" target="_top"><B>FRAMES</B></A>  &nbsp;
+&nbsp;<A HREF="IModelProvider.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>