#ifndef PARASOLIDDEMO_CASE_READER_H #define PARASOLIDDEMO_CASE_READER_H #include #include "boost/algorithm/string.hpp" #include "vector" using namespace std; class Srf { public: double *vertex; int dim_u, dim_v; int ptDim; int degree_u, degree_v; int knots_num_u, knots_num_v; double *knots_u, *knots_v; int *knots_mult_u, *knots_mult_v; Srf() { vertex = nullptr; knots_u = nullptr; knots_v = nullptr; knots_mult_u = nullptr; knots_mult_v = nullptr; } ~Srf() { delete[] vertex; delete[] knots_u; delete[] knots_v; delete[] knots_mult_u; delete[] knots_mult_v; } void printSrf() { printf("dim_u: %d, dim_v: %d\n", dim_u, dim_v); printf("degree_u: %d, degree_v: %d\n", degree_u, degree_v); printf("knots_num_u: %d, knots_num_v: %d\n", knots_num_u, knots_num_v); printVertex(); printKnots(); printKnotsMult(); } void printVertex() const { printf("vertex: {\n"); for(int i = 0; i < dim_u; i++) for(int j = 0; j < dim_v; j++) printf("%f %f %f %f\n", vertex[(i * dim_v + j) * ptDim], vertex[(i * dim_v + j) * ptDim + 1], vertex[(i * dim_v + j) * ptDim + 2], vertex[(i * dim_v + j) * ptDim + 3]); printf("}\n"); } void printKnots() const { printf("knots_u: {\n"); for(int i = 0; i < knots_num_u; i++) printf("%f ", knots_u[i]); printf("\n}\n"); printf("knots_v: {\n"); for(int i = 0; i < knots_num_v; i++) printf("%f ", knots_v[i]); printf("\n}\n"); } void printKnotsMult() const { printf("knots_mult_u: {\n"); for(int i = 0; i < knots_num_u; i++) printf("%d ", knots_mult_u[i]); printf("\n}\n"); printf("knots_mult_v: {\n"); for(int i = 0; i < knots_num_v; i++) printf("%d ", knots_mult_v[i]); printf("\n}\n"); } }; class CaseReader { public: Srf srf1; Srf srf2; explicit CaseReader(const string &filePath, int ptDim = 4); explicit CaseReader(const string &filePath1, const string &filePath2, int ptDim = 4); ~CaseReader(); string handleFile(const string &filePath); void initVertices1(const string &str); void getPtsFromStr1(string &srfData, Srf &srf); void initVertices2(const string &str, Srf &srf); double *getPtsFromStr2(string &srfData); static vector extractSubStr(const string &str, const string ®exExpr); }; #endif //PARASOLIDDEMO_CASE_READER_H