implemented new code splitting mechanism (split to equal slices)
[deliverable/titan.core.git] / compiler2 / CodeGenHelper.hh
index e11ff0b3fc92544503627b5e811586b679b3c124..97ba724e724b8e4ef089672f90cf8980770bb0db 100644 (file)
@@ -8,6 +8,7 @@
  * Contributors:
  *   Balasko, Jeno
  *   Raduly, Csaba
+ *   Szabo, Bence Janos
  *   Zalanyi, Balazs Andor
  *
  ******************************************************************************/
@@ -26,14 +27,15 @@ class Definition;
 }
 
 namespace Common {
-
+    
 class CodeGenHelper {
 public:
   enum split_type {
     SPLIT_NONE,         ///< original code generation
     SPLIT_BY_KIND,      ///< place different kind of types in their own file
     SPLIT_BY_NAME,      ///< place all definitions/assignments in their own file
-    SPLIT_BY_HEURISTICS ///< heuristic function will decide the structure
+    SPLIT_BY_HEURISTICS,///< heuristic function will decide the structure
+    SPLIT_TO_SLICES       ///< split large files into smaller ones
   };
 
 private:
@@ -57,6 +59,7 @@ private:
 
   output_map_t generated_code;
   split_type split_mode;
+  unsigned int slice_num;
 
   struct module_names_t {
     string name;
@@ -86,6 +89,14 @@ public:
   void finalize_generation(Type* type);
 
   void set_current_module(const string& name);
+  
+  static void update_intervals(output_struct* const output);
+  
+  size_t size_of_sources(output_struct * const output);
+  
+  size_t get_next_chunk_pos(const output_struct * const from, output_struct * const to, const size_t base_pos, const size_t chunk_size);
+  
+  void get_chunk_from_poslist(const char* from, char *& to, const size_t interval_array[], const size_t interval_array_size,  const size_t base_pos, const size_t chunk_size, size_t& pos);
 
   void write_output();
 
This page took 0.024875 seconds and 5 git commands to generate.