Skip to content

Commit 958e2f7

Browse files
Andreas BlätteAndreas Blätte
authored andcommitted
new fn p_attr_default() PolMine#63
1 parent cf4e1a3 commit 958e2f7

File tree

10 files changed

+123
-1
lines changed

10 files changed

+123
-1
lines changed

NAMESPACE

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ export(get_tmp_registry)
4747
export(id_to_cpos)
4848
export(id_to_freq)
4949
export(p_attr)
50+
export(p_attr_default)
5051
export(p_attr_lexicon_size)
5152
export(p_attr_size)
5253
export(ranges_to_cpos)

R/RcppExports.R

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@
4141
.Call(`_RcppCWB_cwb_version`)
4242
}
4343

44+
.p_attr_default <- function() {
45+
.Call(`_RcppCWB_p_attr_default`)
46+
}
47+
4448
.s_attr <- function(corpus, s_attribute, registry) {
4549
.Call(`_RcppCWB__s_attr`, corpus, s_attribute, registry)
4650
}

R/cl.R

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -583,6 +583,20 @@ p_attr_size <- function(p_attr){
583583
.p_attr_size(p_attr)
584584
}
585585

586+
#' Get default p-attribute
587+
#'
588+
#' Usually the default p-attribute will be "word". Use this function to avoid
589+
#' a hard-coded solution. Extracts the default attribute defined in the CWB
590+
#' source code.
591+
#'
592+
#' @rdname p_attr_default
593+
#' @return A length-one `character` vector.
594+
#' @export
595+
p_attr_default <- function(){
596+
.p_attr_default()
597+
}
598+
599+
586600
#' @param s_attr A `externalptr` referencing a p-attribute.
587601
#' @rdname cl_rework
588602
#' @export

inst/include/RcppCWB_RcppExports.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,27 @@ namespace RcppCWB {
4545
return Rcpp::as<Rcpp::StringVector >(rcpp_result_gen);
4646
}
4747

48+
inline Rcpp::StringVector _p_attr_default() {
49+
typedef SEXP(*Ptr__p_attr_default)();
50+
static Ptr__p_attr_default p__p_attr_default = NULL;
51+
if (p__p_attr_default == NULL) {
52+
validateSignature("Rcpp::StringVector(*_p_attr_default)()");
53+
p__p_attr_default = (Ptr__p_attr_default)R_GetCCallable("RcppCWB", "_RcppCWB__p_attr_default");
54+
}
55+
RObject rcpp_result_gen;
56+
{
57+
RNGScope RCPP_rngScope_gen;
58+
rcpp_result_gen = p__p_attr_default();
59+
}
60+
if (rcpp_result_gen.inherits("interrupted-error"))
61+
throw Rcpp::internal::InterruptedException();
62+
if (Rcpp::internal::isLongjumpSentinel(rcpp_result_gen))
63+
throw Rcpp::LongjumpException(rcpp_result_gen);
64+
if (rcpp_result_gen.inherits("try-error"))
65+
throw Rcpp::exception(Rcpp::as<std::string>(rcpp_result_gen).c_str());
66+
return Rcpp::as<Rcpp::StringVector >(rcpp_result_gen);
67+
}
68+
4869
inline SEXP _s_attr(SEXP corpus, SEXP s_attribute, SEXP registry) {
4970
typedef SEXP(*Ptr__s_attr)(SEXP,SEXP,SEXP);
5071
static Ptr__s_attr p__s_attr = NULL;

man/p_attr_default.Rd

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

patch/PatchCWB.R

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -793,7 +793,17 @@ PatchCWB <- R6Class(
793793
' char* version = "";',
794794
" #endif",
795795
" return version;",
796+
"}",
797+
"",
798+
"char* cl_get_p_attr_default(){",
799+
" #ifdef CWB_DEFAULT_ATT_NAME",
800+
" char* p_attr = CWB_DEFAULT_ATT_NAME;",
801+
" #else",
802+
' char* p_attr = "";',
803+
" #endif",
804+
" return p_attr;",
796805
"}"
806+
797807
)
798808
),
799809

@@ -2048,7 +2058,7 @@ PatchCWB <- R6Class(
20482058
),
20492059

20502060
"src/cwb/cl/cl.h" = list(
2051-
insert_before = list("\\s*/\\*\\sThe\\sactual\\scode\\sof\\sthe\\sheader\\sfile\\sbegins\\shere\\.\\s\\*/\\s*$", c("char* cl_get_version();", ""), 1L),
2061+
insert_before = list("\\s*/\\*\\sThe\\sactual\\scode\\sof\\sthe\\sheader\\sfile\\sbegins\\shere\\.\\s\\*/\\s*$", c("char* cl_get_version();", "char* cl_get_p_attr_default();", ""), 1L),
20522062
insert_before = list(
20532063
"^\\s*(typedef\\sstruct\\sClAutoString\\s\\*ClAutoString;)\\s*$",
20542064
"#ifndef __cplusplus ", 1L

src/RcppExports.cpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,39 @@ RcppExport SEXP _RcppCWB_cwb_version() {
169169
UNPROTECT(1);
170170
return rcpp_result_gen;
171171
}
172+
// p_attr_default
173+
Rcpp::StringVector p_attr_default();
174+
static SEXP _RcppCWB_p_attr_default_try() {
175+
BEGIN_RCPP
176+
Rcpp::RObject rcpp_result_gen;
177+
rcpp_result_gen = Rcpp::wrap(p_attr_default());
178+
return rcpp_result_gen;
179+
END_RCPP_RETURN_ERROR
180+
}
181+
RcppExport SEXP _RcppCWB_p_attr_default() {
182+
SEXP rcpp_result_gen;
183+
{
184+
Rcpp::RNGScope rcpp_rngScope_gen;
185+
rcpp_result_gen = PROTECT(_RcppCWB_p_attr_default_try());
186+
}
187+
Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
188+
if (rcpp_isInterrupt_gen) {
189+
UNPROTECT(1);
190+
Rf_onintr();
191+
}
192+
bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
193+
if (rcpp_isLongjump_gen) {
194+
Rcpp::internal::resumeJump(rcpp_result_gen);
195+
}
196+
Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
197+
if (rcpp_isError_gen) {
198+
SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
199+
UNPROTECT(1);
200+
Rf_error(CHAR(rcpp_msgSEXP_gen));
201+
}
202+
UNPROTECT(1);
203+
return rcpp_result_gen;
204+
}
172205
// _s_attr
173206
SEXP _s_attr(SEXP corpus, SEXP s_attribute, SEXP registry);
174207
static SEXP _RcppCWB__s_attr_try(SEXP corpusSEXP, SEXP s_attributeSEXP, SEXP registrySEXP) {
@@ -2474,6 +2507,7 @@ static int _RcppCWB_RcppExport_validate(const char* sig) {
24742507
static std::set<std::string> signatures;
24752508
if (signatures.empty()) {
24762509
signatures.insert("Rcpp::StringVector(*.cwb_version)()");
2510+
signatures.insert("Rcpp::StringVector(*.p_attr_default)()");
24772511
signatures.insert("SEXP(*.s_attr)(SEXP,SEXP,SEXP)");
24782512
signatures.insert("SEXP(*.p_attr)(SEXP,SEXP,SEXP)");
24792513
signatures.insert("int(*.cl_attribute_size)(SEXP,SEXP,SEXP,SEXP)");
@@ -2546,6 +2580,7 @@ static int _RcppCWB_RcppExport_validate(const char* sig) {
25462580
// registerCCallable (register entry points for exported C++ functions)
25472581
RcppExport SEXP _RcppCWB_RcppExport_registerCCallable() {
25482582
R_RegisterCCallable("RcppCWB", "_RcppCWB_.cwb_version", (DL_FUNC)_RcppCWB_cwb_version_try);
2583+
R_RegisterCCallable("RcppCWB", "_RcppCWB_.p_attr_default", (DL_FUNC)_RcppCWB_p_attr_default_try);
25492584
R_RegisterCCallable("RcppCWB", "_RcppCWB_.s_attr", (DL_FUNC)_RcppCWB__s_attr_try);
25502585
R_RegisterCCallable("RcppCWB", "_RcppCWB_.p_attr", (DL_FUNC)_RcppCWB__p_attr_try);
25512586
R_RegisterCCallable("RcppCWB", "_RcppCWB_.cl_attribute_size", (DL_FUNC)_RcppCWB__cl_attribute_size_try);
@@ -2626,6 +2661,7 @@ static const R_CallMethodDef CallEntries[] = {
26262661
{"_RcppCWB_region_matrix_to_count_matrix", (DL_FUNC) &_RcppCWB_region_matrix_to_count_matrix, 4},
26272662
{"_RcppCWB_region_matrix_context", (DL_FUNC) &_RcppCWB_region_matrix_context, 8},
26282663
{"_RcppCWB_cwb_version", (DL_FUNC) &_RcppCWB_cwb_version, 0},
2664+
{"_RcppCWB_p_attr_default", (DL_FUNC) &_RcppCWB_p_attr_default, 0},
26292665
{"_RcppCWB__s_attr", (DL_FUNC) &_RcppCWB__s_attr, 3},
26302666
{"_RcppCWB__p_attr", (DL_FUNC) &_RcppCWB__p_attr, 3},
26312667
{"_RcppCWB__cl_attribute_size", (DL_FUNC) &_RcppCWB__cl_attribute_size, 4},

src/cl.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ using namespace Rcpp;
2424
// [[Rcpp::interfaces(r, cpp)]]
2525

2626
char* cl_get_version();
27+
char* cl_get_p_attr_default();
2728

2829
// [[Rcpp::export(name=".cwb_version")]]
2930
Rcpp::StringVector cwb_version(){
@@ -32,6 +33,14 @@ Rcpp::StringVector cwb_version(){
3233
return result;
3334
}
3435

36+
// [[Rcpp::export(name=".p_attr_default")]]
37+
Rcpp::StringVector p_attr_default(){
38+
Rcpp::StringVector result(1);
39+
result(0) = cl_get_p_attr_default();
40+
return result;
41+
}
42+
43+
3544

3645
Attribute* make_s_attribute(SEXP corpus, SEXP s_attribute, SEXP registry){
3746

src/cwb/cl/cl.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@
120120

121121

122122
char* cl_get_version();
123+
char* cl_get_p_attr_default();
123124

124125
/* The actual code of the header file begins here. */
125126

src/cwb/cl/globals.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,16 @@ char* cl_get_version(){
4343
return version;
4444
}
4545

46+
char* cl_get_p_attr_default(){
47+
#ifdef CWB_DEFAULT_ATT_NAME
48+
char* p_attr = CWB_DEFAULT_ATT_NAME;
49+
#else
50+
char* p_attr = "";
51+
#endif
52+
return p_attr;
53+
}
54+
55+
4656
/**
4757
* Global configuration variable: debug level.
4858
*

0 commit comments

Comments
 (0)