From 8c54c12ea7497b695e282c345b311d7bebbcc745 Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Wed, 17 Sep 2025 22:51:43 +0900 Subject: [PATCH] added a configure option to disable isocline --- README.md | 16 +++++- bin/Makefile.am | 11 +++- bin/Makefile.in | 130 +++++++++++++++++++++++++++------------------ configure | 27 ++++++++++ configure.ac | 8 +++ src/Collection.hak | 16 +++--- src/Magnitude.hak | 2 +- src/kernel.hak | 14 ++--- 8 files changed, 151 insertions(+), 73 deletions(-) diff --git a/README.md b/README.md index 51fe67c..f2056e2 100644 --- a/README.md +++ b/README.md @@ -125,11 +125,23 @@ class[#b] B (a b) { } fun print() { - printf "%d %d\n" self.a self.b + printf "A: %d B: %d\n" self.a self.b } } -x := (B:new) +class[#b] C: B (c) { + fun[#ci] new() { + super:new + self.c := 77 + } + + fun print() { + super:print + printf "C: %d\n" self.c + } +} + +x := (C:new) x:print ``` diff --git a/bin/Makefile.am b/bin/Makefile.am index 9417402..4fa8462 100644 --- a/bin/Makefile.am +++ b/bin/Makefile.am @@ -17,6 +17,7 @@ LIBADD_COMMON = # BUNDLED LIBRARIES ################################################## +if ENABLE_ISOCLINE noinst_LIBRARIES = libisocline.a noinst_HEADERS = \ isocline/include/isocline.h \ @@ -52,6 +53,7 @@ libisocline_a_SOURCES = \ isocline/src/tty_esc.c \ isocline/src/undo.c \ isocline/src/wcwidth.c +endif ################################################## # MAIN BINARIES @@ -65,9 +67,14 @@ endif bin_PROGRAMS = hak hak_SOURCES = hak.c -hak_CPPFLAGS = $(CPPFLAGS_COMMON) -I$(srcdir)/isocline/include -DHAVE_ISOCLINE_H -DHAVE_ISOCLINE_LIB +hak_CPPFLAGS = $(CPPFLAGS_COMMON) hak_LDFLAGS = $(LDFLAGS_COMMON) -hak_LDADD = ../lib/libhak.la $(LIBADD_COMMON) ./libisocline.a +hak_LDADD = ../lib/libhak.la $(LIBADD_COMMON) + +if ENABLE_ISOCLINE +hak_CPPFLAGS += -I$(srcdir)/isocline/include -DHAVE_ISOCLINE_H -DHAVE_ISOCLINE_LIB +hak_LDADD += ./libisocline.a +endif if ENABLE_HAKX diff --git a/bin/Makefile.in b/bin/Makefile.in index a1f55fa..7de11ae 100644 --- a/bin/Makefile.in +++ b/bin/Makefile.in @@ -99,7 +99,9 @@ host_triplet = @host@ @ENABLE_LIBLTDL_TRUE@am__append_1 = $(LTDL_LIBS) @ENABLE_LIBLTDL_FALSE@am__append_2 = $(DL_LIBS) bin_PROGRAMS = hak$(EXEEXT) $(am__EXEEXT_1) -@ENABLE_HAKX_TRUE@am__append_3 = hakx +@ENABLE_ISOCLINE_TRUE@am__append_3 = -I$(srcdir)/isocline/include -DHAVE_ISOCLINE_H -DHAVE_ISOCLINE_LIB +@ENABLE_ISOCLINE_TRUE@am__append_4 = ./libisocline.a +@ENABLE_HAKX_TRUE@am__append_5 = hakx subdir = bin ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \ @@ -109,7 +111,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ +DIST_COMMON = $(srcdir)/Makefile.am $(am__noinst_HEADERS_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/lib/hak-cfg.h @@ -127,19 +129,32 @@ am__v_AR_1 = libisocline_a_AR = $(AR) $(ARFLAGS) libisocline_a_RANLIB = $(RANLIB) libisocline_a_LIBADD = +am__libisocline_a_SOURCES_DIST = isocline/src/attr.c \ + isocline/src/bbcode.c isocline/src/bbcode_colors.c \ + isocline/src/common.c isocline/src/completers.c \ + isocline/src/completions.c isocline/src/editline.c \ + isocline/src/highlight.c isocline/src/history.c \ + isocline/src/isocline.c isocline/src/stringbuf.c \ + isocline/src/term.c isocline/src/tty.c isocline/src/tty_esc.c \ + isocline/src/undo.c isocline/src/wcwidth.c am__dirstamp = $(am__leading_dot)dirstamp -am_libisocline_a_OBJECTS = isocline/src/attr.$(OBJEXT) \ - isocline/src/bbcode.$(OBJEXT) \ - isocline/src/bbcode_colors.$(OBJEXT) \ - isocline/src/common.$(OBJEXT) \ - isocline/src/completers.$(OBJEXT) \ - isocline/src/completions.$(OBJEXT) \ - isocline/src/editline.$(OBJEXT) \ - isocline/src/highlight.$(OBJEXT) \ - isocline/src/history.$(OBJEXT) isocline/src/isocline.$(OBJEXT) \ - isocline/src/stringbuf.$(OBJEXT) isocline/src/term.$(OBJEXT) \ - isocline/src/tty.$(OBJEXT) isocline/src/tty_esc.$(OBJEXT) \ - isocline/src/undo.$(OBJEXT) isocline/src/wcwidth.$(OBJEXT) +@ENABLE_ISOCLINE_TRUE@am_libisocline_a_OBJECTS = \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/attr.$(OBJEXT) \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/bbcode.$(OBJEXT) \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/bbcode_colors.$(OBJEXT) \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/common.$(OBJEXT) \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/completers.$(OBJEXT) \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/completions.$(OBJEXT) \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/editline.$(OBJEXT) \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/highlight.$(OBJEXT) \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/history.$(OBJEXT) \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/isocline.$(OBJEXT) \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/stringbuf.$(OBJEXT) \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/term.$(OBJEXT) \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/tty.$(OBJEXT) \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/tty_esc.$(OBJEXT) \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/undo.$(OBJEXT) \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/wcwidth.$(OBJEXT) libisocline_a_OBJECTS = $(am_libisocline_a_OBJECTS) am_hak_OBJECTS = hak-hak.$(OBJEXT) hak_OBJECTS = $(am_hak_OBJECTS) @@ -148,7 +163,7 @@ am__DEPENDENCIES_1 = @ENABLE_LIBLTDL_FALSE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) am__DEPENDENCIES_4 = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) hak_DEPENDENCIES = ../lib/libhak.la $(am__DEPENDENCIES_4) \ - ./libisocline.a + $(am__append_4) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent @@ -215,13 +230,22 @@ am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libisocline_a_SOURCES) $(hak_SOURCES) $(hakx_SOURCES) -DIST_SOURCES = $(libisocline_a_SOURCES) $(hak_SOURCES) \ +DIST_SOURCES = $(am__libisocline_a_SOURCES_DIST) $(hak_SOURCES) \ $(am__hakx_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +am__noinst_HEADERS_DIST = isocline/include/isocline.h \ + isocline/src/attr.h isocline/src/bbcode.h \ + isocline/src/common.h isocline/src/completions.h \ + isocline/src/env.h isocline/src/highlight.h \ + isocline/src/history.h isocline/src/stringbuf.h \ + isocline/src/term.h isocline/src/tty.h isocline/src/undo.h \ + isocline/src/editline_completion.c \ + isocline/src/editline_help.c isocline/src/editline_history.c \ + isocline/src/term_color.c HEADERS = $(noinst_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, @@ -400,47 +424,47 @@ LIBADD_COMMON = $(am__append_1) $(am__append_2) ################################################## # BUNDLED LIBRARIES ################################################## -noinst_LIBRARIES = libisocline.a -noinst_HEADERS = \ - isocline/include/isocline.h \ - isocline/src/attr.h \ - isocline/src/bbcode.h \ - isocline/src/common.h \ - isocline/src/completions.h \ - isocline/src/env.h \ - isocline/src/highlight.h \ - isocline/src/history.h \ - isocline/src/stringbuf.h \ - isocline/src/term.h \ - isocline/src/tty.h \ - isocline/src/undo.h \ - isocline/src/editline_completion.c \ - isocline/src/editline_help.c \ - isocline/src/editline_history.c \ - isocline/src/term_color.c +@ENABLE_ISOCLINE_TRUE@noinst_LIBRARIES = libisocline.a +@ENABLE_ISOCLINE_TRUE@noinst_HEADERS = \ +@ENABLE_ISOCLINE_TRUE@ isocline/include/isocline.h \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/attr.h \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/bbcode.h \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/common.h \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/completions.h \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/env.h \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/highlight.h \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/history.h \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/stringbuf.h \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/term.h \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/tty.h \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/undo.h \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/editline_completion.c \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/editline_help.c \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/editline_history.c \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/term_color.c -libisocline_a_SOURCES = \ - isocline/src/attr.c \ - isocline/src/bbcode.c \ - isocline/src/bbcode_colors.c \ - isocline/src/common.c \ - isocline/src/completers.c \ - isocline/src/completions.c \ - isocline/src/editline.c \ - isocline/src/highlight.c \ - isocline/src/history.c \ - isocline/src/isocline.c \ - isocline/src/stringbuf.c \ - isocline/src/term.c \ - isocline/src/tty.c \ - isocline/src/tty_esc.c \ - isocline/src/undo.c \ - isocline/src/wcwidth.c +@ENABLE_ISOCLINE_TRUE@libisocline_a_SOURCES = \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/attr.c \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/bbcode.c \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/bbcode_colors.c \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/common.c \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/completers.c \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/completions.c \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/editline.c \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/highlight.c \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/history.c \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/isocline.c \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/stringbuf.c \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/term.c \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/tty.c \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/tty_esc.c \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/undo.c \ +@ENABLE_ISOCLINE_TRUE@ isocline/src/wcwidth.c hak_SOURCES = hak.c -hak_CPPFLAGS = $(CPPFLAGS_COMMON) -I$(srcdir)/isocline/include -DHAVE_ISOCLINE_H -DHAVE_ISOCLINE_LIB +hak_CPPFLAGS = $(CPPFLAGS_COMMON) $(am__append_3) hak_LDFLAGS = $(LDFLAGS_COMMON) -hak_LDADD = ../lib/libhak.la $(LIBADD_COMMON) ./libisocline.a +hak_LDADD = ../lib/libhak.la $(LIBADD_COMMON) $(am__append_4) @ENABLE_HAKX_TRUE@hakx_SOURCES = hakx.c @ENABLE_HAKX_TRUE@hakx_CPPFLAGS = $(CPPFLAGS_COMMON) @ENABLE_HAKX_TRUE@hakx_LDFLAGS = $(LDFLAGS_COMMON) diff --git a/configure b/configure index 4374329..0ac112b 100755 --- a/configure +++ b/configure @@ -668,6 +668,8 @@ ENABLE_LIBUNWIND_FALSE ENABLE_LIBUNWIND_TRUE ENABLE_LIBLTDL_FALSE ENABLE_LIBLTDL_TRUE +ENABLE_ISOCLINE_FALSE +ENABLE_ISOCLINE_TRUE ENABLE_SHARED_FALSE ENABLE_SHARED_TRUE ENABLE_STATIC_FALSE @@ -836,6 +838,7 @@ enable_wide_char enable_full_liw enable_dynamic_module enable_static_module +enable_isocline enable_libltdl enable_libunwind enable_pthread_flags @@ -1504,6 +1507,7 @@ Optional Features: --enable-dynamic-module enable dynamic module capability(default. yes) --enable-static-module build modules statically into the main library(default. no) + --enable-isocline use isocline(default. yes) --enable-libltdl use libltdl(default. no) --enable-libunwind use libunwind(default. no) --enable-pthread-flags add thread flags to CFLAGS, LIBS(default. yes) @@ -20041,6 +20045,25 @@ else fi +# Check whether --enable-isocline was given. +if test ${enable_isocline+y} +then : + enableval=$enable_isocline; enable_isocline=$enableval +else case e in #( + e) enable_isocline=yes + ;; +esac +fi + + if test "x${enable_isocline}" = "xyes"; then + ENABLE_ISOCLINE_TRUE= + ENABLE_ISOCLINE_FALSE='#' +else + ENABLE_ISOCLINE_TRUE='#' + ENABLE_ISOCLINE_FALSE= +fi + + # Check whether --enable-libltdl was given. if test ${enable_libltdl+y} then : @@ -20359,6 +20382,10 @@ if test -z "${ENABLE_SHARED_TRUE}" && test -z "${ENABLE_SHARED_FALSE}"; then as_fn_error $? "conditional \"ENABLE_SHARED\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${ENABLE_ISOCLINE_TRUE}" && test -z "${ENABLE_ISOCLINE_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_ISOCLINE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${ENABLE_LIBLTDL_TRUE}" && test -z "${ENABLE_LIBLTDL_FALSE}"; then as_fn_error $? "conditional \"ENABLE_LIBLTDL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 diff --git a/configure.ac b/configure.ac index d4914d8..aa0dbe3 100644 --- a/configure.ac +++ b/configure.ac @@ -622,6 +622,14 @@ dnl ===== conditionals - ENABLE_STATIC and ENABLE_SHARED ===== AM_CONDITIONAL(ENABLE_STATIC, test "x${enable_static}" = "xyes") AM_CONDITIONAL(ENABLE_SHARED, test "x${enable_shared}" = "xyes") +dnl ==== enable-isocline ==== +AC_ARG_ENABLE([isocline], + [AS_HELP_STRING([--enable-isocline],[use isocline(default. yes)])], + enable_isocline=$enableval, + enable_isocline=yes +) +AM_CONDITIONAL(ENABLE_ISOCLINE, test "x${enable_isocline}" = "xyes") + dnl ===== enable-libltdl ===== AC_ARG_ENABLE([libltdl], [AS_HELP_STRING([--enable-libltdl],[use libltdl(default. no)])], diff --git a/src/Collection.hak b/src/Collection.hak index 4f55d8f..b3ba341 100644 --- a/src/Collection.hak +++ b/src/Collection.hak @@ -20,7 +20,7 @@ class IndexedCollection: Collection { } class FixedSizedCollection: IndexedCollection { - fun(#class) new(size) { + fun[#class] new(size) { | obj iv | obj := (core.basicNew self size) if (self:respondsTo "initValue") { ## TODO: change "initValue" to a symbol once supported @@ -28,34 +28,34 @@ class FixedSizedCollection: IndexedCollection { iv := (self:initValue) while (< i size) { ## TODO: change to i < size after having implemented these methods on integer/smallintger core.basicAtPut obj i iv - i := (+ i 1) ## TODO: change to i + 1 ## TODO: change to i < size after having implemented these methods on integer/smallintger + i := (i + 1) ## TODO: change to i + 1 ## TODO: change to i < size after having implemented these methods on integer/smallintger } } return obj } - ##fun ::initValue() { + ##fun[#class] initValue() { ## return nil ##} } -class(#varying) Array: FixedSizedCollection { +class[#varying] Array: FixedSizedCollection { } -class(#char #varying) String: FixedSizedCollection { - fun(#class) initValue() { +class[#char #varying] String: FixedSizedCollection { + fun[#class] initValue() { ##return '\0' return ' ' } } class SequenceableCollection: Collection { - fun iterate (action) { + fun iterate(action) { | i x | i := 0; x := (self:size) while (i < x) { action:value (self:at i) - i := (+ i 1) + i := (i + 1) } } } diff --git a/src/Magnitude.hak b/src/Magnitude.hak index 30cecdf..b6374c2 100644 --- a/src/Magnitude.hak +++ b/src/Magnitude.hak @@ -6,7 +6,7 @@ class Magnitude: Object { fun >= (oprnd) { return ((self < oprnd):not) } } -class(#limited) Number: Magnitude { +class[#limited] Number: Magnitude { fun + (oprnd) { return (+ self oprnd) } fun - (oprnd) { return (- self oprnd) } fun * (oprnd) { return (* self oprnd) } diff --git a/src/kernel.hak b/src/kernel.hak index 7478cef..cf7368e 100644 --- a/src/kernel.hak +++ b/src/kernel.hak @@ -2,11 +2,11 @@ class Apex { fun isNil?() { return false } fun notNil?() { return true } - fun(#class) basicNew(size) { + fun[#class] basicNew(size) { return (core.basicNew self size) } - fun(#class) respondsTo(mth) { + fun[#class] respondsTo(mth) { return (core.classRespondsTo self mth) } @@ -40,7 +40,7 @@ class Apex { ## TODO: fun perform(name ...) {} } -class(#uncopyable #varying #limited #final) Class: Apex [ +class[#uncopyable #varying #limited #final] Class: Apex ( _name _mdic _spec @@ -50,7 +50,7 @@ class(#uncopyable #varying #limited #final) Class: Apex [ _ibrand _ivarnames _cvarnames -] { +) { fun name() { ##return (core.className self) return _class @@ -136,8 +136,8 @@ printf "----------------------------------------\n" k := #[1 2 3] printf "%O\n" (k:basicAt 2) -class (#varying) Z: Object [ a b c ] { - fun(#classinst) new() { +class [#varying] Z: Object (a b c) { + fun[#classinst] new() { self.a := 10 self.b := 20 self.c := 30 @@ -153,7 +153,7 @@ fun Z:abc() { } class Q { -fun(#class) k () { +fun[#class] k () { k := (Z:basicNew 10) ## #varying is really required? what is the big deal even if you allow it regardless? ##k := (Z:new) ## no way to add extra fields. k:basicAtPut 2 "hello"