SIL.FieldWorks.CacheLight.RealDataCache.MakeNewObject C# (CSharp) Method

MakeNewObject() public method

Member MakeNewObject
public MakeNewObject ( int clid, int hvoOwner, int tag, int ord ) : int
clid int clid
hvoOwner int hvoOwner
tag int tag
ord int ord
return int
		public int MakeNewObject(int clid, int hvoOwner, int tag, int ord)
		{
			CheckDisposed();
			int hvoNew = NextHvo;

			CacheIntProp(hvoNew, (int)CmObjectFields.kflidCmObject_Class, clid);
			SetGuid(hvoNew, (int)CmObjectFields.kflidCmObject_Guid, Guid.NewGuid());
			if (hvoOwner <= 0)
				return hvoNew;

			SetObjProp(hvoNew, (int)CmObjectFields.kflidCmObject_Owner, hvoOwner);
			CacheIntProp(hvoNew, (int)CmObjectFields.kflidCmObject_OwnFlid, tag);
			switch (ord)
			{
				case -1: // Collection
					int c = get_VecSize(hvoOwner, tag);
					Replace(hvoOwner, tag, c, c, new[] { hvoNew }, 1);
					break;
				case -2: // Atomic
					SetObjProp(hvoOwner, tag, hvoNew);
					CacheIntProp(hvoNew, (int)CmObjectFields.kflidCmObject_OwnOrd, 0);
					break;
				default: // Sequence
					Debug.Assert(ord >= 0);
					Replace(hvoOwner, tag, ord, ord, new[] { hvoNew }, 1);
					break;
			}
			return hvoNew;
		}

Usage Example

示例#1
0
		public override void FixtureSetup()
		{
			base.FixtureSetup();

			SetupTestModel(Resources.TextCacheModel_xml);

			m_sda = new RealDataCache();
			m_sda.MetaDataCache = MetaDataCache.CreateMetaDataCache("TestModel.xml");
			//m_cache.ParaContentsFlid = kflidParaContents;
			//m_cache.ParaPropertiesFlid = kflidParaProperties;
			//m_cache.TextParagraphsFlid = kflidTextParas;

			Debug.Assert(m_wsManager == null);
			m_wsManager = Cache.ServiceLocator.GetInstance<IWritingSystemManager>();
			m_sda.WritingSystemFactory = m_wsManager;

			m_wsAnal = Cache.DefaultAnalWs;

			m_wsVern = Cache.DefaultVernWs;

			//IWritingSystem deWs;
			//m_wsManager.GetOrSet("de", out deWs);
			//m_wsDeu = deWs.Handle;

			//m_wsManager.UserWs = m_wsEng;
			//m_wsUser = m_wsManager.UserWs;

			m_tsf = TsStrFactoryClass.Create();

			m_hvoLexDb = m_sda.MakeNewObject(kclsidLexDb, 0, -1, -1);

			kflidLexDb_Entries = m_sda.MetaDataCache.GetFieldId("LexDb", "Entries", false);
			kflidEntry_Form = m_sda.MetaDataCache.GetFieldId("Entry", "Form", false);
			kflidEntry_Summary = m_sda.MetaDataCache.GetFieldId("Entry", "Summary", false);

			m_hvoKick = m_sda.MakeNewObject(kclsidEntry, m_hvoLexDb, kflidLexDb_Entries, 0);
			m_sda.SetMultiStringAlt(m_hvoKick, kflidEntry_Form, m_wsVern, m_tsf.MakeString("kick", m_wsVern));
			m_sda.SetString(m_hvoKick, kflidEntry_Summary, m_tsf.MakeString("strike with foot", m_wsAnal));

			var keyAttrs = new Dictionary<string, string[]>();
			keyAttrs["layout"] = new[] { "class", "type", "name", "choiceGuid" };
			keyAttrs["group"] = new[] { "label" };
			keyAttrs["part"] = new[] { "ref" };
			var layoutInventory = new Inventory("*.fwlayout", "/LayoutInventory/*", keyAttrs, "test", "nowhere");
			layoutInventory.LoadElements(Resources.Layouts_xml, 1);

			keyAttrs = new Dictionary<string, string[]>();
			keyAttrs["part"] = new[] { "id" };

			var partInventory = new Inventory("*Parts.xml", "/PartInventory/bin/*", keyAttrs, "test", "nowhere");
			partInventory.LoadElements(Resources.Parts_xml, 1);

			m_layouts = new LayoutCache(m_sda.MetaDataCache, layoutInventory, partInventory);
		}
All Usage Examples Of SIL.FieldWorks.CacheLight.RealDataCache::MakeNewObject