static void Main() { //Console.WriteLine("Hello, World!"); Klass MyKlass = new Klass(); // send this data to the new object(class) MyKlass.NewData = "there and back!"; Console.WriteLine(MyKlass.passItOn()); }
public static int Main () { var v = new Klass (new CInt (3)); if (v.Value == 1) return 1; if (v.Value != 3) return 2; if (v.Value == null) return 3; var v2 = new Klass (null); if (v2.Value != null) return 4; Console.WriteLine ("OK"); return 0; }
/// <summary> /// 清空文章分类所有数据。 /// </summary> public static void DeleteAll() { ObjektCollection <FeArticleCategory> list = Klass.ForId("FeArticleCategory@Klass").GetInstances <FeArticleCategory>(); list.DeleteAll(); }
/// <summary> /// 添加删除业务逻辑。 /// </summary> public override void BeforeDelete() { ObjektCollection <FeArticle> oc = new ObjektCollection <FeArticle>(Klass.ForId("FeArticle@Klass"), new WhereClause("\"category\" = '" + base.Id + "'")); if (oc.Count > 0) { throw new Exception("请先删除分类下的所有文章"); } ObjektCollection <FeChannel> channelOc = new ObjektCollection <FeChannel>(Klass.ForId("FeChannel@Klass"), new WhereClause("\"category\" = '" + base.Id + "'")); if (channelOc.Count > 0) { throw new Exception("请先删除分类绑定的频道"); } List <FeArticleCategory> children = GetChildren().ToList(); foreach (FeArticleCategory item in children) { item.Delete(); item.Save(); } base.BeforeDelete(); }
static void Main() { if (debug) { Console.WriteLine("Started"); } li_boost_shared_ptr.debug_shared = debug; // Change loop count to run for a long time to monitor memory const int loopCount = 1; //50000; for (int i = 0; i < loopCount; i++) { new runme().runtest(); System.GC.Collect(); System.GC.WaitForPendingFinalizers(); if (i % 100 == 0) { System.Threading.Thread.Sleep(1); // give some time to the lower priority finalizer thread } } if (debug) { Console.WriteLine("Nearly finished"); } int countdown = 100; while (true) { System.GC.Collect(); System.GC.WaitForPendingFinalizers(); System.Threading.Thread.Sleep(10); if (--countdown == 0) { break; } if (Klass.getTotal_count() == 1) // Expect 1 instance - the one global variable (GlobalValue) { break; } } ; if (Klass.getTotal_count() != 1) { throw new ApplicationException("Klass.total_count=" + Klass.getTotal_count()); } int wrapper_count = li_boost_shared_ptr.shared_ptr_wrapper_count(); if (wrapper_count != li_boost_shared_ptr.NOT_COUNTING) { if (wrapper_count != 1) // Expect 1 instance - the one global variable (GlobalSmartValue) { throw new ApplicationException("shared_ptr wrapper count=" + wrapper_count); } } if (debug) { Console.WriteLine("Finished"); } }
public void accessProtected() { string s = virtualMethod(); if (s != "ProtectedBase") { throw new Exception("Failed"); } Klass k = instanceMethod(new Klass("xyz")); if (k.getName() != "xyz") { throw new Exception("Failed"); } k = instanceOverloaded(new Klass("xyz")); if (k.getName() != "xyz") { throw new Exception("Failed"); } k = instanceOverloaded(new Klass("xyz"), "abc"); if (k.getName() != "abc") { throw new Exception("Failed"); } k = ProtectedBase.staticMethod(new Klass("abc")); if (k.getName() != "abc") { throw new Exception("Failed"); } k = ProtectedBase.staticOverloaded(new Klass("xyz")); if (k.getName() != "xyz") { throw new Exception("Failed"); } k = ProtectedBase.staticOverloaded(new Klass("xyz"), "abc"); if (k.getName() != "abc") { throw new Exception("Failed"); } instanceMemberVariable = 30; int i = instanceMemberVariable; if (i != 30) { throw new Exception("Failed"); } staticMemberVariable = 40; i = staticMemberVariable; if (i != 40) { throw new Exception("Failed"); } i = staticConstMemberVariable; if (i != 20) { throw new Exception("Failed"); } anEnum = ProtectedBase.AnEnum.EnumVal1; ProtectedBase.AnEnum ae = anEnum; if (ae != ProtectedBase.AnEnum.EnumVal1) { throw new Exception("Failed"); } }
private void verifyCount(int expected, Klass k) { int got = li_boost_shared_ptr.use_count(k); if (expected != got) throw new Exception("verify use_count failed. Expected: " + expected + " Got: " + got); }
public static int Main () { var v = new Klass (3); return v.Value.Value - 3; }
static void Main() { int f = overload_template.foo(); f += overload_template.max(3,4); double b = overload_template.max(3.4,5.2); b++; // warning suppression // mix 1 if (overload_template.mix1("hi") != 101) throw new Exception ("mix1(const char*)"); if (overload_template.mix1(1.0, 1.0) != 102) throw new Exception ("mix1(double, const double &)"); if (overload_template.mix1(1.0) != 103) throw new Exception ("mix1(double)"); // mix 2 if (overload_template.mix2("hi") != 101) throw new Exception ("mix2(const char*)"); if (overload_template.mix2(1.0, 1.0) != 102) throw new Exception ("mix2(double, const double &)"); if (overload_template.mix2(1.0) != 103) throw new Exception ("mix2(double)"); // mix 3 if (overload_template.mix3("hi") != 101) throw new Exception ("mix3(const char*)"); if (overload_template.mix3(1.0, 1.0) != 102) throw new Exception ("mix3(double, const double &)"); if (overload_template.mix3(1.0) != 103) throw new Exception ("mix3(double)"); // Combination 1 if (overload_template.overtparams1(100) != 10) throw new Exception ("overtparams1(int)"); if (overload_template.overtparams1(100.0, 100) != 20) throw new Exception ("overtparams1(double, int)"); // Combination 2 if (overload_template.overtparams2(100.0, 100) != 40) throw new Exception ("overtparams2(double, int)"); // Combination 3 if (overload_template.overloaded() != 60) throw new Exception ("overloaded()"); if (overload_template.overloaded(100.0, 100) != 70) throw new Exception ("overloaded(double, int)"); // Combination 4 if (overload_template.overloadedagain("hello") != 80) throw new Exception ("overloadedagain(const char *)"); if (overload_template.overloadedagain() != 90) throw new Exception ("overloadedagain(double)"); // specializations if (overload_template.specialization(10) != 202) throw new Exception ("specialization(int)"); if (overload_template.specialization(10.0) != 203) throw new Exception ("specialization(double)"); if (overload_template.specialization(10, 10) != 204) throw new Exception ("specialization(int, int)"); if (overload_template.specialization(10.0, 10.0) != 205) throw new Exception ("specialization(double, double)"); if (overload_template.specialization("hi", "hi") != 201) throw new Exception ("specialization(const char *, const char *)"); // simple specialization overload_template.xyz(); overload_template.xyz_int(); overload_template.xyz_double(); // a bit of everything if (overload_template.overload("hi") != 0) throw new Exception ("overload()"); if (overload_template.overload(1) != 10) throw new Exception ("overload(int t)"); if (overload_template.overload(1, 1) != 20) throw new Exception ("overload(int t, const int &)"); if (overload_template.overload(1, "hello") != 30) throw new Exception ("overload(int t, const char *)"); Klass k = new Klass(); if (overload_template.overload(k) != 10) throw new Exception ("overload(Klass t)"); if (overload_template.overload(k, k) != 20) throw new Exception ("overload(Klass t, const Klass &)"); if (overload_template.overload(k, "hello") != 30) throw new Exception ("overload(Klass t, const char *)"); if (overload_template.overload(10.0, "hi") != 40) throw new Exception ("overload(double t, const char *)"); if (overload_template.overload() != 50) throw new Exception ("overload(const char *)"); // everything put in a namespace if (overload_template.nsoverload("hi") != 1000) throw new Exception ("nsoverload()"); if (overload_template.nsoverload(1) != 1010) throw new Exception ("nsoverload(int t)"); if (overload_template.nsoverload(1, 1) != 1020) throw new Exception ("nsoverload(int t, const int &)"); if (overload_template.nsoverload(1, "hello") != 1030) throw new Exception ("nsoverload(int t, const char *)"); if (overload_template.nsoverload(k) != 1010) throw new Exception ("nsoverload(Klass t)"); if (overload_template.nsoverload(k, k) != 1020) throw new Exception ("nsoverload(Klass t, const Klass &)"); if (overload_template.nsoverload(k, "hello") != 1030) throw new Exception ("nsoverload(Klass t, const char *)"); if (overload_template.nsoverload(10.0, "hi") != 1040) throw new Exception ("nsoverload(double t, const char *)"); if (overload_template.nsoverload() != 1050) throw new Exception ("nsoverload(const char *)"); }
/// <summary> /// 查询tag关键字。 /// 根据value模糊查询。 /// </summary> /// <param name="value"></param> /// <returns></returns> public static List <FeTag> FindTags(string value) { ObjektCollection <FeTag> oc = new ObjektCollection <FeTag>(Klass.ForId("FeTag@Klass"), new WhereClause("\"tag\" like '%" + value + "%'")); return(oc.ToList()); }
/// <summary> /// 设置指定对象的seo关键字。 /// </summary> /// <param name="keys"></param> /// <param name="relationshipName"></param> /// <param name="sourceId"></param> public static void SetObjektSeo(List <string> keys, string relationshipName, string sourceId) { List <FeSeoKey> entityKeys = new List <FeSeoKey>(); foreach (string key in keys) { FeSeoKey entity = new ObjektCollection <FeSeoKey>(Klass.ForId("FeSeoKey@Klass"), new WhereClause("\"key\" = '" + key + "'")).TryGetSingleResult(); if (entity == null) { entity = new FeSeoKey(); entity.Key = key; entity.Save(); } IEnumerable <FeSeoKey> query = from t in entityKeys where t.Key == entity.Key select t; if (query.Count() == 0) { entityKeys.Add(entity); } } Objekt objekt = ObjektFactory.Find(sourceId); List <RelationshipObjekt> relationshipList = objekt.ROCC.GetROC(relationshipName).ToList(); List <RelationshipObjekt> deleteList = new List <RelationshipObjekt>(); foreach (RelationshipObjekt item3 in relationshipList) { IEnumerable <FeSeoKey> existQuery2 = from t in entityKeys where t.Id == item3.Related.Id select t; if (existQuery2.Count() == 0) { deleteList.Add(item3); } } foreach (RelationshipObjekt item4 in deleteList) { item4.Delete(); item4.Save(); } foreach (FeSeoKey item5 in entityKeys) { IEnumerable <RelationshipObjekt> existQuery = from t in relationshipList where t.Related.Id == item5.Id select t; if (existQuery.Count() == 0) { RelationshipObjekt relationship = ObjektFactory.New <RelationshipObjekt>(Klass.ForName(relationshipName)); relationship.Source = objekt; relationship.Related = item5; relationship.Save(); } } }
/// <summary> /// 查询seo关键字。 /// 根据value模糊查询。 /// </summary> /// <param name="value"></param> /// <returns></returns> public static List <FeSeoKey> FindSeoKes(string value) { ObjektCollection <FeSeoKey> oc = new ObjektCollection <FeSeoKey>(Klass.ForId("FeSeoKey@Klass"), new WhereClause("\"key\" like '%" + value + "%'")); return(oc.ToList()); }
public Deck(Klass klass, bool standard) : this() { Klass = klass; IsStandard = standard; }
public static void Main() { Klass k1 = li_std_auto_ptr.makeKlassAutoPtr("first"); if (k1.getLabel() != "first") { throw new Exception("wrong object label"); } Klass k2 = li_std_auto_ptr.makeKlassAutoPtr("second"); if (Klass.getTotal_count() != 2) { throw new Exception("number of objects should be 2"); } using (Klass k3 = li_std_auto_ptr.makeKlassAutoPtr("second")) { if (Klass.getTotal_count() != 3) { throw new Exception("number of objects should be 3"); } } if (Klass.getTotal_count() != 2) { throw new Exception("number of objects should be 2"); } k1 = null; { int countdown = 500; int expectedCount = 1; while (true) { WaitForGC(); if (--countdown == 0) { break; } if (Klass.getTotal_count() == expectedCount) { break; } } ; int actualCount = Klass.getTotal_count(); if (actualCount != expectedCount) { Console.Error.WriteLine("Expected count: " + expectedCount + " Actual count: " + actualCount); // Finalizers are not guaranteed to be run and sometimes they just don't } } if (k2.getLabel() != "second") { throw new Exception("wrong object label"); } k2 = null; { int countdown = 500; int expectedCount = 0; while (true) { WaitForGC(); if (--countdown == 0) { break; } if (Klass.getTotal_count() == expectedCount) { break; } } int actualCount = Klass.getTotal_count(); if (actualCount != expectedCount) { Console.Error.WriteLine("Expected count: " + expectedCount + " Actual count: " + actualCount); // Finalizers are not guaranteed to be run and sometimes they just don't } } }
public static int Main() { var v = new Klass(3); return(v.Value.Value - 3); }
private ObjektCollection <FeArticleCategory> GetChildren() { return(new ObjektCollection <FeArticleCategory>(Klass.ForId("FeArticleCategory@Klass"), new WhereClause("\"parent\" = '" + base.Id + "'"))); }
/// <summary> /// 创建新增对象排序。 /// </summary> /// <returns></returns> public static decimal NewSortOrder() { ObjektCollection <FeArticleCategory> oc = new ObjektCollection <FeArticleCategory>(Klass.ForId("FeArticleCategory@Klass"), new WhereClause("\"sortOrder\" is not null")); oc.OrderByClause.Add(new OrderByCell("sortOrder", Order.Desc)); FeArticleCategory entity = oc.FirstOrDefault(); int sort2 = 1; if (entity != null && entity.IsExists() && entity.SortOrder.HasValue) { sort2 = (int)entity.SortOrder.Value; sort2++; } return(sort2); }
/// <summary> /// 设置指定对象的seo关键字。 /// </summary> /// <param name="tags"></param> /// <param name="relationshipName"></param> /// <param name="sourceId"></param> public static void SetObjektTag(List <string> tags, string relationshipName, string sourceId) { List <FeTag> entityTags = new List <FeTag>(); foreach (string tag in tags) { FeTag entity = new ObjektCollection <FeTag>(Klass.ForId("FeTag@Klass"), new WhereClause("\"tag\" = '" + tag + "'")).TryGetSingleResult(); if (entity == null) { entity = new FeTag(); entity.Tag = tag; entity.From = ObjektFactory.Find <Value>("75d290896b3d40ad802c9d6b04d61a9b@Value"); entity.Save(); } IEnumerable <FeTag> query = from t in entityTags where t.Tag == entity.Tag select t; if (query.Count() == 0) { entityTags.Add(entity); } } Objekt objekt = ObjektFactory.Find(sourceId); List <RelationshipObjekt> relationshipList = objekt.ROCC.GetROC(relationshipName).ToList(); foreach (RelationshipObjekt item2 in relationshipList) { item2.Delete(); item2.Save(); } foreach (FeTag item3 in entityTags) { RelationshipObjekt relationship = ObjektFactory.New <RelationshipObjekt>(Klass.ForName(relationshipName)); relationship.Source = objekt; relationship.Related = item3; relationship.Save(); } }
private void CopyKlass() { _clipboard = (Klass)_selectedKlass.Clone(); }
static void Main() { if (debug) { Console.WriteLine("Started"); } li_boost_shared_ptr.debug_shared = debug; // Change loop count to run for a long time to monitor memory const int loopCount = 1; //50000; for (int i = 0; i < loopCount; i++) { new runme().runtest(); System.GC.Collect(); System.GC.WaitForPendingFinalizers(); if (i % 100 == 0) { System.Threading.Thread.Sleep(1); // give some time to the lower priority finalizer thread } } if (debug) { Console.WriteLine("Nearly finished"); } { int countdown = 500; int expectedCount = 1; while (true) { WaitForGC(); if (--countdown == 0) { break; } if (Klass.getTotal_count() == expectedCount) // Expect the one global variable (GlobalValue) { break; } } int actualCount = Klass.getTotal_count(); if (actualCount != expectedCount) { Console.Error.WriteLine("Expected count: " + expectedCount + " Actual count: " + actualCount); // Finalizers are not guaranteed to be run and sometimes they just don't } } int wrapper_count = li_boost_shared_ptr.shared_ptr_wrapper_count(); if (wrapper_count != li_boost_shared_ptr.NOT_COUNTING) { if (wrapper_count != 1) // Expect the one global variable (GlobalSmartValue) { throw new ApplicationException("shared_ptr wrapper count=" + wrapper_count); } } if (debug) { Console.WriteLine("Finished"); } }
private void runtest() { // simple shared_ptr usage - created in C++ { Klass k = new Klass("me oh my"); String val = k.getValue(); verifyValue("me oh my", val); verifyCount(1, k); } // simple shared_ptr usage - not created in C++ { Klass k = li_boost_shared_ptr.factorycreate(); String val = k.getValue(); verifyValue("factorycreate", val); verifyCount(1, k); } // pass by shared_ptr { Klass k = new Klass("me oh my"); Klass kret = li_boost_shared_ptr.smartpointertest(k); String val = kret.getValue(); verifyValue("me oh my smartpointertest", val); verifyCount(2, k); verifyCount(2, kret); } // pass by shared_ptr pointer { Klass k = new Klass("me oh my"); Klass kret = li_boost_shared_ptr.smartpointerpointertest(k); String val = kret.getValue(); verifyValue("me oh my smartpointerpointertest", val); verifyCount(2, k); verifyCount(2, kret); } // pass by shared_ptr reference { Klass k = new Klass("me oh my"); Klass kret = li_boost_shared_ptr.smartpointerreftest(k); String val = kret.getValue(); verifyValue("me oh my smartpointerreftest", val); verifyCount(2, k); verifyCount(2, kret); } // pass by shared_ptr pointer reference { Klass k = new Klass("me oh my"); Klass kret = li_boost_shared_ptr.smartpointerpointerreftest(k); String val = kret.getValue(); verifyValue("me oh my smartpointerpointerreftest", val); verifyCount(2, k); verifyCount(2, kret); } // const pass by shared_ptr { Klass k = new Klass("me oh my"); Klass kret = li_boost_shared_ptr.constsmartpointertest(k); String val = kret.getValue(); verifyValue("me oh my", val); verifyCount(2, k); verifyCount(2, kret); } // const pass by shared_ptr pointer { Klass k = new Klass("me oh my"); Klass kret = li_boost_shared_ptr.constsmartpointerpointertest(k); String val = kret.getValue(); verifyValue("me oh my", val); verifyCount(2, k); verifyCount(2, kret); } // const pass by shared_ptr reference { Klass k = new Klass("me oh my"); Klass kret = li_boost_shared_ptr.constsmartpointerreftest(k); String val = kret.getValue(); verifyValue("me oh my", val); verifyCount(2, k); verifyCount(2, kret); } // pass by value { Klass k = new Klass("me oh my"); Klass kret = li_boost_shared_ptr.valuetest(k); String val = kret.getValue(); verifyValue("me oh my valuetest", val); verifyCount(1, k); verifyCount(1, kret); } // pass by pointer { Klass k = new Klass("me oh my"); Klass kret = li_boost_shared_ptr.pointertest(k); String val = kret.getValue(); verifyValue("me oh my pointertest", val); verifyCount(1, k); verifyCount(1, kret); } // pass by reference { Klass k = new Klass("me oh my"); Klass kret = li_boost_shared_ptr.reftest(k); String val = kret.getValue(); verifyValue("me oh my reftest", val); verifyCount(1, k); verifyCount(1, kret); } // pass by pointer reference { Klass k = new Klass("me oh my"); Klass kret = li_boost_shared_ptr.pointerreftest(k); String val = kret.getValue(); verifyValue("me oh my pointerreftest", val); verifyCount(1, k); verifyCount(1, kret); } // null tests { Klass k = null; // TODO: add in const versions too if (li_boost_shared_ptr.smartpointertest(k) != null) throw new ApplicationException("return was not null"); if (li_boost_shared_ptr.smartpointerpointertest(k) != null) throw new ApplicationException("return was not null"); if (li_boost_shared_ptr.smartpointerreftest(k) != null) throw new ApplicationException("return was not null"); if (li_boost_shared_ptr.smartpointerpointerreftest(k) != null) throw new ApplicationException("return was not null"); if (li_boost_shared_ptr.nullsmartpointerpointertest(null) != "null pointer") throw new ApplicationException("not null smartpointer pointer"); try { li_boost_shared_ptr.valuetest(k); throw new ApplicationException("Failed to catch null pointer"); } catch (ArgumentNullException) {} if (li_boost_shared_ptr.pointertest(k) != null) throw new ApplicationException("return was not null"); try { li_boost_shared_ptr.reftest(k); throw new ApplicationException("Failed to catch null pointer"); } catch (ArgumentNullException) {} } // $owner { Klass k = li_boost_shared_ptr.pointerownertest(); String val = k.getValue(); verifyValue("pointerownertest", val); verifyCount(1, k); } { Klass k = li_boost_shared_ptr.smartpointerpointerownertest(); String val = k.getValue(); verifyValue("smartpointerpointerownertest", val); verifyCount(1, k); } ////////////////////////////////// Derived classes //////////////////////////////////////// // derived pass by shared_ptr { KlassDerived k = new KlassDerived("me oh my"); KlassDerived kret = li_boost_shared_ptr.derivedsmartptrtest(k); String val = kret.getValue(); verifyValue("me oh my derivedsmartptrtest-Derived", val); verifyCount(4, k); // includes two extra references for upcasts in the proxy classes verifyCount(4, kret); } // derived pass by shared_ptr pointer { KlassDerived k = new KlassDerived("me oh my"); KlassDerived kret = li_boost_shared_ptr.derivedsmartptrpointertest(k); String val = kret.getValue(); verifyValue("me oh my derivedsmartptrpointertest-Derived", val); verifyCount(4, k); // includes two extra references for upcasts in the proxy classes verifyCount(4, kret); } // derived pass by shared_ptr ref { KlassDerived k = new KlassDerived("me oh my"); KlassDerived kret = li_boost_shared_ptr.derivedsmartptrreftest(k); String val = kret.getValue(); verifyValue("me oh my derivedsmartptrreftest-Derived", val); verifyCount(4, k); // includes two extra references for upcasts in the proxy classes verifyCount(4, kret); } // derived pass by shared_ptr pointer ref { KlassDerived k = new KlassDerived("me oh my"); KlassDerived kret = li_boost_shared_ptr.derivedsmartptrpointerreftest(k); String val = kret.getValue(); verifyValue("me oh my derivedsmartptrpointerreftest-Derived", val); verifyCount(4, k); // includes two extra references for upcasts in the proxy classes verifyCount(4, kret); } // derived pass by pointer { KlassDerived k = new KlassDerived("me oh my"); KlassDerived kret = li_boost_shared_ptr.derivedpointertest(k); String val = kret.getValue(); verifyValue("me oh my derivedpointertest-Derived", val); verifyCount(2, k); // includes an extra reference for the upcast in the proxy class verifyCount(2, kret); } // derived pass by ref { KlassDerived k = new KlassDerived("me oh my"); KlassDerived kret = li_boost_shared_ptr.derivedreftest(k); String val = kret.getValue(); verifyValue("me oh my derivedreftest-Derived", val); verifyCount(2, k); // includes an extra reference for the upcast in the proxy class verifyCount(2, kret); } ////////////////////////////////// Derived and base class mixed //////////////////////////////////////// // pass by shared_ptr (mixed) { Klass k = new KlassDerived("me oh my"); Klass kret = li_boost_shared_ptr.smartpointertest(k); String val = kret.getValue(); verifyValue("me oh my smartpointertest-Derived", val); verifyCount(3, k); // an extra reference for the upcast in the proxy class verifyCount(3, kret); } // pass by shared_ptr pointer (mixed) { Klass k = new KlassDerived("me oh my"); Klass kret = li_boost_shared_ptr.smartpointerpointertest(k); String val = kret.getValue(); verifyValue("me oh my smartpointerpointertest-Derived", val); verifyCount(3, k); // an extra reference for the upcast in the proxy class verifyCount(3, kret); } // pass by shared_ptr reference (mixed) { Klass k = new KlassDerived("me oh my"); Klass kret = li_boost_shared_ptr.smartpointerreftest(k); String val = kret.getValue(); verifyValue("me oh my smartpointerreftest-Derived", val); verifyCount(3, k); // an extra reference for the upcast in the proxy class verifyCount(3, kret); } // pass by shared_ptr pointer reference (mixed) { Klass k = new KlassDerived("me oh my"); Klass kret = li_boost_shared_ptr.smartpointerpointerreftest(k); String val = kret.getValue(); verifyValue("me oh my smartpointerpointerreftest-Derived", val); verifyCount(3, k); // an extra reference for the upcast in the proxy class verifyCount(3, kret); } // pass by value (mixed) { Klass k = new KlassDerived("me oh my"); Klass kret = li_boost_shared_ptr.valuetest(k); String val = kret.getValue(); verifyValue("me oh my valuetest", val); // note slicing verifyCount(2, k); // an extra reference for the upcast in the proxy class verifyCount(1, kret); } // pass by pointer (mixed) { Klass k = new KlassDerived("me oh my"); Klass kret = li_boost_shared_ptr.pointertest(k); String val = kret.getValue(); verifyValue("me oh my pointertest-Derived", val); verifyCount(2, k); // an extra reference for the upcast in the proxy class verifyCount(1, kret); } // pass by ref (mixed) { Klass k = new KlassDerived("me oh my"); Klass kret = li_boost_shared_ptr.reftest(k); String val = kret.getValue(); verifyValue("me oh my reftest-Derived", val); verifyCount(2, k); // an extra reference for the upcast in the proxy class verifyCount(1, kret); } // 3rd derived class { Klass k = new Klass3rdDerived("me oh my"); String val = k.getValue(); verifyValue("me oh my-3rdDerived", val); verifyCount(3, k); // 3 classes in inheritance chain == 3 swigCPtr values val = li_boost_shared_ptr.test3rdupcast(k); verifyValue("me oh my-3rdDerived", val); verifyCount(3, k); } ////////////////////////////////// Member variables //////////////////////////////////////// // smart pointer by value { MemberVariables m = new MemberVariables(); Klass k = new Klass("smart member value"); m.SmartMemberValue = k; String val = k.getValue(); verifyValue("smart member value", val); verifyCount(2, k); Klass kmember = m.SmartMemberValue; val = kmember.getValue(); verifyValue("smart member value", val); verifyCount(3, kmember); verifyCount(3, k); m.Dispose(); verifyCount(2, kmember); verifyCount(2, k); } // smart pointer by pointer { MemberVariables m = new MemberVariables(); Klass k = new Klass("smart member pointer"); m.SmartMemberPointer = k; String val = k.getValue(); verifyValue("smart member pointer", val); verifyCount(1, k); Klass kmember = m.SmartMemberPointer; val = kmember.getValue(); verifyValue("smart member pointer", val); verifyCount(2, kmember); verifyCount(2, k); m.Dispose(); verifyCount(2, kmember); verifyCount(2, k); } // smart pointer by reference { MemberVariables m = new MemberVariables(); Klass k = new Klass("smart member reference"); m.SmartMemberReference = k; String val = k.getValue(); verifyValue("smart member reference", val); verifyCount(2, k); Klass kmember = m.SmartMemberReference; val = kmember.getValue(); verifyValue("smart member reference", val); verifyCount(3, kmember); verifyCount(3, k); // The C++ reference refers to SmartMemberValue... Klass kmemberVal = m.SmartMemberValue; val = kmember.getValue(); verifyValue("smart member reference", val); verifyCount(4, kmemberVal); verifyCount(4, kmember); verifyCount(4, k); m.Dispose(); verifyCount(3, kmember); verifyCount(3, k); } // plain by value { MemberVariables m = new MemberVariables(); Klass k = new Klass("plain member value"); m.MemberValue = k; String val = k.getValue(); verifyValue("plain member value", val); verifyCount(1, k); Klass kmember = m.MemberValue; val = kmember.getValue(); verifyValue("plain member value", val); verifyCount(1, kmember); verifyCount(1, k); m.Dispose(); verifyCount(1, kmember); verifyCount(1, k); } // plain by pointer { MemberVariables m = new MemberVariables(); Klass k = new Klass("plain member pointer"); m.MemberPointer = k; String val = k.getValue(); verifyValue("plain member pointer", val); verifyCount(1, k); Klass kmember = m.MemberPointer; val = kmember.getValue(); verifyValue("plain member pointer", val); verifyCount(1, kmember); verifyCount(1, k); m.Dispose(); verifyCount(1, kmember); verifyCount(1, k); } // plain by reference { MemberVariables m = new MemberVariables(); Klass k = new Klass("plain member reference"); m.MemberReference = k; String val = k.getValue(); verifyValue("plain member reference", val); verifyCount(1, k); Klass kmember = m.MemberReference; val = kmember.getValue(); verifyValue("plain member reference", val); verifyCount(1, kmember); verifyCount(1, k); m.Dispose(); verifyCount(1, kmember); verifyCount(1, k); } // null member variables { MemberVariables m = new MemberVariables(); // shared_ptr by value Klass k = m.SmartMemberValue; if (k != null) throw new ApplicationException("expected null"); m.SmartMemberValue = null; k = m.SmartMemberValue; if (k != null) throw new ApplicationException("expected null"); verifyCount(0, k); // plain by value try { m.MemberValue = null; throw new ApplicationException("Failed to catch null pointer"); } catch (ArgumentNullException) {} } ////////////////////////////////// Global variables //////////////////////////////////////// // smart pointer { Klass kglobal = li_boost_shared_ptr.GlobalSmartValue; if (kglobal != null) throw new ApplicationException("expected null"); Klass k = new Klass("smart global value"); li_boost_shared_ptr.GlobalSmartValue = k; verifyCount(2, k); kglobal = li_boost_shared_ptr.GlobalSmartValue; String val = kglobal.getValue(); verifyValue("smart global value", val); verifyCount(3, kglobal); verifyCount(3, k); verifyValue("smart global value", li_boost_shared_ptr.GlobalSmartValue.getValue()); li_boost_shared_ptr.GlobalSmartValue = null; } // plain value { Klass kglobal; Klass k = new Klass("global value"); li_boost_shared_ptr.GlobalValue = k; verifyCount(1, k); kglobal = li_boost_shared_ptr.GlobalValue; String val = kglobal.getValue(); verifyValue("global value", val); verifyCount(1, kglobal); verifyCount(1, k); verifyValue("global value", li_boost_shared_ptr.GlobalValue.getValue()); try { li_boost_shared_ptr.GlobalValue = null; throw new ApplicationException("Failed to catch null pointer"); } catch (ArgumentNullException) {} } // plain pointer { Klass kglobal = li_boost_shared_ptr.GlobalPointer; if (kglobal != null) throw new ApplicationException("expected null"); Klass k = new Klass("global pointer"); li_boost_shared_ptr.GlobalPointer = k; verifyCount(1, k); kglobal = li_boost_shared_ptr.GlobalPointer; String val = kglobal.getValue(); verifyValue("global pointer", val); verifyCount(1, kglobal); verifyCount(1, k); li_boost_shared_ptr.GlobalPointer = null; } // plain reference { Klass kglobal; Klass k = new Klass("global reference"); li_boost_shared_ptr.GlobalReference = k; verifyCount(1, k); kglobal = li_boost_shared_ptr.GlobalReference; String val = kglobal.getValue(); verifyValue("global reference", val); verifyCount(1, kglobal); verifyCount(1, k); try { li_boost_shared_ptr.GlobalReference = null; throw new ApplicationException("Failed to catch null pointer"); } catch (ArgumentNullException) {} } ////////////////////////////////// Templates //////////////////////////////////////// { PairIntDouble pid = new PairIntDouble(10, 20.2); if (pid.baseVal1 != 20 || pid.baseVal2 != 40.4) throw new ApplicationException("Base values wrong"); if (pid.val1 != 10 || pid.val2 != 20.2) throw new ApplicationException("Derived Values wrong"); } }
public static void Main() { Klass k1 = li_std_auto_ptr.makeKlassAutoPtr("first"); if (k1.getLabel() != "first") { throw new Exception("wrong object label"); } Klass k2 = li_std_auto_ptr.makeKlassAutoPtr("second"); if (Klass.getTotal_count() != 2) { throw new Exception("number of objects should be 2"); } k1 = null; { int countdown = 500; int expectedCount = 1; while (true) { WaitForGC(); if (--countdown == 0) { break; } if (Klass.getTotal_count() == expectedCount) { break; } } ; int actualCount = Klass.getTotal_count(); if (actualCount != expectedCount) { throw new ApplicationException("Expected count: " + expectedCount + " Actual count: " + actualCount); } } if (k2.getLabel() != "second") { throw new Exception("wrong object label"); } k2 = null; { int countdown = 500; int expectedCount = 0; while (true) { WaitForGC(); if (--countdown == 0) { break; } if (Klass.getTotal_count() == expectedCount) { break; } } int actualCount = Klass.getTotal_count(); if (actualCount != expectedCount) { throw new ApplicationException("Expected count: " + expectedCount + " Actual count: " + actualCount); } } }
private void runtest() { // simple shared_ptr usage - created in C++ { Klass k = new Klass("me oh my"); String val = k.getValue(); verifyValue("me oh my", val); verifyCount(1, k); } // simple shared_ptr usage - not created in C++ { Klass k = li_boost_shared_ptr.factorycreate(); String val = k.getValue(); verifyValue("factorycreate", val); verifyCount(1, k); } // pass by shared_ptr { Klass k = new Klass("me oh my"); Klass kret = li_boost_shared_ptr.smartpointertest(k); String val = kret.getValue(); verifyValue("me oh my smartpointertest", val); verifyCount(2, k); verifyCount(2, kret); } // pass by shared_ptr pointer { Klass k = new Klass("me oh my"); Klass kret = li_boost_shared_ptr.smartpointerpointertest(k); String val = kret.getValue(); verifyValue("me oh my smartpointerpointertest", val); verifyCount(2, k); verifyCount(2, kret); } // pass by shared_ptr reference { Klass k = new Klass("me oh my"); Klass kret = li_boost_shared_ptr.smartpointerreftest(k); String val = kret.getValue(); verifyValue("me oh my smartpointerreftest", val); verifyCount(2, k); verifyCount(2, kret); } // pass by shared_ptr pointer reference { Klass k = new Klass("me oh my"); Klass kret = li_boost_shared_ptr.smartpointerpointerreftest(k); String val = kret.getValue(); verifyValue("me oh my smartpointerpointerreftest", val); verifyCount(2, k); verifyCount(2, kret); } // const pass by shared_ptr { Klass k = new Klass("me oh my"); Klass kret = li_boost_shared_ptr.constsmartpointertest(k); String val = kret.getValue(); verifyValue("me oh my", val); verifyCount(2, k); verifyCount(2, kret); } // const pass by shared_ptr pointer { Klass k = new Klass("me oh my"); Klass kret = li_boost_shared_ptr.constsmartpointerpointertest(k); String val = kret.getValue(); verifyValue("me oh my", val); verifyCount(2, k); verifyCount(2, kret); } // const pass by shared_ptr reference { Klass k = new Klass("me oh my"); Klass kret = li_boost_shared_ptr.constsmartpointerreftest(k); String val = kret.getValue(); verifyValue("me oh my", val); verifyCount(2, k); verifyCount(2, kret); } // pass by value { Klass k = new Klass("me oh my"); Klass kret = li_boost_shared_ptr.valuetest(k); String val = kret.getValue(); verifyValue("me oh my valuetest", val); verifyCount(1, k); verifyCount(1, kret); } // pass by pointer { Klass k = new Klass("me oh my"); Klass kret = li_boost_shared_ptr.pointertest(k); String val = kret.getValue(); verifyValue("me oh my pointertest", val); verifyCount(1, k); verifyCount(1, kret); } // pass by reference { Klass k = new Klass("me oh my"); Klass kret = li_boost_shared_ptr.reftest(k); String val = kret.getValue(); verifyValue("me oh my reftest", val); verifyCount(1, k); verifyCount(1, kret); } // pass by pointer reference { Klass k = new Klass("me oh my"); Klass kret = li_boost_shared_ptr.pointerreftest(k); String val = kret.getValue(); verifyValue("me oh my pointerreftest", val); verifyCount(1, k); verifyCount(1, kret); } // null tests { Klass k = null; // TODO: add in const versions too if (li_boost_shared_ptr.smartpointertest(k) != null) { throw new ApplicationException("return was not null"); } if (li_boost_shared_ptr.smartpointerpointertest(k) != null) { throw new ApplicationException("return was not null"); } if (li_boost_shared_ptr.smartpointerreftest(k) != null) { throw new ApplicationException("return was not null"); } if (li_boost_shared_ptr.smartpointerpointerreftest(k) != null) { throw new ApplicationException("return was not null"); } if (li_boost_shared_ptr.nullsmartpointerpointertest(null) != "null pointer") { throw new ApplicationException("not null smartpointer pointer"); } try { li_boost_shared_ptr.valuetest(k); throw new ApplicationException("Failed to catch null pointer"); } catch (ArgumentNullException) {} if (li_boost_shared_ptr.pointertest(k) != null) { throw new ApplicationException("return was not null"); } try { li_boost_shared_ptr.reftest(k); throw new ApplicationException("Failed to catch null pointer"); } catch (ArgumentNullException) {} } // $owner { Klass k = li_boost_shared_ptr.pointerownertest(); String val = k.getValue(); verifyValue("pointerownertest", val); verifyCount(1, k); } { Klass k = li_boost_shared_ptr.smartpointerpointerownertest(); String val = k.getValue(); verifyValue("smartpointerpointerownertest", val); verifyCount(1, k); } ////////////////////////////////// Derived classes //////////////////////////////////////// // derived pass by shared_ptr { KlassDerived k = new KlassDerived("me oh my"); KlassDerived kret = li_boost_shared_ptr.derivedsmartptrtest(k); String val = kret.getValue(); verifyValue("me oh my derivedsmartptrtest-Derived", val); verifyCount(4, k); // includes two extra references for upcasts in the proxy classes verifyCount(4, kret); } // derived pass by shared_ptr pointer { KlassDerived k = new KlassDerived("me oh my"); KlassDerived kret = li_boost_shared_ptr.derivedsmartptrpointertest(k); String val = kret.getValue(); verifyValue("me oh my derivedsmartptrpointertest-Derived", val); verifyCount(4, k); // includes two extra references for upcasts in the proxy classes verifyCount(4, kret); } // derived pass by shared_ptr ref { KlassDerived k = new KlassDerived("me oh my"); KlassDerived kret = li_boost_shared_ptr.derivedsmartptrreftest(k); String val = kret.getValue(); verifyValue("me oh my derivedsmartptrreftest-Derived", val); verifyCount(4, k); // includes two extra references for upcasts in the proxy classes verifyCount(4, kret); } // derived pass by shared_ptr pointer ref { KlassDerived k = new KlassDerived("me oh my"); KlassDerived kret = li_boost_shared_ptr.derivedsmartptrpointerreftest(k); String val = kret.getValue(); verifyValue("me oh my derivedsmartptrpointerreftest-Derived", val); verifyCount(4, k); // includes two extra references for upcasts in the proxy classes verifyCount(4, kret); } // derived pass by pointer { KlassDerived k = new KlassDerived("me oh my"); KlassDerived kret = li_boost_shared_ptr.derivedpointertest(k); String val = kret.getValue(); verifyValue("me oh my derivedpointertest-Derived", val); verifyCount(2, k); // includes an extra reference for the upcast in the proxy class verifyCount(2, kret); } // derived pass by ref { KlassDerived k = new KlassDerived("me oh my"); KlassDerived kret = li_boost_shared_ptr.derivedreftest(k); String val = kret.getValue(); verifyValue("me oh my derivedreftest-Derived", val); verifyCount(2, k); // includes an extra reference for the upcast in the proxy class verifyCount(2, kret); } ////////////////////////////////// Derived and base class mixed //////////////////////////////////////// // pass by shared_ptr (mixed) { Klass k = new KlassDerived("me oh my"); Klass kret = li_boost_shared_ptr.smartpointertest(k); String val = kret.getValue(); verifyValue("me oh my smartpointertest-Derived", val); verifyCount(3, k); // an extra reference for the upcast in the proxy class verifyCount(3, kret); } // pass by shared_ptr pointer (mixed) { Klass k = new KlassDerived("me oh my"); Klass kret = li_boost_shared_ptr.smartpointerpointertest(k); String val = kret.getValue(); verifyValue("me oh my smartpointerpointertest-Derived", val); verifyCount(3, k); // an extra reference for the upcast in the proxy class verifyCount(3, kret); } // pass by shared_ptr reference (mixed) { Klass k = new KlassDerived("me oh my"); Klass kret = li_boost_shared_ptr.smartpointerreftest(k); String val = kret.getValue(); verifyValue("me oh my smartpointerreftest-Derived", val); verifyCount(3, k); // an extra reference for the upcast in the proxy class verifyCount(3, kret); } // pass by shared_ptr pointer reference (mixed) { Klass k = new KlassDerived("me oh my"); Klass kret = li_boost_shared_ptr.smartpointerpointerreftest(k); String val = kret.getValue(); verifyValue("me oh my smartpointerpointerreftest-Derived", val); verifyCount(3, k); // an extra reference for the upcast in the proxy class verifyCount(3, kret); } // pass by value (mixed) { Klass k = new KlassDerived("me oh my"); Klass kret = li_boost_shared_ptr.valuetest(k); String val = kret.getValue(); verifyValue("me oh my valuetest", val); // note slicing verifyCount(2, k); // an extra reference for the upcast in the proxy class verifyCount(1, kret); } // pass by pointer (mixed) { Klass k = new KlassDerived("me oh my"); Klass kret = li_boost_shared_ptr.pointertest(k); String val = kret.getValue(); verifyValue("me oh my pointertest-Derived", val); verifyCount(2, k); // an extra reference for the upcast in the proxy class verifyCount(1, kret); } // pass by ref (mixed) { Klass k = new KlassDerived("me oh my"); Klass kret = li_boost_shared_ptr.reftest(k); String val = kret.getValue(); verifyValue("me oh my reftest-Derived", val); verifyCount(2, k); // an extra reference for the upcast in the proxy class verifyCount(1, kret); } // 3rd derived class { Klass k = new Klass3rdDerived("me oh my"); String val = k.getValue(); verifyValue("me oh my-3rdDerived", val); verifyCount(3, k); // 3 classes in inheritance chain == 3 swigCPtr values val = li_boost_shared_ptr.test3rdupcast(k); verifyValue("me oh my-3rdDerived", val); verifyCount(3, k); } ////////////////////////////////// Member variables //////////////////////////////////////// // smart pointer by value { MemberVariables m = new MemberVariables(); Klass k = new Klass("smart member value"); m.SmartMemberValue = k; String val = k.getValue(); verifyValue("smart member value", val); verifyCount(2, k); Klass kmember = m.SmartMemberValue; val = kmember.getValue(); verifyValue("smart member value", val); verifyCount(3, kmember); verifyCount(3, k); m.Dispose(); verifyCount(2, kmember); verifyCount(2, k); } // smart pointer by pointer { MemberVariables m = new MemberVariables(); Klass k = new Klass("smart member pointer"); m.SmartMemberPointer = k; String val = k.getValue(); verifyValue("smart member pointer", val); verifyCount(1, k); Klass kmember = m.SmartMemberPointer; val = kmember.getValue(); verifyValue("smart member pointer", val); verifyCount(2, kmember); verifyCount(2, k); m.Dispose(); verifyCount(2, kmember); verifyCount(2, k); } // smart pointer by reference { MemberVariables m = new MemberVariables(); Klass k = new Klass("smart member reference"); m.SmartMemberReference = k; String val = k.getValue(); verifyValue("smart member reference", val); verifyCount(2, k); Klass kmember = m.SmartMemberReference; val = kmember.getValue(); verifyValue("smart member reference", val); verifyCount(3, kmember); verifyCount(3, k); // The C++ reference refers to SmartMemberValue... Klass kmemberVal = m.SmartMemberValue; val = kmember.getValue(); verifyValue("smart member reference", val); verifyCount(4, kmemberVal); verifyCount(4, kmember); verifyCount(4, k); m.Dispose(); verifyCount(3, kmember); verifyCount(3, k); } // plain by value { MemberVariables m = new MemberVariables(); Klass k = new Klass("plain member value"); m.MemberValue = k; String val = k.getValue(); verifyValue("plain member value", val); verifyCount(1, k); Klass kmember = m.MemberValue; val = kmember.getValue(); verifyValue("plain member value", val); verifyCount(1, kmember); verifyCount(1, k); m.Dispose(); verifyCount(1, kmember); verifyCount(1, k); } // plain by pointer { MemberVariables m = new MemberVariables(); Klass k = new Klass("plain member pointer"); m.MemberPointer = k; String val = k.getValue(); verifyValue("plain member pointer", val); verifyCount(1, k); Klass kmember = m.MemberPointer; val = kmember.getValue(); verifyValue("plain member pointer", val); verifyCount(1, kmember); verifyCount(1, k); m.Dispose(); verifyCount(1, kmember); verifyCount(1, k); } // plain by reference { MemberVariables m = new MemberVariables(); Klass k = new Klass("plain member reference"); m.MemberReference = k; String val = k.getValue(); verifyValue("plain member reference", val); verifyCount(1, k); Klass kmember = m.MemberReference; val = kmember.getValue(); verifyValue("plain member reference", val); verifyCount(1, kmember); verifyCount(1, k); m.Dispose(); verifyCount(1, kmember); verifyCount(1, k); } // null member variables { MemberVariables m = new MemberVariables(); // shared_ptr by value Klass k = m.SmartMemberValue; if (k != null) { throw new ApplicationException("expected null"); } m.SmartMemberValue = null; k = m.SmartMemberValue; if (k != null) { throw new ApplicationException("expected null"); } verifyCount(0, k); // plain by value try { m.MemberValue = null; throw new ApplicationException("Failed to catch null pointer"); } catch (ArgumentNullException) {} } ////////////////////////////////// Global variables //////////////////////////////////////// // smart pointer { Klass kglobal = li_boost_shared_ptr.GlobalSmartValue; if (kglobal != null) { throw new ApplicationException("expected null"); } Klass k = new Klass("smart global value"); li_boost_shared_ptr.GlobalSmartValue = k; verifyCount(2, k); kglobal = li_boost_shared_ptr.GlobalSmartValue; String val = kglobal.getValue(); verifyValue("smart global value", val); verifyCount(3, kglobal); verifyCount(3, k); verifyValue("smart global value", li_boost_shared_ptr.GlobalSmartValue.getValue()); li_boost_shared_ptr.GlobalSmartValue = null; } // plain value { Klass kglobal; Klass k = new Klass("global value"); li_boost_shared_ptr.GlobalValue = k; verifyCount(1, k); kglobal = li_boost_shared_ptr.GlobalValue; String val = kglobal.getValue(); verifyValue("global value", val); verifyCount(1, kglobal); verifyCount(1, k); verifyValue("global value", li_boost_shared_ptr.GlobalValue.getValue()); try { li_boost_shared_ptr.GlobalValue = null; throw new ApplicationException("Failed to catch null pointer"); } catch (ArgumentNullException) {} } // plain pointer { Klass kglobal = li_boost_shared_ptr.GlobalPointer; if (kglobal != null) { throw new ApplicationException("expected null"); } Klass k = new Klass("global pointer"); li_boost_shared_ptr.GlobalPointer = k; verifyCount(1, k); kglobal = li_boost_shared_ptr.GlobalPointer; String val = kglobal.getValue(); verifyValue("global pointer", val); verifyCount(1, kglobal); verifyCount(1, k); li_boost_shared_ptr.GlobalPointer = null; } // plain reference { Klass kglobal; Klass k = new Klass("global reference"); li_boost_shared_ptr.GlobalReference = k; verifyCount(1, k); kglobal = li_boost_shared_ptr.GlobalReference; String val = kglobal.getValue(); verifyValue("global reference", val); verifyCount(1, kglobal); verifyCount(1, k); try { li_boost_shared_ptr.GlobalReference = null; throw new ApplicationException("Failed to catch null pointer"); } catch (ArgumentNullException) {} } ////////////////////////////////// Templates //////////////////////////////////////// { PairIntDouble pid = new PairIntDouble(10, 20.2); if (pid.baseVal1 != 20 || pid.baseVal2 != 40.4) { throw new ApplicationException("Base values wrong"); } if (pid.val1 != 10 || pid.val2 != 20.2) { throw new ApplicationException("Derived Values wrong"); } } }
private void GenerateSchedule() { DBobjects.Entities.Clear(); int maxIdKabinet = DBobjects.Entities.Kabinet.OrderByDescending(p => p.ID_Kabinet).FirstOrDefault().ID_Kabinet + 1; int maxIdKlass = DBobjects.Entities.Klass.OrderByDescending(p => p.ID_Klass).FirstOrDefault().ID_Klass + 1; int maxIdUchitel = DBobjects.Entities.Uchitel.OrderByDescending(p => p.ID_Uchitel).FirstOrDefault().ID_Uchitel + 1; int[,,] ZanKabinet = new int [maxIdKabinet, 6, 7]; int[,,] ZanKlass = new int[maxIdKlass, 6, 7]; int[,,] ZanUchitel = new int[maxIdUchitel, 6, 7]; int[,] FreeKabs = new int[30, 2]; Klass [] klasses = DBobjects.Entities.Klass.ToArray(); Random RANDMASS = new Random(); for (int i = klasses.Length - 1; i >= 1; i--) { int j = RANDMASS.Next(i + 1); Klass tmpM = klasses[j]; klasses[j] = klasses[i]; klasses[i] = tmpM; } int Lk = klasses.Count(); int ik = 0; List <Predmet> predmets = new List <Predmet>(); while ((ik < Lk)) { var tmp = klasses[ik]; List <KlassPredmet> klassPr = DBobjects.Entities.KlassPredmet.Where(p => p.ID_Klass == tmp.ID_Klass).ToList(); foreach (KlassPredmet klPr in klassPr) { predmets.Add(klPr.Predmet); } predmets = predmets.Distinct().ToList();//список предметов для класса int Lp = predmets.Count(); for (int ip = 0; ip < Lp; ip++) { var tmpP = predmets[ip]; if (DBobjects.Entities.UchitelKlassPredmet.Where(p => p.KlassPredmet.ID_Predmet == tmpP.ID_Predmet && p.KlassPredmet.Klass.ID_Klass == tmp.ID_Klass).Count() > 0) { UchitelKlassPredmet klascPrUch = DBobjects.Entities.UchitelKlassPredmet.FirstOrDefault(p => p.KlassPredmet.ID_Predmet == tmpP.ID_Predmet && p.KlassPredmet.Klass.ID_Klass == tmp.ID_Klass); int uc = klascPrUch.ID_Uchitel; int N = klascPrUch.KlassPredmet.UrokovVNedelyu; List <Kabinet> kabinets = new List <Kabinet>(); for (int i = 1; i <= N; i++) { List <KabinetPredmet> kabPredm = DBobjects.Entities.KabinetPredmet.Where(p => p.ID_Predmet == tmpP.ID_Predmet).ToList(); foreach (KabinetPredmet kabPr in kabPredm) { kabinets.Add(kabPr.Kabinet); } int Lkab = kabinets.Count(); for (int ikab = 0; ikab < Lkab;) { var tmpKab = kabinets[ikab]; int fk = -1; for (int iwd = 1; iwd <= 5; iwd++) { for (int iur = 1; iur <= 6; iur++) { if (ZanKabinet[tmpKab.ID_Kabinet, iwd, iur] == 0 && ZanKlass[tmp.ID_Klass, iwd, iur] == 0 && ZanUchitel[uc, iwd, iur] == 0) { fk = fk + 1; FreeKabs[fk, 0] = iwd; FreeKabs[fk, 1] = iur; } } } if (fk >= 0) { Random rand = new Random(); var rndwu = rand.Next(fk); var wd = FreeKabs[rndwu, 0]; var ur = FreeKabs[rndwu, 1]; ZanKabinet[tmpKab.ID_Kabinet, wd, ur] = 1; ZanKlass[tmp.ID_Klass, wd, ur] = 1; ZanUchitel[uc, wd, ur] = 1; Urok urok = new Urok(); urok.ID_Kabinet = tmpKab.ID_Kabinet; urok.ID_Klass = tmp.ID_Klass; urok.ID_Predmet = tmpP.ID_Predmet; urok.ID_Uchitel = uc; urok.Weekday = wd; urok.Nomer_uroka = ur; DBobjects.Entities.Urok.Add(urok); DBobjects.Entities.SaveChanges(); } break; } } } } ik++; } }