Skip to content

Commit

Permalink
updated CMakeLists.txt to use regex.c/h for msvc
Browse files Browse the repository at this point in the history
git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@14937 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
Christian SChubert committed Jan 25, 2013
1 parent 22dc396 commit 2926298
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 5 deletions.
11 changes: 9 additions & 2 deletions SimulationRuntime/c/util/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,19 @@ SET(util_sources base_array.c boolean_array.c omc_error.c division.c index_spec
integer_array.c java_interface.c list.c memory_pool.c modelica_string.c
modelinfo.c read_write.c read_matlab4.c real_array.c ringbuffer.c
rtclock.c string_array.c utility.c varinfo.c)


SET(util_headers base_array.h boolean_array.h division.h omc_error.h index_spec.h integer_array.h
java_interface.h jni.h jni_md.h jni_md_solaris.h jni_md_windows.h list.h memory_pool.h
modelica.h modelica_string.h modelinfo.h read_write.h read_matlab4.h real_array.h
ringbuffer.h rtclock.h string_array.h utility.h varinfo.h)

ringbuffer.h rtclock.h string_array.h utility.h varinfo.h)

if(MSVC)
INCLUDE_DIRECTORIES(${OMCTRUNCHOME}/3rdParty/regex-0.12)
SET(util_sources ${util_sources} ${OMCTRUNCHOME}/3rdParty/regex-0.12/regex.c)
SET(util_headers ${util_headers} ${OMCTRUNCHOME}/3rdParty/regex-0.12/regex.h)
endif(MSVC)

# Library util
ADD_LIBRARY(util ${util_sources} ${util_headers})
#TARGET_LINK_LIBRARIES(util)
Expand Down
9 changes: 7 additions & 2 deletions SimulationRuntime/c/util/utility.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,16 +53,19 @@ modelica_real real_int_pow(modelica_real base, modelica_integer n)
return m ? (1 / result) : result;
}

extern int OpenModelica_regexImpl(const char* str, const char* re, int maxn, int extended, int sensitive, void*(*mystrdup)(const char*), void **outMatches)
extern int OpenModelica_regexImpl(const char* str, const char* re, const int maxn, int extended, int sensitive, void*(*mystrdup)(const char*), void **outMatches)
{
char *dup;
regex_t myregex;
regmatch_t matches[maxn];
regmatch_t *matches;
int nmatch=0,i,rc,res;
int flags = (extended ? REG_EXTENDED : 0) | (sensitive ? REG_ICASE : 0) | (maxn ? 0 : REG_NOSUB);
matches = (regmatch_t*)malloc(maxn*sizeof(regmatch_t));
assert(matches != NULL);
memset(&myregex, 1, sizeof(regex_t));
rc = regcomp(&myregex, re, flags);
if (rc && maxn == 0) {
free(matches);
return 0;
}
if (rc) {
Expand All @@ -78,6 +81,7 @@ extern int OpenModelica_regexImpl(const char* str, const char* re, int maxn, int
for (i=1; i<maxn; i++)
outMatches[i] = mystrdup("");
}
free(matches);
return 0;
}
res = regexec(&myregex, str, maxn, matches, 0);
Expand All @@ -99,6 +103,7 @@ extern int OpenModelica_regexImpl(const char* str, const char* re, int maxn, int
}

regfree(&myregex);
free(matches);
return nmatch;
}

Expand Down
2 changes: 1 addition & 1 deletion SimulationRuntime/c/util/utility.h
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ static inline modelica_integer modelica_integer_max(modelica_integer x,modelica_
/* pow(), but for integer exponents (faster implementation) */
extern modelica_real real_int_pow(modelica_real base,modelica_integer n);
/* Returns 0 on failure. The first element in nmatches contains the error-message. */
extern int OpenModelica_regexImpl(const char* str, const char* re, int maxn, int extended, int sensitive, void*(*)(const char*), void **result);
extern int OpenModelica_regexImpl(const char* str, const char* re, const int maxn, int extended, int sensitive, void*(*)(const char*), void **result);
/* Wrapper for the builtin call */
extern int OpenModelica_regex(const char* str, const char* re, int maxn, int extended, int sensitive, const char **result);

Expand Down

0 comments on commit 2926298

Please sign in to comment.