Преглед изворни кода

Explicit instantiation

Former-commit-id: be547447d46ef62abfbf7a5768fdce3bd5951de5
kavanl пре 13 година
родитељ
комит
49d35546d5
3 измењених фајлова са 40 додато и 8 уклоњено
  1. 1 0
      create_shader_program.h
  2. 10 6
      example_fun.cpp
  3. 29 2
      readMESH.h

+ 1 - 0
create_shader_program.h

@@ -104,6 +104,7 @@ inline bool igl::create_shader_program(
   }
   }
   // Link program
   // Link program
   glLinkProgram(id);
   glLinkProgram(id);
+
   // print log if any
   // print log if any
   igl::print_program_info_log(id);
   igl::print_program_info_log(id);
 
 

+ 10 - 6
example_fun.cpp

@@ -10,10 +10,14 @@ IGL_INLINE bool igl::example_fun(const Printable & input)
 }
 }
 
 
 #ifndef IGL_HEADER_ONLY
 #ifndef IGL_HEADER_ONLY
-// List all useful instanciations here
-namespace igl_explicit_instanciations
-{
-  bool (*example_fun_A)(const double &) = &igl::example_fun<double>;
-  bool (*example_fun_B)(const int &) = &igl::example_fun<int>;
-}
+
+template bool igl::example_fun<double>(const double& input);
+template bool igl::example_fun<int>(const int& input);
+
+//// List all useful instanciations here
+//namespace igl_explicit_instanciations
+//{
+//  bool (*example_fun_A)(const double &) = &igl::example_fun<double>;
+//  bool (*example_fun_B)(const int &) = &igl::example_fun<int>;
+//}
 #endif
 #endif

+ 29 - 2
readMESH.h

@@ -142,16 +142,27 @@ inline bool igl::readMESH(
     fclose(mesh_file);
     fclose(mesh_file);
     return false;
     return false;
   }
   }
+
+  //fgets(line,LINE_MAX,mesh_file);
+
+#ifdef __APPLE__
   size_t number_of_vertices;
   size_t number_of_vertices;
-  if(1 != fscanf(mesh_file," %ld",&number_of_vertices))
+#else
+  int number_of_vertices;
+#endif
+  if(1 != fscanf(mesh_file," %ld",&number_of_vertices) || number_of_vertices > 1000000000)
   {
   {
-    fprintf(stderr,"Error: expecting number of vertices...\n");
+    fprintf(stderr,"Error: expecting number of vertices less than 10^9...\n");
     fclose(mesh_file);
     fclose(mesh_file);
     return false;
     return false;
   }
   }
   // allocate space for vertices
   // allocate space for vertices
   V.resize(number_of_vertices,vector<Scalar>(3,0));
   V.resize(number_of_vertices,vector<Scalar>(3,0));
+#ifdef __APPLE__
   size_t extra;
   size_t extra;
+#else
+  int extra;
+#endif
   for(size_t i = 0;i<number_of_vertices;i++)
   for(size_t i = 0;i<number_of_vertices;i++)
   {
   {
     double x,y,z;
     double x,y,z;
@@ -182,7 +193,11 @@ inline bool igl::readMESH(
     fclose(mesh_file);
     fclose(mesh_file);
     return false;
     return false;
   }
   }
+#ifdef __APPLE__
   size_t number_of_triangles;
   size_t number_of_triangles;
+#else
+  int number_of_triangles;
+#endif
   if(1 != fscanf(mesh_file," %ld",&number_of_triangles))
   if(1 != fscanf(mesh_file," %ld",&number_of_triangles))
   {
   {
     fprintf(stderr,"Error: expecting number of triangles...\n");
     fprintf(stderr,"Error: expecting number of triangles...\n");
@@ -192,7 +207,11 @@ inline bool igl::readMESH(
   // allocate space for triangles
   // allocate space for triangles
   F.resize(number_of_triangles,vector<Index>(3));
   F.resize(number_of_triangles,vector<Index>(3));
   // triangle indices
   // triangle indices
+#ifdef __APPLE__
   size_t tri[3];
   size_t tri[3];
+#else
+  int tri[3];
+#endif
   for(size_t i = 0;i<number_of_triangles;i++)
   for(size_t i = 0;i<number_of_triangles;i++)
   {
   {
     if(4 != fscanf(mesh_file," %ld %ld %ld %ld",&tri[0],&tri[1],&tri[2],&extra))
     if(4 != fscanf(mesh_file," %ld %ld %ld %ld",&tri[0],&tri[1],&tri[2],&extra))
@@ -222,7 +241,11 @@ inline bool igl::readMESH(
     fclose(mesh_file);
     fclose(mesh_file);
     return false;
     return false;
   }
   }
+#ifdef __APPLE__
   size_t number_of_tetrahedra;
   size_t number_of_tetrahedra;
+#else
+  int number_of_tetrahedra;
+#endif
   if(1 != fscanf(mesh_file," %ld",&number_of_tetrahedra))
   if(1 != fscanf(mesh_file," %ld",&number_of_tetrahedra))
   {
   {
     fprintf(stderr,"Error: expecting number of tetrahedra...\n");
     fprintf(stderr,"Error: expecting number of tetrahedra...\n");
@@ -232,7 +255,11 @@ inline bool igl::readMESH(
   // allocate space for tetrahedra
   // allocate space for tetrahedra
   T.resize(number_of_tetrahedra,vector<Index>(4));
   T.resize(number_of_tetrahedra,vector<Index>(4));
   // tet indices
   // tet indices
+#ifdef __APPLE__  
   size_t a,b,c,d;
   size_t a,b,c,d;
+#else
+  int a,b,c,d;
+#endif 
   for(size_t i = 0;i<number_of_tetrahedra;i++)
   for(size_t i = 0;i<number_of_tetrahedra;i++)
   {
   {
     if(5 != fscanf(mesh_file," %ld %ld %ld %ld %ld",&a,&b,&c,&d,&extra))
     if(5 != fscanf(mesh_file," %ld %ld %ld %ld %ld",&a,&b,&c,&d,&extra))