add std_map
fix compact mode git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11731 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
9b318c45bc
commit
b279cd3dde
5 changed files with 36 additions and 27 deletions
|
|
@ -50,7 +50,7 @@ SWIG_InitializeModule(0);
|
||||||
%typemap(scheck) SWIGTYPE[ANY]
|
%typemap(scheck) SWIGTYPE[ANY]
|
||||||
%{
|
%{
|
||||||
# assert(length($input) > $1_dim0)
|
# assert(length($input) > $1_dim0)
|
||||||
assert(all(sapply($input, class) == "$R_class"))
|
assert(all(sapply($input, class) == "$R_class"));
|
||||||
%}
|
%}
|
||||||
|
|
||||||
%typemap(out) void "";
|
%typemap(out) void "";
|
||||||
|
|
@ -122,14 +122,14 @@ SWIG_InitializeModule(0);
|
||||||
/* Handling vector case to avoid warnings,
|
/* Handling vector case to avoid warnings,
|
||||||
although we just use the first one. */
|
although we just use the first one. */
|
||||||
%typemap(scheck) unsigned int %{
|
%typemap(scheck) unsigned int %{
|
||||||
assert(length($input) == 1 && $input >= 0, "All values must be non-negative")
|
assert(length($input) == 1 && $input >= 0, "All values must be non-negative");
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
|
||||||
%typemap(scheck) int, long %{
|
%typemap(scheck) int, long %{
|
||||||
if(length($input) > 1) {
|
if(length($input) > 1) {
|
||||||
warning("using only the first element of $input")
|
warning("using only the first element of $input");
|
||||||
}
|
};
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -60,11 +60,11 @@
|
||||||
%typemap(scoercein) std::string, std::string *, std::string &
|
%typemap(scoercein) std::string, std::string *, std::string &
|
||||||
%{ $input = as($input, "character"); %}
|
%{ $input = as($input, "character"); %}
|
||||||
%typemap(scoercein) enum SWIGTYPE
|
%typemap(scoercein) enum SWIGTYPE
|
||||||
%{ $input = enumToInteger($input, "$R_class") %}
|
%{ $input = enumToInteger($input, "$R_class"); %}
|
||||||
%typemap(scoercein) enum SWIGTYPE &
|
%typemap(scoercein) enum SWIGTYPE &
|
||||||
%{ $input = enumToInteger($input, "$R_class") %}
|
%{ $input = enumToInteger($input, "$R_class"); %}
|
||||||
%typemap(scoercein) enum SWIGTYPE *
|
%typemap(scoercein) enum SWIGTYPE *
|
||||||
%{ $input = enumToInteger($input, "$R_class") %}
|
%{ $input = enumToInteger($input, "$R_class"); %}
|
||||||
|
|
||||||
|
|
||||||
%typemap(scoercein) SWIGTYPE, SWIGTYPE *, SWIGTYPE &
|
%typemap(scoercein) SWIGTYPE, SWIGTYPE *, SWIGTYPE &
|
||||||
|
|
@ -84,14 +84,14 @@
|
||||||
%typemap(scoercein) SWIGTYPE[ANY]
|
%typemap(scoercein) SWIGTYPE[ANY]
|
||||||
%{
|
%{
|
||||||
if(is.list($input))
|
if(is.list($input))
|
||||||
assert(all(sapply($input, class) == "$R_class"))
|
assert(all(sapply($input, class) == "$R_class"));
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
|
||||||
/* **************************************************************** */
|
/* **************************************************************** */
|
||||||
|
|
||||||
%typemap(scoercein) bool, bool *, bool &
|
%typemap(scoercein) bool, bool *, bool &
|
||||||
"$input = as.logical($input) ";
|
"$input = as.logical($input);";
|
||||||
%typemap(scoercein) int,
|
%typemap(scoercein) int,
|
||||||
int *,
|
int *,
|
||||||
int &,
|
int &,
|
||||||
|
|
|
||||||
5
Lib/r/std_map.i
Normal file
5
Lib/r/std_map.i
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
%fragment("StdMapTraits","header")
|
||||||
|
%{
|
||||||
|
%}
|
||||||
|
|
||||||
|
%include <std/std_map.i>
|
||||||
|
|
@ -1 +1,5 @@
|
||||||
%include<std/std_pair.i>
|
%fragment("StdPairTraits","header")
|
||||||
|
%{
|
||||||
|
%}
|
||||||
|
|
||||||
|
%include<std/std_pair.i>
|
||||||
|
|
|
||||||
|
|
@ -1601,9 +1601,9 @@ void R::dispatchFunction(Node *n) {
|
||||||
List *dispatch = Swig_overload_rank(n, true);
|
List *dispatch = Swig_overload_rank(n, true);
|
||||||
int nfunc = Len(dispatch);
|
int nfunc = Len(dispatch);
|
||||||
Printv(f->code,
|
Printv(f->code,
|
||||||
"argtypes <- mapply(class, list(...))\n",
|
"argtypes <- mapply(class, list(...));\n",
|
||||||
"argv <- list(...)\n",
|
"argv <- list(...);\n",
|
||||||
"argc <- length(argtypes)\n", NIL );
|
"argc <- length(argtypes);\n", NIL );
|
||||||
|
|
||||||
Printf(f->code, "# dispatch functions %d\n", nfunc);
|
Printf(f->code, "# dispatch functions %d\n", nfunc);
|
||||||
int cur_args = -1;
|
int cur_args = -1;
|
||||||
|
|
@ -1649,16 +1649,16 @@ void R::dispatchFunction(Node *n) {
|
||||||
}
|
}
|
||||||
p = Getattr(p, "tmap:in:next");
|
p = Getattr(p, "tmap:in:next");
|
||||||
}
|
}
|
||||||
Printf(f->code, ") { f <- %s%s }\n", sfname, overname);
|
Printf(f->code, ") { f <- %s%s; }\n", sfname, overname);
|
||||||
} else {
|
} else {
|
||||||
Printf(f->code, "f <- %s%s", sfname, overname);
|
Printf(f->code, "f <- %s%s; ", sfname, overname);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (cur_args != -1) {
|
if (cur_args != -1) {
|
||||||
Printv(f->code, "}", NIL);
|
Printv(f->code, "}", NIL);
|
||||||
}
|
}
|
||||||
Printv(f->code, "\nf(...)", NIL);
|
Printv(f->code, ";\nf(...)", NIL);
|
||||||
Printv(f->code, "\n}", NIL);
|
Printv(f->code, ";\n}", NIL);
|
||||||
Wrapper_print(f, sfile);
|
Wrapper_print(f, sfile);
|
||||||
Printv(sfile, "# Dispatch function\n", NIL);
|
Printv(sfile, "# Dispatch function\n", NIL);
|
||||||
DelWrapper(f);
|
DelWrapper(f);
|
||||||
|
|
@ -1886,16 +1886,16 @@ int R::functionWrapper(Node *n) {
|
||||||
String *snargs = NewStringf("%d", nargs);
|
String *snargs = NewStringf("%d", nargs);
|
||||||
Printv(sfun->code, "if(is.function(", name, ")) {", "\n",
|
Printv(sfun->code, "if(is.function(", name, ")) {", "\n",
|
||||||
"assert('...' %in% names(formals(", name,
|
"assert('...' %in% names(formals(", name,
|
||||||
")) || length(formals(", name, ")) >= ", snargs, ")\n} ", NIL);
|
")) || length(formals(", name, ")) >= ", snargs, ");\n} ", NIL);
|
||||||
Delete(snargs);
|
Delete(snargs);
|
||||||
|
|
||||||
Printv(sfun->code, "else {\n",
|
Printv(sfun->code, "else {\n",
|
||||||
"if(is.character(", name, ")) {\n",
|
"if(is.character(", name, ")) {\n",
|
||||||
name, " = getNativeSymbolInfo(", name, ")",
|
name, " = getNativeSymbolInfo(", name, ");",
|
||||||
"\n}\n",
|
"\n};\n",
|
||||||
"if(is(", name, ", \"NativeSymbolInfo\")) {\n",
|
"if(is(", name, ", \"NativeSymbolInfo\")) {\n",
|
||||||
name, " = ", name, "$address", "\n}\n",
|
name, " = ", name, "$address", ";\n}\n",
|
||||||
"}\n",
|
"}; \n",
|
||||||
NIL);
|
NIL);
|
||||||
} else {
|
} else {
|
||||||
Printf(sfun->code, "%s\n", tm);
|
Printf(sfun->code, "%s\n", tm);
|
||||||
|
|
@ -2452,11 +2452,11 @@ int R::generateCopyRoutines(Node *n) {
|
||||||
|
|
||||||
/* The S functions to get and set the member value. */
|
/* The S functions to get and set the member value. */
|
||||||
String *elNameT = replaceInitialDash(elName);
|
String *elNameT = replaceInitialDash(elName);
|
||||||
Printf(copyToR->code, "obj@%s = value$%s\n", elNameT, elNameT);
|
Printf(copyToR->code, "obj@%s = value$%s;\n", elNameT, elNameT);
|
||||||
Printf(copyToC->code, "obj$%s = value@%s\n", elNameT, elNameT);
|
Printf(copyToC->code, "obj$%s = value@%s;\n", elNameT, elNameT);
|
||||||
Delete(elNameT);
|
Delete(elNameT);
|
||||||
}
|
}
|
||||||
Printf(copyToR->code, "obj\n}\n\n");
|
Printf(copyToR->code, "obj;\n}\n\n");
|
||||||
String *rclassName = getRClassNameCopyStruct(type, 0); // without the Ref.
|
String *rclassName = getRClassNameCopyStruct(type, 0); // without the Ref.
|
||||||
Printf(sfile, "# Start definition of copy functions & methods for %s\n", rclassName);
|
Printf(sfile, "# Start definition of copy functions & methods for %s\n", rclassName);
|
||||||
|
|
||||||
|
|
@ -2466,9 +2466,9 @@ int R::generateCopyRoutines(Node *n) {
|
||||||
|
|
||||||
|
|
||||||
Printf(sfile, "# Start definition of copy methods for %s\n", rclassName);
|
Printf(sfile, "# Start definition of copy methods for %s\n", rclassName);
|
||||||
Printf(sfile, "setMethod('copyToR', '_p_%s', CopyToR%s)\n", rclassName,
|
Printf(sfile, "setMethod('copyToR', '_p_%s', CopyToR%s);\n", rclassName,
|
||||||
mangledName);
|
mangledName);
|
||||||
Printf(sfile, "setMethod('copyToC', '%s', CopyToC%s)\n\n", rclassName,
|
Printf(sfile, "setMethod('copyToC', '%s', CopyToC%s);\n\n", rclassName,
|
||||||
mangledName);
|
mangledName);
|
||||||
|
|
||||||
Printf(sfile, "# End definition of copy methods for %s\n", rclassName);
|
Printf(sfile, "# End definition of copy methods for %s\n", rclassName);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue