carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/reference/api/com/nokia/carbide/cpp/epoc/engine/model/IModelProvider.html
author fturovic <frank.turovich@nokia.com>
Tue, 27 Jul 2010 15:28:19 -0500
changeset 1704 24ac5a5cf80c
parent 0 fb279309251b
permissions -rw-r--r--
updated copyright dates and fixed some css issues

<!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>