src/file.cpp

changeset 498
791c831c8020
parent 497
c51941e590b6
child 500
cad8cdc42a64
equal deleted inserted replaced
497:c51941e590b6 498:791c831c8020
131 // Clear the cache as well 131 // Clear the cache as well
132 for (LDObject* obj : cache()) 132 for (LDObject* obj : cache())
133 delete obj; 133 delete obj;
134 134
135 // Remove this file from the list of files 135 // Remove this file from the list of files
136 for (ulong i = 0; i < g_loadedFiles.size(); ++i) 136 for (int i = 0; i < g_loadedFiles.size(); ++i)
137 { if (g_loadedFiles[i] == this) 137 { if (g_loadedFiles[i] == this)
138 { g_loadedFiles.erase (i); 138 { g_loadedFiles.erase (i);
139 break; 139 break;
140 } 140 }
141 } 141 }
359 g_aborted = true; 359 g_aborted = true;
360 } 360 }
361 361
362 // ============================================================================= 362 // =============================================================================
363 // ----------------------------------------------------------------------------- 363 // -----------------------------------------------------------------------------
364 List<LDObject*> loadFileContents (File* f, ulong* numWarnings, bool* ok) 364 List<LDObject*> loadFileContents (File* f, int* numWarnings, bool* ok)
365 { List<str> lines; 365 { List<str> lines;
366 List<LDObject*> objs; 366 List<LDObject*> objs;
367 367
368 if (numWarnings) 368 if (numWarnings)
369 *numWarnings = 0; 369 *numWarnings = 0;
418 return null; 418 return null;
419 419
420 LDFile* load = new LDFile; 420 LDFile* load = new LDFile;
421 load->setName (path); 421 load->setName (path);
422 422
423 ulong numWarnings; 423 int numWarnings;
424 bool ok; 424 bool ok;
425 List<LDObject*> objs = loadFileContents (f, &numWarnings, &ok); 425 List<LDObject*> objs = loadFileContents (f, &numWarnings, &ok);
426 426
427 if (!ok) 427 if (!ok)
428 return null; 428 return null;
429 429
430 for (LDObject * obj : objs) 430 for (LDObject* obj : objs)
431 load->addObject (obj); 431 load->addObject (obj);
432 432
433 delete f; 433 delete f;
434 g_loadedFiles << load; 434 g_loadedFiles << load;
435 435
639 #define CHECK_TOKEN_COUNT(N) \ 639 #define CHECK_TOKEN_COUNT(N) \
640 if (tokens.size() != N) \ 640 if (tokens.size() != N) \
641 return new LDError (line, "Bad amount of tokens"); 641 return new LDError (line, "Bad amount of tokens");
642 642
643 #define CHECK_TOKEN_NUMBERS(MIN, MAX) \ 643 #define CHECK_TOKEN_NUMBERS(MIN, MAX) \
644 for (ushort i = MIN; i <= MAX; ++i) \ 644 for (int i = MIN; i <= MAX; ++i) \
645 if (!isNumber (tokens[i])) \ 645 if (!isNumber (tokens[i])) \
646 return new LDError (line, fmt ("Token #%1 was `%2`, expected a number", (i + 1), tokens[i])); 646 return new LDError (line, fmt ("Token #%1 was `%2`, expected a number", (i + 1), tokens[i]));
647 647
648 // ============================================================================= 648 // =============================================================================
649 // ----------------------------------------------------------------------------- 649 // -----------------------------------------------------------------------------
650 static vertex parseVertex (QStringList& s, const ushort n) 650 static vertex parseVertex (QStringList& s, const int n)
651 { vertex v; 651 { vertex v;
652 652
653 for (const Axis ax : g_Axes) 653 for (const Axis ax : g_Axes)
654 v[ax] = atof (s[n + ax]); 654 v[ax] = atof (s[n + ax]);
655 655
873 LDFile::closeUnused(); 873 LDFile::closeUnused();
874 } 874 }
875 875
876 // ============================================================================= 876 // =============================================================================
877 // ----------------------------------------------------------------------------- 877 // -----------------------------------------------------------------------------
878 ulong LDFile::addObject (LDObject* obj) 878 int LDFile::addObject (LDObject* obj)
879 { m_history.add (new AddHistory (objects().size(), obj)); 879 { m_history.add (new AddHistory (objects().size(), obj));
880 m_objects << obj; 880 m_objects << obj;
881 881
882 if (obj->getType() == LDObject::Vertex) 882 if (obj->getType() == LDObject::Vertex)
883 m_vertices << obj; 883 m_vertices << obj;
894 addObject (obj); 894 addObject (obj);
895 } 895 }
896 896
897 // ============================================================================= 897 // =============================================================================
898 // ----------------------------------------------------------------------------- 898 // -----------------------------------------------------------------------------
899 void LDFile::insertObj (const ulong pos, LDObject* obj) 899 void LDFile::insertObj (int pos, LDObject* obj)
900 { m_history.add (new AddHistory (pos, obj)); 900 { m_history.add (new AddHistory (pos, obj));
901 m_objects.insert (pos, obj); 901 m_objects.insert (pos, obj);
902 obj->setFile (this); 902 obj->setFile (this);
903 } 903 }
904 904
905 // ============================================================================= 905 // =============================================================================
906 // ----------------------------------------------------------------------------- 906 // -----------------------------------------------------------------------------
907 void LDFile::forgetObject (LDObject* obj) 907 void LDFile::forgetObject (LDObject* obj)
908 { ulong idx = obj->getIndex(); 908 { int idx = obj->getIndex();
909 m_history.add (new DelHistory (idx, obj)); 909 m_history.add (new DelHistory (idx, obj));
910 m_objects.erase (idx); 910 m_objects.erase (idx);
911 obj->setFile (null); 911 obj->setFile (null);
912 } 912 }
913 913
921 return true; 921 return true;
922 } 922 }
923 923
924 // ============================================================================= 924 // =============================================================================
925 // ----------------------------------------------------------------------------- 925 // -----------------------------------------------------------------------------
926 void LDFile::setObject (ulong idx, LDObject* obj) 926 void LDFile::setObject (int idx, LDObject* obj)
927 { assert (idx < numObjs()); 927 { assert (idx < numObjs());
928 928
929 // Mark this change to history 929 // Mark this change to history
930 str oldcode = object (idx)->raw(); 930 str oldcode = object (idx)->raw();
931 str newcode = obj->raw(); 931 str newcode = obj->raw();
985 g_loadedFiles << filesUsed; 985 g_loadedFiles << filesUsed;
986 } 986 }
987 987
988 // ============================================================================= 988 // =============================================================================
989 // ----------------------------------------------------------------------------- 989 // -----------------------------------------------------------------------------
990 LDObject* LDFile::object (ulong pos) const 990 LDObject* LDFile::object (int pos) const
991 { if (m_objects.size() <= pos) 991 { if (m_objects.size() <= pos)
992 return null; 992 return null;
993 993
994 return m_objects[pos]; 994 return m_objects[pos];
995 } 995 }
996 996
997 // ============================================================================= 997 // =============================================================================
998 // ----------------------------------------------------------------------------- 998 // -----------------------------------------------------------------------------
999 LDObject* LDFile::obj (ulong pos) const 999 LDObject* LDFile::obj (int pos) const
1000 { return object (pos); 1000 { return object (pos);
1001 } 1001 }
1002 1002
1003 // ============================================================================= 1003 // =============================================================================
1004 // ----------------------------------------------------------------------------- 1004 // -----------------------------------------------------------------------------
1005 ulong LDFile::numObjs() const 1005 int LDFile::numObjs() const
1006 { return objects().size(); 1006 { return objects().size();
1007 } 1007 }
1008 1008
1009 // ============================================================================= 1009 // =============================================================================
1010 // ----------------------------------------------------------------------------- 1010 // -----------------------------------------------------------------------------

mercurial