nsfAPI.h

Clone Tools
  • last updated 3 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Provide support for TIP 627 (Tcl 8.7a6+ and Tcl 9)

TIP 627 introduces support for > 2^31 elements in object vectors

(e.g., number of words in a single Tcl command). For details, see

https://core.tcl-lang.org/tips/doc/trunk/tip/627.md

To provide also backwards compatibility, this change uses the macros

TCL_COMMAND_OBJPROC, TCL_CREATEOBJCOMMAND, TCL_NRCALLOBJPROC,

TCL_NRCREATECOMMAND, TCL_OBJCMDPROC_T, and TCL_OBJC_T.

  1. … 21 more files in changeset.
New feature: added support for return value checker for nsf::proc

One can now specify "-returns ...." in nsf::proc commands the same way

as in nx/XOTcl2 methods.

nsf::proc ... /procName/ /arguments/ ?-returns /valueconstraint/? /body/

When return value checkers are defined, these are returned by the

usual introspection interface.

% nsf::proc ::foo {-a:integer} -returns integer {return 1}

% nsf::cmd::info definition ::foo

::nsf::proc ::foo -a:integer -returns integer {return 1}

% nsf::cmd::info returns ::foo

integer

The regression test was extended to cover these cases.

  1. … 5 more files in changeset.
added option "-asdict" to nsf::parseargs

The new option makes it easier to process the parsed argument in different

contexts

  1. … 3 more files in changeset.
added enumeration values

  1. … 5 more files in changeset.
improve type safety of generated code

  1. … 1 more file in changeset.
add missing EXTERN declarations

  1. … 4 more files in changeset.
avoid variable name "index" in generated code since "index" shadows an outer function

  1. … 3 more files in changeset.
- improved error message "not allowed to have default": make clear, this is from a parameter specification - added object property "autonamed" (set automatically for objects created via "new") - xotcl2 volatile: improved backward compatibility with XOTcl 1 - extended regression test

  1. … 4 more files in changeset.
- added new variant of "volatile" trying to mimick the XOTcl1 volatile behavior. - added experimental feature NSF_WITH_TCL_OBJ_TYPES_AS_CONVERTER, which uses registered TclObjTypes as value checkers (currently deactivated)

  1. … 4 more files in changeset.
* nsf.c (ListMethod): Provide a disassemble implementation based on ::tcl::unsupported::disassemble. [::nsf::cmf::info disassemble] is generally available, the info ?object? method variants only in development mode. Implementation covers proc methods and ::nsf::procs. Along the way, prettify some code paths in ListMethod.

  1. … 7 more files in changeset.
* gentclAPI.tcl, nsfAPI.decls (createconverter): Support for "-global 1" flag that will cause the options array corresponding to an enumeration to become available as a global, properly Nsf_* prefixed symbol. Used for NsfConfigureCmd and the corresponding DTrace probe, for now.

  1. … 2 more files in changeset.
More code cleanup

- make nsf compilable with tcl 8.7.2 and TCL_NO_DEPRECATED turned on

- prefer bool over int

- reduce nr of returns before end of function

- line bread overlong function definitions

  1. … 12 more files in changeset.
Align prototypes with function definitons and minor code cleanup

- reduce number of return statements before end of function

- reduce variable scopes

  1. … 3 more files in changeset.
align naming of variables in function prototypes and definitions

  1. … 5 more files in changeset.
make argument names more regular improve alignment of prototype names with function definitions

  1. … 3 more files in changeset.
Improve alignment of prototypes with function definitions improve regularity of variable names

  1. … 10 more files in changeset.
- new command "tnsf::definitionnamespace" - experiment with command in regression test

  1. … 3 more files in changeset.
Add Valgrind/callgrind support

  1. … 4 more files in changeset.
- Dont't use ConvertToNothing but NULL in the terminating record, since the former is not available for extensions

  1. … 1 more file in changeset.
- provide clean compile for compilations with "-Wwrite-strings" - add const declarations

  1. … 6 more files in changeset.
- remove configure trace|profile

  1. … 2 more files in changeset.
- new subcommand "nsf::current level", returns empty, if we are not on a nsf frame/level. - keep compatibility with traditional "nsf::current activelevel" (continue to return 1, if we are not on an nsf frame)

  1. … 3 more files in changeset.
Removed two unused functions: NsfObjInfoObjectparameterMethod() and NsfParamDefsFilter(). Makes CID 88775 obsolete

  1. … 4 more files in changeset.
code generator changes: - create enum types instead of enum values for nsf API - use enum types in code

  1. … 6 more files in changeset.
cmd resolver work - fix test, when OS specific cmd resolver is used from a NSF_CSC_CALL_IS_COMPILE frame - improved output from __db_show_obj: put results into one line instead of multiple lines - new debug function __db_get_obj: return into about a tcl_obj in form of a dict (in general, one should not rely on Tcl_Obj internals, especially when upgrading over major Tcl versions, but for testing/understanding behavior etc., such a command is helpful). - extend regression test

  1. … 5 more files in changeset.
- add new command nsf::parseargs to parse an argument vector against a parameter definition and to set the resulting variables in the current scope - extend regression test

  1. … 5 more files in changeset.
Slot trace reform: - redesign of slot interface of traces from * variables contains cmds and variable references to * slot specific methods with the same interface as slot-setters - new: * specify flag "-trace" with a list of values "get", "set", "default" * when flag is set, a trace will be registered calling methods value=get obj variable value=set obj variable value value=default obj variable on the slot (actually the first two are identical with the methods used for slot-defined accessors) - updated regression test * new flag "-notrace" for "nsf::var::set" and "nsf::var::get"

  1. … 9 more files in changeset.
- nx: added flag "-debug" and "-deprecated" to methods "method" "object method" "alias" "object alias" "forward" "object forward" such one can use e.g. /cls/ public alias -deprecated|-debug /method/ ... /cls/ public forward -deprecated|-debug /method/ ... /cls/ public method -deprecated|-debug /method/ ... /obj/ public object alias -deprecated|-debug /method/ ... /obj/ public object forward -deprecated|-debug /method/ ... /obj/ public object method -deprecated|-debug /method/ ...

- added new cmd:

nsf::method::property /obj/ ?-per-object? /method/ exists

to check, whether a method is defined for an object.

- output triggered via "-debug" is now generated via the

tcl functions "nsf::debug::call" and "nsf::debug::exit",

that can be redefined (similar to e.g. nsf::deprecated)

- cleanup of nsfProfile.c commands

- extended regression test

  1. … 13 more files in changeset.
- added nsf::method::property /obj/ /method/ debug ?0|1? when debug is activated, a debug line written to the log file when the function is called and exited

- added nsf::method::property /obj/ /method/ deprecated ?0|1?

when deprecated is activated, a warning written to the log file when

the function is called

- added flags to nsf::proc: -debug and -deprecated

(can als be set via nsf::method::property with an arbitrary object

and proc passed fully qualified)

- bumped version number to 2.0.1

  1. … 11 more files in changeset.
- new introspection method: "/obj/ info baseclass" - extended regression test

  1. … 10 more files in changeset.