exposed math functions as math::xxxx
This commit is contained in:
		| @ -261,23 +261,29 @@ void* Awk::Value::operator new[] (size_t n, Run* run) throw () | ||||
| #if !defined(__BORLANDC__) && !defined(__WATCOMC__) | ||||
| void Awk::Value::operator delete (void* ptr, Run* run)  | ||||
| { | ||||
| 	// this placement delete is to be called when the constructor  | ||||
| 	// throws an exception and it's caught by the caller. | ||||
| 	qse_awk_rtx_freemem (run->rtx, (char*)ptr-QSE_SIZEOF(run)); | ||||
| } | ||||
|  | ||||
| void Awk::Value::operator delete[] (void* ptr, Run* run)  | ||||
| { | ||||
| 	// this placement delete is to be called when the constructor  | ||||
| 	// throws an exception and it's caught by the caller. | ||||
| 	qse_awk_rtx_freemem (run->rtx, (char*)ptr-QSE_SIZEOF(run)); | ||||
| } | ||||
| #endif | ||||
|  | ||||
| void Awk::Value::operator delete (void* ptr)  | ||||
| { | ||||
| 	// this delete is to be called for normal destruction. | ||||
| 	void* p = (char*)ptr-QSE_SIZEOF(Run*); | ||||
| 	qse_awk_rtx_freemem ((*(Run**)p)->rtx, p); | ||||
| } | ||||
|  | ||||
| void Awk::Value::operator delete[] (void* ptr)  | ||||
| { | ||||
| 	// this delete is to be called for normal destruction. | ||||
| 	void* p = (char*)ptr-QSE_SIZEOF(Run*); | ||||
| 	qse_awk_rtx_freemem ((*(Run**)p)->rtx, p); | ||||
| } | ||||
|  | ||||
| @ -43,6 +43,7 @@ if ENABLE_STATIC_MODULE | ||||
| ################################################## | ||||
| libqseawk_la_SOURCES += \ | ||||
| 	mod-dir.c mod-dir.h \ | ||||
| 	mod-math.c mod-math.h \ | ||||
| 	mod-sed.c mod-sed.h \ | ||||
| 	mod-str.c mod-str.h \ | ||||
| 	mod-sys.c mod-sys.h | ||||
| @ -76,6 +77,12 @@ libqseawk_dir_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON) | ||||
| libqseawk_dir_la_LDFLAGS = $(LDFLAGS_MOD_COMMON) | ||||
| libqseawk_dir_la_LIBADD = $(LIBADD_MOD_COMMON) | ||||
|  | ||||
| modexec_LTLIBRARIES += libqseawk-math.la | ||||
| libqseawk_math_la_SOURCES = mod-math.c mod-math.h | ||||
| libqseawk_math_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON) | ||||
| libqseawk_math_la_LDFLAGS = $(LDFLAGS_MOD_COMMON) | ||||
| libqseawk_math_la_LIBADD = $(LIBADD_MOD_COMMON) | ||||
|  | ||||
| modexec_LTLIBRARIES += libqseawk-sed.la | ||||
| libqseawk_sed_la_SOURCES = mod-sed.c mod-sed.h | ||||
| libqseawk_sed_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON) | ||||
|  | ||||
| @ -63,6 +63,7 @@ host_triplet = @host@ | ||||
| ################################################## | ||||
| @ENABLE_STATIC_MODULE_TRUE@am__append_4 = \ | ||||
| @ENABLE_STATIC_MODULE_TRUE@	mod-dir.c mod-dir.h \ | ||||
| @ENABLE_STATIC_MODULE_TRUE@	mod-math.c mod-math.h \ | ||||
| @ENABLE_STATIC_MODULE_TRUE@	mod-sed.c mod-sed.h \ | ||||
| @ENABLE_STATIC_MODULE_TRUE@	mod-str.c mod-str.h \ | ||||
| @ENABLE_STATIC_MODULE_TRUE@	mod-sys.c mod-sys.h | ||||
| @ -136,6 +137,18 @@ libqseawk_dir_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ | ||||
| 	-o $@ | ||||
| @ENABLE_STATIC_MODULE_FALSE@am_libqseawk_dir_la_rpath = -rpath \ | ||||
| @ENABLE_STATIC_MODULE_FALSE@	$(modexecdir) | ||||
| @ENABLE_STATIC_MODULE_FALSE@libqseawk_math_la_DEPENDENCIES =  \ | ||||
| @ENABLE_STATIC_MODULE_FALSE@	$(am__DEPENDENCIES_1) | ||||
| am__libqseawk_math_la_SOURCES_DIST = mod-math.c mod-math.h | ||||
| @ENABLE_STATIC_MODULE_FALSE@am_libqseawk_math_la_OBJECTS =  \ | ||||
| @ENABLE_STATIC_MODULE_FALSE@	libqseawk_math_la-mod-math.lo | ||||
| libqseawk_math_la_OBJECTS = $(am_libqseawk_math_la_OBJECTS) | ||||
| libqseawk_math_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ | ||||
| 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ | ||||
| 	$(AM_CFLAGS) $(CFLAGS) $(libqseawk_math_la_LDFLAGS) $(LDFLAGS) \ | ||||
| 	-o $@ | ||||
| @ENABLE_STATIC_MODULE_FALSE@am_libqseawk_math_la_rpath = -rpath \ | ||||
| @ENABLE_STATIC_MODULE_FALSE@	$(modexecdir) | ||||
| @ENABLE_STATIC_MODULE_FALSE@@HAVE_C_MPI_TRUE@libqseawk_mpi_la_DEPENDENCIES = $(am__DEPENDENCIES_1) | ||||
| am__libqseawk_mpi_la_SOURCES_DIST = mod-mpi.c mod-mpi.h | ||||
| @ENABLE_STATIC_MODULE_FALSE@@HAVE_C_MPI_TRUE@am_libqseawk_mpi_la_OBJECTS = libqseawk_mpi_la-mod-mpi.lo | ||||
| @ -201,10 +214,11 @@ libqseawk_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \ | ||||
| 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_3) | ||||
| am__libqseawk_la_SOURCES_DIST = awk.c err.c tree.c parse.c run.c rec.c \ | ||||
| 	val.c fnc.c misc.c rio.c std.c awk.h err.h rio.h val.h fnc.h \ | ||||
| 	misc.h parse.h run.h tree.h mod-dir.c mod-dir.h mod-sed.c \ | ||||
| 	mod-sed.h mod-str.c mod-str.h mod-sys.c mod-sys.h mod-mpi.c \ | ||||
| 	mod-mpi.h mod-uci.c mod-uci.h | ||||
| 	misc.h parse.h run.h tree.h mod-dir.c mod-dir.h mod-math.c \ | ||||
| 	mod-math.h mod-sed.c mod-sed.h mod-str.c mod-str.h mod-sys.c \ | ||||
| 	mod-sys.h mod-mpi.c mod-mpi.h mod-uci.c mod-uci.h | ||||
| @ENABLE_STATIC_MODULE_TRUE@am__objects_1 = libqseawk_la-mod-dir.lo \ | ||||
| @ENABLE_STATIC_MODULE_TRUE@	libqseawk_la-mod-math.lo \ | ||||
| @ENABLE_STATIC_MODULE_TRUE@	libqseawk_la-mod-sed.lo \ | ||||
| @ENABLE_STATIC_MODULE_TRUE@	libqseawk_la-mod-str.lo \ | ||||
| @ENABLE_STATIC_MODULE_TRUE@	libqseawk_la-mod-sys.lo | ||||
| @ -271,11 +285,13 @@ am__v_CXXLD_0 = @echo "  CXXLD " $@; | ||||
| AM_V_GEN = $(am__v_GEN_@AM_V@) | ||||
| am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) | ||||
| am__v_GEN_0 = @echo "  GEN   " $@; | ||||
| SOURCES = $(libqseawk_dir_la_SOURCES) $(libqseawk_mpi_la_SOURCES) \ | ||||
| 	$(libqseawk_sed_la_SOURCES) $(libqseawk_str_la_SOURCES) \ | ||||
| 	$(libqseawk_sys_la_SOURCES) $(libqseawk_uci_la_SOURCES) \ | ||||
| 	$(libqseawk_la_SOURCES) $(libqseawkxx_la_SOURCES) | ||||
| SOURCES = $(libqseawk_dir_la_SOURCES) $(libqseawk_math_la_SOURCES) \ | ||||
| 	$(libqseawk_mpi_la_SOURCES) $(libqseawk_sed_la_SOURCES) \ | ||||
| 	$(libqseawk_str_la_SOURCES) $(libqseawk_sys_la_SOURCES) \ | ||||
| 	$(libqseawk_uci_la_SOURCES) $(libqseawk_la_SOURCES) \ | ||||
| 	$(libqseawkxx_la_SOURCES) | ||||
| DIST_SOURCES = $(am__libqseawk_dir_la_SOURCES_DIST) \ | ||||
| 	$(am__libqseawk_math_la_SOURCES_DIST) \ | ||||
| 	$(am__libqseawk_mpi_la_SOURCES_DIST) \ | ||||
| 	$(am__libqseawk_sed_la_SOURCES_DIST) \ | ||||
| 	$(am__libqseawk_str_la_SOURCES_DIST) \ | ||||
| @ -502,13 +518,17 @@ libqseawk_la_LIBADD = $(LIBADD_LIB_COMMON) $(am__append_5) \ | ||||
| @ENABLE_STATIC_MODULE_FALSE@LIBADD_MOD_COMMON = -lqseawk -lqsecmn | ||||
| @ENABLE_STATIC_MODULE_FALSE@modexecdir = $(libdir) | ||||
| @ENABLE_STATIC_MODULE_FALSE@modexec_LTLIBRARIES = libqseawk-dir.la \ | ||||
| @ENABLE_STATIC_MODULE_FALSE@	libqseawk-sed.la libqseawk-str.la \ | ||||
| @ENABLE_STATIC_MODULE_FALSE@	libqseawk-sys.la $(am__append_11) \ | ||||
| @ENABLE_STATIC_MODULE_FALSE@	$(am__append_12) | ||||
| @ENABLE_STATIC_MODULE_FALSE@	libqseawk-math.la libqseawk-sed.la \ | ||||
| @ENABLE_STATIC_MODULE_FALSE@	libqseawk-str.la libqseawk-sys.la \ | ||||
| @ENABLE_STATIC_MODULE_FALSE@	$(am__append_11) $(am__append_12) | ||||
| @ENABLE_STATIC_MODULE_FALSE@libqseawk_dir_la_SOURCES = mod-dir.c mod-dir.h | ||||
| @ENABLE_STATIC_MODULE_FALSE@libqseawk_dir_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON) | ||||
| @ENABLE_STATIC_MODULE_FALSE@libqseawk_dir_la_LDFLAGS = $(LDFLAGS_MOD_COMMON) | ||||
| @ENABLE_STATIC_MODULE_FALSE@libqseawk_dir_la_LIBADD = $(LIBADD_MOD_COMMON) | ||||
| @ENABLE_STATIC_MODULE_FALSE@libqseawk_math_la_SOURCES = mod-math.c mod-math.h | ||||
| @ENABLE_STATIC_MODULE_FALSE@libqseawk_math_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON) | ||||
| @ENABLE_STATIC_MODULE_FALSE@libqseawk_math_la_LDFLAGS = $(LDFLAGS_MOD_COMMON) | ||||
| @ENABLE_STATIC_MODULE_FALSE@libqseawk_math_la_LIBADD = $(LIBADD_MOD_COMMON) | ||||
| @ENABLE_STATIC_MODULE_FALSE@libqseawk_sed_la_SOURCES = mod-sed.c mod-sed.h | ||||
| @ENABLE_STATIC_MODULE_FALSE@libqseawk_sed_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON) | ||||
| @ENABLE_STATIC_MODULE_FALSE@libqseawk_sed_la_LDFLAGS = $(LDFLAGS_MOD_COMMON) -L../sed | ||||
| @ -629,6 +649,8 @@ clean-modexecLTLIBRARIES: | ||||
| 	done | ||||
| libqseawk-dir.la: $(libqseawk_dir_la_OBJECTS) $(libqseawk_dir_la_DEPENDENCIES) $(EXTRA_libqseawk_dir_la_DEPENDENCIES)  | ||||
| 	$(AM_V_CCLD)$(libqseawk_dir_la_LINK) $(am_libqseawk_dir_la_rpath) $(libqseawk_dir_la_OBJECTS) $(libqseawk_dir_la_LIBADD) $(LIBS) | ||||
| libqseawk-math.la: $(libqseawk_math_la_OBJECTS) $(libqseawk_math_la_DEPENDENCIES) $(EXTRA_libqseawk_math_la_DEPENDENCIES)  | ||||
| 	$(AM_V_CCLD)$(libqseawk_math_la_LINK) $(am_libqseawk_math_la_rpath) $(libqseawk_math_la_OBJECTS) $(libqseawk_math_la_LIBADD) $(LIBS) | ||||
| libqseawk-mpi.la: $(libqseawk_mpi_la_OBJECTS) $(libqseawk_mpi_la_DEPENDENCIES) $(EXTRA_libqseawk_mpi_la_DEPENDENCIES)  | ||||
| 	$(AM_V_CCLD)$(libqseawk_mpi_la_LINK) $(am_libqseawk_mpi_la_rpath) $(libqseawk_mpi_la_OBJECTS) $(libqseawk_mpi_la_LIBADD) $(LIBS) | ||||
| libqseawk-sed.la: $(libqseawk_sed_la_OBJECTS) $(libqseawk_sed_la_DEPENDENCIES) $(EXTRA_libqseawk_sed_la_DEPENDENCIES)  | ||||
| @ -656,6 +678,7 @@ distclean-compile: | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_la-fnc.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_la-misc.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_la-mod-dir.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_la-mod-math.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_la-mod-mpi.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_la-mod-sed.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_la-mod-str.Plo@am__quote@ | ||||
| @ -668,6 +691,7 @@ distclean-compile: | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_la-std.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_la-tree.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_la-val.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_math_la-mod-math.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_mpi_la-mod-mpi.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_sed_la-mod-sed.Plo@am__quote@ | ||||
| @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqseawk_str_la-mod-str.Plo@am__quote@ | ||||
| @ -704,6 +728,13 @@ libqseawk_dir_la-mod-dir.lo: mod-dir.c | ||||
| @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | ||||
| @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqseawk_dir_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libqseawk_dir_la-mod-dir.lo `test -f 'mod-dir.c' || echo '$(srcdir)/'`mod-dir.c | ||||
|  | ||||
| libqseawk_math_la-mod-math.lo: mod-math.c | ||||
| @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqseawk_math_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libqseawk_math_la-mod-math.lo -MD -MP -MF $(DEPDIR)/libqseawk_math_la-mod-math.Tpo -c -o libqseawk_math_la-mod-math.lo `test -f 'mod-math.c' || echo '$(srcdir)/'`mod-math.c | ||||
| @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libqseawk_math_la-mod-math.Tpo $(DEPDIR)/libqseawk_math_la-mod-math.Plo | ||||
| @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='mod-math.c' object='libqseawk_math_la-mod-math.lo' libtool=yes @AMDEPBACKSLASH@ | ||||
| @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | ||||
| @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqseawk_math_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libqseawk_math_la-mod-math.lo `test -f 'mod-math.c' || echo '$(srcdir)/'`mod-math.c | ||||
|  | ||||
| libqseawk_mpi_la-mod-mpi.lo: mod-mpi.c | ||||
| @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqseawk_mpi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libqseawk_mpi_la-mod-mpi.lo -MD -MP -MF $(DEPDIR)/libqseawk_mpi_la-mod-mpi.Tpo -c -o libqseawk_mpi_la-mod-mpi.lo `test -f 'mod-mpi.c' || echo '$(srcdir)/'`mod-mpi.c | ||||
| @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libqseawk_mpi_la-mod-mpi.Tpo $(DEPDIR)/libqseawk_mpi_la-mod-mpi.Plo | ||||
| @ -823,6 +854,13 @@ libqseawk_la-mod-dir.lo: mod-dir.c | ||||
| @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | ||||
| @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqseawk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libqseawk_la-mod-dir.lo `test -f 'mod-dir.c' || echo '$(srcdir)/'`mod-dir.c | ||||
|  | ||||
| libqseawk_la-mod-math.lo: mod-math.c | ||||
| @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqseawk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libqseawk_la-mod-math.lo -MD -MP -MF $(DEPDIR)/libqseawk_la-mod-math.Tpo -c -o libqseawk_la-mod-math.lo `test -f 'mod-math.c' || echo '$(srcdir)/'`mod-math.c | ||||
| @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libqseawk_la-mod-math.Tpo $(DEPDIR)/libqseawk_la-mod-math.Plo | ||||
| @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='mod-math.c' object='libqseawk_la-mod-math.lo' libtool=yes @AMDEPBACKSLASH@ | ||||
| @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | ||||
| @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqseawk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libqseawk_la-mod-math.lo `test -f 'mod-math.c' || echo '$(srcdir)/'`mod-math.c | ||||
|  | ||||
| libqseawk_la-mod-sed.lo: mod-sed.c | ||||
| @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqseawk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libqseawk_la-mod-sed.lo -MD -MP -MF $(DEPDIR)/libqseawk_la-mod-sed.Tpo -c -o libqseawk_la-mod-sed.lo `test -f 'mod-sed.c' || echo '$(srcdir)/'`mod-sed.c | ||||
| @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libqseawk_la-mod-sed.Tpo $(DEPDIR)/libqseawk_la-mod-sed.Plo | ||||
|  | ||||
| @ -22,16 +22,6 @@ | ||||
|   | ||||
| static int fnc_close   (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
| static int fnc_fflush  (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
|  | ||||
| static int fnc_sin     (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
| static int fnc_cos     (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
| static int fnc_tan     (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
| static int fnc_atan    (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
| static int fnc_atan2   (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
| static int fnc_log     (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
| static int fnc_log10   (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
| static int fnc_exp     (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
| static int fnc_sqrt    (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
| static int fnc_int     (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
|  | ||||
| #define A_MAX QSE_TYPE_MAX(int) | ||||
| @ -52,8 +42,11 @@ static int fnc_int     (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
| static qse_awk_fnc_t sysfnctab[] =  | ||||
| { | ||||
| 	/* io functions */ | ||||
| 	{ {QSE_T("close"),   5}, 0, { {1,     2, QSE_NULL},     fnc_close,   QSE_AWK_RIO }, QSE_NULL}, | ||||
| 	{ {QSE_T("fflush"),  6}, 0, { {0,     1, QSE_NULL},     fnc_fflush,  QSE_AWK_RIO }, QSE_NULL}, | ||||
| 	{ {QSE_T("close"),   5}, 0, { {1,     2, QSE_NULL},     fnc_close,  QSE_AWK_RIO }, QSE_NULL}, | ||||
| 	{ {QSE_T("fflush"),  6}, 0, { {0,     1, QSE_NULL},     fnc_fflush, QSE_AWK_RIO }, QSE_NULL}, | ||||
|  | ||||
| 	/* integer conversion */ | ||||
| 	{ {QSE_T("int"),     3}, 0, { {1,     1, QSE_NULL},     fnc_int,              0 }, QSE_NULL}, | ||||
|  | ||||
| 	/* string functions */ | ||||
| 	{ {QSE_T("index"),   5}, 0, { {2,     3, QSE_NULL},     qse_awk_fnc_index,    0 }, QSE_NULL}, | ||||
| @ -68,16 +61,15 @@ static qse_awk_fnc_t sysfnctab[] = | ||||
| 	{ {QSE_T("sprintf"), 7}, 0, { {1, A_MAX, QSE_NULL},     qse_awk_fnc_sprintf,  0 }, QSE_NULL}, | ||||
|  | ||||
| 	/* math functions */ | ||||
| 	{ {QSE_T("sin"),     3}, 0, { {1,     1, QSE_NULL},     fnc_sin,              0 }, QSE_NULL}, | ||||
| 	{ {QSE_T("cos"),     3}, 0, { {1,     1, QSE_NULL},     fnc_cos,              0 }, QSE_NULL}, | ||||
| 	{ {QSE_T("tan"),     3}, 0, { {1,     1, QSE_NULL},     fnc_tan,              0 }, QSE_NULL}, | ||||
| 	{ {QSE_T("atan"),    4}, 0, { {1,     1, QSE_NULL},     fnc_atan,             0 }, QSE_NULL}, | ||||
| 	{ {QSE_T("atan2"),   5}, 0, { {2,     2, QSE_NULL},     fnc_atan2,            0 }, QSE_NULL}, | ||||
| 	{ {QSE_T("log"),     3}, 0, { {1,     1, QSE_NULL},     fnc_log,              0 }, QSE_NULL}, | ||||
| 	{ {QSE_T("log10"),   5}, 0, { {1,     1, QSE_NULL},     fnc_log10,            0 }, QSE_NULL}, | ||||
| 	{ {QSE_T("exp"),     3}, 0, { {1,     1, QSE_NULL},     fnc_exp,              0 }, QSE_NULL}, | ||||
| 	{ {QSE_T("sqrt"),    4}, 0, { {1,     1, QSE_NULL},     fnc_sqrt,             0 }, QSE_NULL}, | ||||
| 	{ {QSE_T("int"),     3}, 0, { {1,     1, QSE_NULL},     fnc_int,              0 }, QSE_NULL} | ||||
| 	{ {QSE_T("sin"),     3}, 0, { {1,     1, QSE_NULL},     qse_awk_fnc_sin,      0 }, QSE_NULL}, | ||||
| 	{ {QSE_T("cos"),     3}, 0, { {1,     1, QSE_NULL},     qse_awk_fnc_cos,      0 }, QSE_NULL}, | ||||
| 	{ {QSE_T("tan"),     3}, 0, { {1,     1, QSE_NULL},     qse_awk_fnc_tan,      0 }, QSE_NULL}, | ||||
| 	{ {QSE_T("atan"),    4}, 0, { {1,     1, QSE_NULL},     qse_awk_fnc_atan,     0 }, QSE_NULL}, | ||||
| 	{ {QSE_T("atan2"),   5}, 0, { {2,     2, QSE_NULL},     qse_awk_fnc_atan2,    0 }, QSE_NULL}, | ||||
| 	{ {QSE_T("log"),     3}, 0, { {1,     1, QSE_NULL},     qse_awk_fnc_log,      0 }, QSE_NULL}, | ||||
| 	{ {QSE_T("log10"),   5}, 0, { {1,     1, QSE_NULL},     qse_awk_fnc_log10,    0 }, QSE_NULL}, | ||||
| 	{ {QSE_T("exp"),     3}, 0, { {1,     1, QSE_NULL},     qse_awk_fnc_exp,      0 }, QSE_NULL}, | ||||
| 	{ {QSE_T("sqrt"),    4}, 0, { {1,     1, QSE_NULL},     qse_awk_fnc_sqrt,     0 }, QSE_NULL} | ||||
| }; | ||||
|  | ||||
| qse_awk_fnc_t* qse_awk_addfnc (qse_awk_t* awk, const qse_char_t* name, const qse_awk_fnc_spec_t* spec) | ||||
| @ -1329,39 +1321,47 @@ static int fnc_math_2 ( | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| static int fnc_sin (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi) | ||||
| int qse_awk_fnc_sin (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi) | ||||
| { | ||||
| 	return fnc_math_1 (rtx, fi, rtx->awk->prm.math.sin); | ||||
| } | ||||
| static int fnc_cos (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi) | ||||
|  | ||||
| int qse_awk_fnc_cos (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi) | ||||
| { | ||||
| 	return fnc_math_1 (rtx, fi, rtx->awk->prm.math.cos); | ||||
| } | ||||
| static int fnc_tan (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi) | ||||
|  | ||||
| int qse_awk_fnc_tan (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi) | ||||
| { | ||||
| 	return fnc_math_1 (rtx, fi, rtx->awk->prm.math.tan); | ||||
| } | ||||
| static int fnc_atan (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi) | ||||
|  | ||||
| int qse_awk_fnc_atan (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi) | ||||
| { | ||||
| 	return fnc_math_1 (rtx, fi, rtx->awk->prm.math.atan); | ||||
| } | ||||
| static int fnc_atan2 (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi) | ||||
|  | ||||
| int qse_awk_fnc_atan2 (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi) | ||||
| { | ||||
| 	return fnc_math_2 (rtx, fi, rtx->awk->prm.math.atan2); | ||||
| } | ||||
| static int fnc_log (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi) | ||||
|  | ||||
| int qse_awk_fnc_log (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi) | ||||
| { | ||||
| 	return fnc_math_1 (rtx, fi, rtx->awk->prm.math.log); | ||||
| } | ||||
| static int fnc_log10 (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi) | ||||
|  | ||||
| int qse_awk_fnc_log10 (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi) | ||||
| { | ||||
| 	return fnc_math_1 (rtx, fi, rtx->awk->prm.math.log10); | ||||
| } | ||||
| static int fnc_exp (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi) | ||||
|  | ||||
| int qse_awk_fnc_exp (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi) | ||||
| { | ||||
| 	return fnc_math_1 (rtx, fi, rtx->awk->prm.math.exp); | ||||
| } | ||||
| static int fnc_sqrt (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi) | ||||
|  | ||||
| int qse_awk_fnc_sqrt (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi) | ||||
| { | ||||
| 	return fnc_math_1 (rtx, fi, rtx->awk->prm.math.sqrt); | ||||
| } | ||||
|  | ||||
| @ -54,6 +54,16 @@ int qse_awk_fnc_tolower (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
| int qse_awk_fnc_toupper (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
| int qse_awk_fnc_sprintf (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
|  | ||||
| int qse_awk_fnc_sin     (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
| int qse_awk_fnc_cos     (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
| int qse_awk_fnc_tan     (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
| int qse_awk_fnc_atan    (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
| int qse_awk_fnc_atan2   (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
| int qse_awk_fnc_log     (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
| int qse_awk_fnc_log10   (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
| int qse_awk_fnc_exp     (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
| int qse_awk_fnc_sqrt    (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi); | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										128
									
								
								qse/lib/awk/mod-math.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								qse/lib/awk/mod-math.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,128 @@ | ||||
| /* | ||||
|  * $Id$ | ||||
|  * | ||||
|     Copyright 2006-2014 Chung, Hyung-Hwan. | ||||
|     This file is part of QSE. | ||||
|  | ||||
|     QSE is free software: you can redistribute it and/or modify | ||||
|     it under the terms of the GNU Lesser General Public License as  | ||||
|     published by the Free Software Foundation, either version 3 of  | ||||
|     the License, or (at your option) any later version. | ||||
|  | ||||
|     QSE is distributed in the hope that it will be useful, | ||||
|     but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|     GNU Lesser General Public License for more details. | ||||
|  | ||||
|     You should have received a copy of the GNU Lesser General Public  | ||||
|     License along with QSE. If not, see <http://www.gnu.org/licenses/>. | ||||
|  */ | ||||
|  | ||||
| #include "mod-str.h" | ||||
| #include <qse/cmn/str.h> | ||||
| #include <qse/cmn/chr.h> | ||||
| #include "../cmn/mem.h" | ||||
| #include "fnc.h" | ||||
|  | ||||
| typedef struct fnctab_t fnctab_t; | ||||
| struct fnctab_t | ||||
| { | ||||
| 	const qse_char_t* name; | ||||
| 	qse_awk_mod_sym_fnc_t info; | ||||
| }; | ||||
|  | ||||
| static fnctab_t fnctab[] = | ||||
| { | ||||
| 	/* keep this table sorted for binary search in query(). */ | ||||
| 	{ QSE_T("atan"),    { { 1, 1, QSE_NULL },     qse_awk_fnc_atan,     0 } }, | ||||
| 	{ QSE_T("atan2"),   { { 2, 2, QSE_NULL },     qse_awk_fnc_atan2,    0 } }, | ||||
| 	{ QSE_T("cos"),     { { 1, 1, QSE_NULL },     qse_awk_fnc_cos,      0 } }, | ||||
| 	{ QSE_T("exp"),     { { 1, 1, QSE_NULL },     qse_awk_fnc_exp,      0 } }, | ||||
| 	{ QSE_T("log"),     { { 1, 1, QSE_NULL },     qse_awk_fnc_log,      0 } }, | ||||
| 	{ QSE_T("log10"),   { { 1, 1, QSE_NULL },     qse_awk_fnc_log10,    0 } }, | ||||
| 	{ QSE_T("sin"),     { { 1, 1, QSE_NULL },     qse_awk_fnc_sin,      0 } }, | ||||
| 	{ QSE_T("sqrt"),    { { 1, 1, QSE_NULL },     qse_awk_fnc_sqrt,     0 } }, | ||||
| 	{ QSE_T("tan"),     { { 1, 1, QSE_NULL },     qse_awk_fnc_tan,      0 } }, | ||||
|  | ||||
| }; | ||||
|  | ||||
| static int query (qse_awk_mod_t* mod, qse_awk_t* awk, const qse_char_t* name, qse_awk_mod_sym_t* sym) | ||||
| { | ||||
| 	qse_cstr_t ea; | ||||
| 	int left, right, mid, n; | ||||
|  | ||||
| 	left = 0; right = QSE_COUNTOF(fnctab) - 1; | ||||
|  | ||||
| 	while (left <= right) | ||||
| 	{ | ||||
| 		mid = (left + right) / 2; | ||||
|  | ||||
| 		n = qse_strcmp (fnctab[mid].name, name); | ||||
| 		if (n > 0) right = mid - 1;  | ||||
| 		else if (n < 0) left = mid + 1; | ||||
| 		else | ||||
| 		{ | ||||
| 			sym->type = QSE_AWK_MOD_FNC; | ||||
| 			sym->u.fnc = fnctab[mid].info; | ||||
| 			return 0; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| #if 0 | ||||
| 	left = 0; right = QSE_COUNTOF(inttab) - 1; | ||||
| 	while (left <= right) | ||||
| 	{ | ||||
| 		mid = (left + right) / 2; | ||||
|  | ||||
| 		n = qse_strcmp (inttab[mid].name, name); | ||||
| 		if (n > 0) right = mid - 1;  | ||||
| 		else if (n < 0) left = mid + 1; | ||||
| 		else | ||||
| 		{ | ||||
| 			sym->type = QSE_AWK_MOD_INT; | ||||
| 			sym->u.in = inttab[mid].info; | ||||
| 			return 0; | ||||
| 		} | ||||
|      } | ||||
| #endif | ||||
|  | ||||
| 	ea.ptr = name; | ||||
| 	ea.len = qse_strlen(name); | ||||
| 	qse_awk_seterror (awk, QSE_AWK_ENOENT, &ea, QSE_NULL); | ||||
| 	return -1; | ||||
| } | ||||
|  | ||||
| /* TODO: proper resource management */ | ||||
|  | ||||
| static int init (qse_awk_mod_t* mod, qse_awk_rtx_t* rtx) | ||||
| { | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| static void fini (qse_awk_mod_t* mod, qse_awk_rtx_t* rtx) | ||||
| { | ||||
| 	/* TODO:  | ||||
| 	for (each pid for rtx) kill (pid, SIGKILL); | ||||
| 	for (each pid for rtx) waitpid (pid, QSE_NULL, 0); | ||||
| 	*/ | ||||
| } | ||||
|  | ||||
| static void unload (qse_awk_mod_t* mod, qse_awk_t* awk) | ||||
| { | ||||
| 	/* TODO: anything */ | ||||
| } | ||||
|  | ||||
| int qse_awk_mod_math (qse_awk_mod_t* mod, qse_awk_t* awk) | ||||
| { | ||||
| 	mod->query = query; | ||||
| 	mod->unload = unload; | ||||
|  | ||||
| 	mod->init = init; | ||||
| 	mod->fini = fini; | ||||
| 	/* | ||||
| 	mod->ctx... | ||||
| 	 */ | ||||
|  | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| @ -6583,6 +6583,7 @@ int qse_awk_putsrcstrn ( | ||||
|  | ||||
| /* let's hardcode module information */ | ||||
| #include "mod-dir.h" | ||||
| #include "mod-math.h" | ||||
| #include "mod-str.h" | ||||
| #include "mod-sys.h" | ||||
| #include "mod-sed.h" | ||||
| @ -6605,15 +6606,16 @@ static struct | ||||
| 	int (*modload) (qse_awk_mod_t* mod, qse_awk_t* awk); | ||||
| } static_modtab[] =  | ||||
| { | ||||
| 	{ QSE_T("dir"), qse_awk_mod_dir }, | ||||
| 	{ QSE_T("dir"),  qse_awk_mod_dir }, | ||||
| 	{ QSE_T("math"), qse_awk_mod_math }, | ||||
| #if defined(HAVE_MPI) | ||||
| 	{ QSE_T("mpi"), qse_awk_mod_mpi }, | ||||
| 	{ QSE_T("mpi"),  qse_awk_mod_mpi }, | ||||
| #endif | ||||
| 	{ QSE_T("sed"), qse_awk_mod_sed }, | ||||
| 	{ QSE_T("str"), qse_awk_mod_str }, | ||||
| 	{ QSE_T("sys"), qse_awk_mod_sys }, | ||||
| 	{ QSE_T("sed"),  qse_awk_mod_sed }, | ||||
| 	{ QSE_T("str"),  qse_awk_mod_str }, | ||||
| 	{ QSE_T("sys"),  qse_awk_mod_sys }, | ||||
| #if defined(HAVE_UCI) | ||||
| 	{ QSE_T("uci"), qse_awk_mod_uci } | ||||
| 	{ QSE_T("uci"),  qse_awk_mod_uci } | ||||
| #endif | ||||
| }; | ||||
| #endif | ||||
|  | ||||
		Reference in New Issue
	
	Block a user