1. 22 Mar, 2006 4 commits
    • Thierry Geraud's avatar
      First draft of extended functions. · de320d4b
      Thierry Geraud authored
      - xtd/math.hh: New file.
      - xtd/res.hh: New file.
      - xtd/cast.hh: New file.
      - xtd/math: New file.
      - xtd/math/trigo.hh: New file.
      - xtd/math/arith.hh: New file.
      - xtd/math/id.hh: New file.
      - xtd/mexpr.hh: New file.
      - xtd/args.hh: New file.
      - xtd/literal.hh: New file.
      - xtd/ops_expr.hh: New file.
      - xtd/abstract: New file.
      - xtd/abstract/nary_fun.hh: New file.
      - xtd/abstract/exact.hh: New file.
      - xtd/abstract/fun_expr.hh: New file.
      - xtd/abstract/any.hh: New file.
      - xtd/abstract/fun.hh: New file.
      - xtd/abstract/plain_fun.hh: New file.
      - xtd/abstract/meta_fun.hh: New file.
      - xtd/mfun.hh: New file.
      - xtd/traits.hh: New file.
      - xtd/builtin: New file.
      - xtd/builtin/traits.hh: New file.
      - xtd/arg.hh: New file.
      - xtd/case.hh: New file.
      - tests/id.cc: New file.
      - tests/cos.cc: New file.
      - tests/cast.cc: New file.
      - tests/Makefile.am: Update.
      
      
      git-svn-id: https://svn.lrde.epita.fr/svn/oln/trunk@434 4aad255d-cdde-0310-9447-f3009e2ae8c0
      de320d4b
    • Thierry Geraud's avatar
      Tiny fix. · 6a732930
      Thierry Geraud authored
      - mlc/logic.hh: Fix missing include.
      
      
      git-svn-id: https://svn.lrde.epita.fr/svn/oln/trunk@433 4aad255d-cdde-0310-9447-f3009e2ae8c0
      6a732930
    • Thierry Geraud's avatar
      Re-enable or_list_ and and_list_. · f613e55f
      Thierry Geraud authored
      - tests/or.cc: New file.
      - tests/Makefile.am: Update.
      - mlc/logic.hh (or_list_, and_list_): Uncomment, update, and bug fix.
      - mlc/assert.hh: Fix missing include.
      
      
      git-svn-id: https://svn.lrde.epita.fr/svn/oln/trunk@432 4aad255d-cdde-0310-9447-f3009e2ae8c0
      f613e55f
    • Roland Levillain's avatar
      Catch up with changes in Metalic. · 0d1e44a1
      Roland Levillain authored
      	* stc/properties.hh (stc_equip_namespace_with_properties): Use
      	mlc_bool to extract the value of mlc::abstract::bexpr's.
      	* stc/properties.hh: Update test (use mlc::assert_).
      
      
      git-svn-id: https://svn.lrde.epita.fr/svn/oln/trunk@430 4aad255d-cdde-0310-9447-f3009e2ae8c0
      0d1e44a1
  2. 21 Mar, 2006 3 commits
    • Thierry Geraud's avatar
      Disambiguate Boolean value types and Boolean expression types. · b14a413a
      Thierry Geraud authored
      - tests/ret.cc: Update.
      - mlc/ret.hh: Fix missing include.
      
      The Boolean value classes are re-written and internal::value_ is
      removed; this class was too ambiguous since precise types, e.g.,
      int_<i>, are provided and it was weirdly located in the value class
      hierarchy.
      
      - mlc/bool.hh (bool_<true>, bool_<false>): Merge those
      specializations into the single and once for all written class
      bool_<b>.
      (bool_<true>::is_true): Remove since this mark is now factored
      in the base class bexpr_is_<b>.
      (bool_<b>): Add inheritance so that a Boolean value can be
      considered as a Boolean expression type.
      (internal::value_<bool, b>): Remove this specialization since
      the class internal::value_ is also removed.
      (logic.hh): Remove inclusion.
      (mlc_bool): Move to...
      
      The Boolean expression types are now handled by special classes.
      Yet mlc::true_ and mlc::false_ remain expression types in addition
      of value types.
      
      - mlc/bexpr.hh: ...this file.  This macro only applies on Boolean
      expression types.
      (bexpr_): Remove this obsolete wrapper.
      (bexpr_is_<b>): New base class with its couple of specializations
      which act as a replacement for bool_<b> for expression types.
      (internal::bool_of_): Replace the meta-code for mlc_bool.
      
      Those changes induce a lot of updates described below.
      
      - mlc/pair.hh: Update includes.
      - mlc/logic.hh: Update.  Instead of deriving from bool_<b>
      Boolean expression types now derive from bexpr_is_<b>.
      (and_list_, or_list_): Comment to postpone updating while keeping
      code compile.
      - mlc/implies.hh: Update inheritance.
      - mlc/if.hh: Update includes and add assertion.
      - mlc/assert.hh: Update includes.
      - mlc/valist.hh: Likewise.
      - mlc/wrap.hh: Remove obsolete code.
      - mlc/is_a.hh: Update inheritance.
      (bexpr_): Replace by wrap_.
      - mlc/case.hh: Update.  Now use mlc_bool instead of ::value.
      - mlc/cmp.hh: Update inheritance.
      (eq_::ensure): Remove this obsolete feature.
      - mlc/value.hh: Move sub-classes of value to...
      - mlc/int.hh, mlc/char.hh: ...these new files.
      - mlc/values.hh: New file that includes the whole value types material.
      
      
      git-svn-id: https://svn.lrde.epita.fr/svn/oln/trunk@429 4aad255d-cdde-0310-9447-f3009e2ae8c0
      b14a413a
    • Thierry Geraud's avatar
      First step towards explicit bexpr. · 7a02f045
      Thierry Geraud authored
      - mlc/bool.hh: Fix doc typo.
      - mlc/TODO: Update.
      - mlc/wrap.hh (unwrap): Remove cause useless.
      (value_wrap_, boolean_wrap_): New dedicated wrappers.
      - mlc/bexpr.hh: New file. It provides an explicit wrapper for Boolean
      expression types; it is a first step towards the disambiguation between
      the Boolean value type and the many Boolean expression types.
      - mlc/is_a.hh (mlc_is_a): Update; now use bexpr_ instead of wrap_.
      - mlc/value.hh (mlc_value): Suggest this macro.
      
      
      git-svn-id: https://svn.lrde.epita.fr/svn/oln/trunk@428 4aad255d-cdde-0310-9447-f3009e2ae8c0
      7a02f045
    • Thierry Geraud's avatar
      Create assert.hh from bool.hh contents. · 93e8723d
      Thierry Geraud authored
      - mlc/bool.hh (mlc_type_iff, mlc::type_iff_): Remove cause soon obsolete.
      (bool_<true>::ensure()): Remove to force the client to use assert_.
      (bool_): Add using clauses to make contents explicit.
      (internal::check_, internal::check_item_): Move to...
      (literal_, no_error_message, no_bexpr): Move to...
      (assert_, multiple_assert_): Move to...
      - mlc/assert.hh: ... this new file.
      - tests/is_a.cc: Update.
      - tests/if.cc: Update.
      - tests/typedef.cc: Update.
      - mlc/logic.hh: Update.
      
      
      git-svn-id: https://svn.lrde.epita.fr/svn/oln/trunk@427 4aad255d-cdde-0310-9447-f3009e2ae8c0
      93e8723d
  3. 14 Mar, 2006 4 commits
    • Roland Levillain's avatar
      Set the pseudosuper link using a separate class instead of an · 3b7cf14a
      Roland Levillain authored
      	internal virtual type.
      
      	* stc/properties.hh (stc_equip_namespace_with_properties):
      	Generate a set_pseudosuper_type struct.  Use it to get the
      	pseudosuper links in recursive vtype retrieval algorithms.
      	(stc_set_pseudosuper, stc_pseudosuper, stc_pseudosuper_): New
      	macros.
      	* tests/properties.cc: Adjust.
      
      
      git-svn-id: https://svn.lrde.epita.fr/svn/oln/trunk@426 4aad255d-cdde-0310-9447-f3009e2ae8c0
      3b7cf14a
    • Roland Levillain's avatar
      * ChangeLog, metalic/ChangeLog: Clean up ChangeLogs. · 462384ca
      Roland Levillain authored
      	* extended/ChangeLog: New.
      
      
      git-svn-id: https://svn.lrde.epita.fr/svn/oln/trunk@425 4aad255d-cdde-0310-9447-f3009e2ae8c0
      462384ca
    • Roland Levillain's avatar
      New subproject: Static (`stc' for short). · 1eadf52f
      Roland Levillain authored
      	Move the SCOOP machinery (virtual types/properties) from Metalic
      	to Static.
      
      	* configure.ac (static/Makefile, static/stc/Makefile)
      	(static/tests/Makefile): Configure these files.
      	* metalic/stc/properties.hh: Move...
      	* static/stc/properties.hh: ...here.
      	(mlc_internal_get_typedef, mlc_equip_namespace_with_properties)
      	(mlc_set_super, mlc_super, mlc_super_, mlc_typeof, mlc_typeof_):
      	Rename as...
      	(stc_internal_get_typedef, stc_equip_namespace_with_properties)
      	(stc_set_super, stc_super, stc_super_, stc_typeof, stc_typeof_):
      	...this.
      	Adjust.
      	* metalic/tests/properties.cc: Move...
      	* static/tests/properties.cc: ...here.
      	Adjust.
      	* Makefile.am (SUBDIRS): Add static.
      	* static/Makefile.am, static/stc/Makefile.am,
      	* static/tests/Makefile.am: New.
      	* metalic/mlc/Makefile.am (nobase_mlc_HEADERS): Remove
      	properties.hh.
      	* metalic/tests/Makefile.am (check_PROGRAMS): Remove properties.
      	(properties_SOURCES): Remove.
      	* extended/tests/Makefile.am (AM_CPPFLAGS): Add
      	-I$(top_srcdir)/metalic.
      
      
      git-svn-id: https://svn.lrde.epita.fr/svn/oln/trunk@424 4aad255d-cdde-0310-9447-f3009e2ae8c0
      1eadf52f
    • Roland Levillain's avatar
      Catch up with recent changes and fix some tests of Metalic. · 8b4beec4
      Roland Levillain authored
      	* metalic/mlc/properties.hh (mlc_equip_namespace_with_properties):
      	Catch up with recent changes in typedef.hh/ret.hh.
      	Don't declare a local `ret' typedef; include mlc/ret.hh, and use
      	the `mlc_ret' macro instead.
      	* metalic/mlc/cmp.hh (eq_<T, T>): Solve ambiguous calls to
      	ensure().
      	* metalic/tests/ret.cc: Include mlc/ret.hh instead of
      	mlc/typedef.hh.
      	* extended/tests/Makefile.am (mlcdir, nobase_mlc_HEADERS): Remove.
      	(AM_CPPFLAGS): New.
      	* extended/xtd/Makefile.am: New file.
      
      
      git-svn-id: https://svn.lrde.epita.fr/svn/oln/trunk@423 4aad255d-cdde-0310-9447-f3009e2ae8c0
      8b4beec4
  4. 10 Mar, 2006 1 commit
  5. 07 Mar, 2006 1 commit
  6. 03 Mar, 2006 2 commits
  7. 02 Mar, 2006 1 commit
    • Thierry Geraud's avatar
      Add meta switch-case; disambiguate typedef_. · 55d35dcf
      Thierry Geraud authored
      	"typedef exists but its value is not_found" and "typedef is
      	not found because it does not exist".
      
      - tests/case.cc: New file.
      - tests/switch.cc (where_): Precise name.
      - tests/ret.cc: New file.
      - mlc/bool.hh (assert): Remove is_true to avoid cryptic error
      message such as "is_true" inaccessible.
      - mlc/flags.hh (found): New class.
      - mlc/typedef.hh (result2): New inner class to disambiguate between
      "typedef is found but its value is not_found" and "typedef is not
      found".
      (mlc_ret, mlc_decl_typedef(ret)): Move to...
      - mlc/ret.hh: ...this new file.
      - mlc/switch.hh: Change that makes this file soon obsolete.
      - mlc/case.hh: New file.
      
      
      git-svn-id: https://svn.lrde.epita.fr/svn/oln/trunk@415 4aad255d-cdde-0310-9447-f3009e2ae8c0
      55d35dcf
  8. 20 Feb, 2006 1 commit
    • Roland Levillain's avatar
      Revamp the virtual types (aka properties) system. · 119255ef
      Roland Levillain authored
      No longer use the C++'s inheritance mechanism to ``pack'' the
      internal vtypes of a class.  Rely on a metacode algorithm to
      recursively look for vtypes in internal and external vtypes
      instead, using both the super link and a ``pseudosuper'' link to
      visit the upper classes.  The set/get classes have been replaced
      by a single class (in fact, by two classes, one for internal
      vtypes, the other for external vtypes).  The pseudosuper link is
      used to inherit (or fetch) the vtypes from a given class, without
      needing to inherit from this class.
      
      - metalic/mlc/properties.hh (mlc_equip_namespace_with_properties):
      Rewrite this macro.
      (set_types, set_ext_types): Rename as...
      (vtypes, ext_vtypes): ...this.
      (get_types, get_ext_type): Remove.
      - metalic/tests/properties.cc: Update the test.
      Check for new cases (external vtype, pseudo inheritance of
      vtypes).
      (rec_get_vtype, rec_get_ext_vtype): New.
      This class holds the algorithm for the recursive retrieval of
      internal/external vtypes.
      (typeof_): Adjust.
      
      
      git-svn-id: https://svn.lrde.epita.fr/svn/oln/trunk@414 4aad255d-cdde-0310-9447-f3009e2ae8c0
      119255ef
  9. 17 Feb, 2006 2 commits
  10. 16 Feb, 2006 3 commits
  11. 15 Feb, 2006 2 commits
  12. 14 Feb, 2006 5 commits
  13. 10 Feb, 2006 1 commit
  14. 09 Feb, 2006 1 commit
  15. 07 Feb, 2006 1 commit
    • Thierry Geraud's avatar
      Add documentation. · 5993f282
      Thierry Geraud authored
      - mlc/is_a.hh (wrap): Move to...
      - mlc/wrap.hh: ...this new file.
      - mlc/bool.hh (ensure_): Take just one parameter; the former variadic
      version is now handled by...
      (ensure_list_): ...this new class.
      - mlc/typedef.hh: Rename some internals.
      
      
      git-svn-id: https://svn.lrde.epita.fr/svn/oln/trunk@388 4aad255d-cdde-0310-9447-f3009e2ae8c0
      5993f282
  16. 26 Jan, 2006 2 commits
    • Roland Levillain's avatar
      Static `if'. · 4495d6c7
      Roland Levillain authored
      - mlc/if.hh: New file.
      
      
      git-svn-id: https://svn.lrde.epita.fr/svn/oln/trunk@387 4aad255d-cdde-0310-9447-f3009e2ae8c0
      4495d6c7
    • Thierry Geraud's avatar
      Add mlc::ensure_ and update. . · 58791344
      Thierry Geraud authored
      - mlc/bool.hh: Update documentation.
      (internal::value_<bool,b>::ret): Rename as...
      (internal::value_<bool,b>::eval): ...this.
      (bool_<true>::ensure_t): Rename as...
      (bool_<true>::internal_ensure_): ...this.
      (internal::ensure_item<i,expr>): New class.
      (internal::none_): Relocate.
      (internal::none_::internal_ensure_): New typedef.
      (ensure_): New class.
      - mlc/value.hh (is_value, is_not_value): Move to...
      - mlc/cmp.hh (is_value, is_not_value): ...here.
      (eq_, neq_): Update static checks.
      
      
      git-svn-id: https://svn.lrde.epita.fr/svn/oln/trunk@386 4aad255d-cdde-0310-9447-f3009e2ae8c0
      58791344
  17. 25 Jan, 2006 2 commits
    • Roland Levillain's avatar
      Move Metalic-related entries in their own ChangeLog. · 34bd6bb2
      Roland Levillain authored
      - metalic/mlc: Move Metalic-related entries...
      - metalic/ChangeLog: ...here (new).
      
      
      git-svn-id: https://svn.lrde.epita.fr/svn/oln/trunk@385 4aad255d-cdde-0310-9447-f3009e2ae8c0
      34bd6bb2
    • Thierry Geraud's avatar
      Clean up of core mlc classes and add some documentation. · e398d9d6
      Thierry Geraud authored
      A lot of cleanups.  Client concrete classes in mlc are now all
      postfixed by '_'.  For instance, we have and_, int_, and so on.
      
      - metalic: New.
      - metalic/mlc: New.
      - metalic/mlc/type.hh: New.
      - metalic/mlc/bool.hh: New.
      (abstract::boolean): New class.
      (bool_): New class.
      (value, true_type, false_type): Rename as...
      (value_, true_, false_): ...these.
      (ors, ands): Rename as...
      (ors_, ands_): ...these.
      (internal): Cosmetic change.
      (is_true, is_false): Remove.
      (true_, false_): New typedef ensure_t.
      - metalic/mlc/is_a.hh: New.
      (form): Move in the internal namespace cause names are too long
      for a decent client use.
      - metalic/mlc/value.hh: New.
      (value): Rename as...
      (value_): ...this.
      (mlc_internal_decl_unsigned_): New macro.
      (mlc_internal_decl_signed_): New macro.
      (uchar_, ushort_, uint_, ulong_): New classes.
      (schar_, short_, int_, long_): New classes.
      (is_value, is_not_value): New meta-functions.
      - metalic/mlc/flags.hh: New.
      (flag): New abstract class.
      (undefined_type, unknown_type, no_type): Rename as...
      (undefined, unknown, none): ...these.
      (not_ok): Remove cause useless.
      - metalic/mlc/cmp.hh: New.
      (eq, neq): Rename as...
      (eq_, neq_): ...these.
      (is_found, is_not_found, is_ok): Remove cause irrelevant here.
      (mlc_is_found, mlc_is_not_found): Likewise.
      - metalic/mlc/typedef.hh: New.
      
      
      git-svn-id: https://svn.lrde.epita.fr/svn/oln/trunk@384 4aad255d-cdde-0310-9447-f3009e2ae8c0
      e398d9d6
  18. 24 Jan, 2006 3 commits