summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2022-08-03 20:34:01 +0000
committerKarl Berry <karl@freefriends.org>2022-08-03 20:34:01 +0000
commitcd5d4632250be6513612605c679b3cb12aca0541 (patch)
tree74f69a42d2a4eec9c44ed2b68fb1ff62bd26a1ce /Master/texmf-dist/tex/latex
parent1d60eab9a00326e0417cdc69780c5b71c44d3944 (diff)
lt3rawobjects (3aug22)
git-svn-id: svn://tug.org/texlive/trunk@64038 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r--Master/texmf-dist/tex/latex/lt3rawobjects/lt3rawobjects.sty353
1 files changed, 280 insertions, 73 deletions
diff --git a/Master/texmf-dist/tex/latex/lt3rawobjects/lt3rawobjects.sty b/Master/texmf-dist/tex/latex/lt3rawobjects/lt3rawobjects.sty
index e213d3d4530..ad7283daaef 100644
--- a/Master/texmf-dist/tex/latex/lt3rawobjects/lt3rawobjects.sty
+++ b/Master/texmf-dist/tex/latex/lt3rawobjects/lt3rawobjects.sty
@@ -26,7 +26,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}[2022-04-10]
-\ProvidesExplPackage{lt3rawobjects}{2022/07/11}{ 1.1.1 }{Objects and proxies in LaTeX3}
+\ProvidesExplPackage{lt3rawobjects}{2022/08/03}{ 2.0 }{Objects and proxies in LaTeX3}
\str_const:Nn \c_object_local_str {loc}
\str_const:Nn \c_object_global_str {glo}
\str_const:Nn \c_object_public_str {pub}
@@ -107,35 +107,38 @@
\prg_new_conditional:Nnn \object_if_global:n {p, T, F, TF}
{
- \str_if_eq:cNTF { \__rawobjects_object_scovar:n {#1} } \c_object_global_str
- {
- \prg_return_true:
- }
- {
- \prg_return_false:
- }
+ \str_if_eq:cNTF { \__rawobjects_object_scovar:n {#1} }
+ \c_object_global_str
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
}
\prg_new_conditional:Nnn \object_if_public:n {p, T, F, TF}
{
- \str_if_eq:cNTF { \__rawobjects_object_visvar:n { #1 } } \c_object_public_str
- {
- \prg_return_true:
- }
- {
- \prg_return_false:
- }
+ \str_if_eq:cNTF { \__rawobjects_object_visvar:n { #1 } }
+ \c_object_public_str
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
}
\prg_new_conditional:Nnn \object_if_private:n {p, T, F, TF}
{
- \str_if_eq:cNTF { \__rawobjects_object_visvar:n {#1} } \c_object_private_str
- {
- \prg_return_true:
- }
- {
- \prg_return_false:
- }
+ \str_if_eq:cNTF { \__rawobjects_object_visvar:n {#1} }
+ \c_object_private_str
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
}
\prg_generate_conditional_variant:Nnn \object_if_local:n { V }
@@ -149,9 +152,9 @@
\cs_new:Nn \__rawobjects_scope:n
{
- \object_if_global:nTF { #1 }
+ \object_if_local:nTF { #1 }
{
- g
+ l
}
{
\str_if_eq:cNTF { \__rawobjects_object_scovar:n { #1 } }
@@ -160,14 +163,19 @@
c
}
{
- l
+ g
}
}
}
-\cs_new:Nn \object_member_adr:nnn
+\cs_new:Nn \__rawobjects_scope_pfx:n
+ {
+ \object_if_local:nF { #1 }
+ { g }
+ }
+
+\cs_new:Nn \__rawobjects_vis_var:n
{
- \__rawobjects_scope:n { #1 }
\object_if_private:nTF { #1 }
{
__
@@ -175,6 +183,20 @@
{
_
}
+ }
+
+\cs_new:Nn \__rawobjects_vis_fun:n
+ {
+ \object_if_private:nT { #1 }
+ {
+ __
+ }
+ }
+
+\cs_new:Nn \object_member_adr:nnn
+ {
+ \__rawobjects_scope:n { #1 }
+ \__rawobjects_vis_var:n { #1 }
#1 \tl_to_str:n { _ MEMBER _ #2 _ #3 }
}
@@ -184,7 +206,7 @@
{
\object_member_adr:nnv { #1 }{ #2 }
{
- \object_member_adr:vnn { \__rawobjects_object_pxyvar:n { #1 } }
+ \object_rcmember_adr:nnn { #1 }
{ #2 _ type }{ str }
}
}
@@ -193,7 +215,7 @@
\cs_new:Nn \object_member_type:nn
{
- \object_member_use:vnn { \__rawobjects_object_pxyvar:n { #1 } }
+ \object_rcmember_use:nnn { #1 }
{ #2 _ type }{ str }
}
@@ -216,6 +238,41 @@
}
+\prg_new_conditional:Nnn \object_member_if_exist:nnn {p, T, F, TF }
+ {
+ \cs_if_exist:cTF
+ {
+ \object_member_adr:nnn { #1 }{ #2 }{ #3 }
+ }
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
+ }
+
+\prg_new_conditional:Nnn \object_member_if_exist:nn {p, T, F, TF }
+ {
+ \cs_if_exist:cTF
+ {
+ \object_member_adr:nn { #1 }{ #2 }
+ }
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
+ }
+
+\prg_generate_conditional_variant:Nnn \object_member_if_exist:nnn
+ { Vnn }{ p, T, F, TF }
+\prg_generate_conditional_variant:Nnn \object_member_if_exist:nn
+ { Vn }{ p, T, F, TF }
+
+
+
\cs_new_protected:Nn \object_new_member:nnn
{
\__rawobjects_force_scope:n { #1 }
@@ -240,7 +297,7 @@
{
\object_member_use:nnv { #1 }{ #2 }
{
- \object_member_adr:vnn { \__rawobjects_object_pxyvar:n { #1 } }
+ \object_rcmember_adr:nnn { #1 }
{ #2 _ type }{ str }
}
}
@@ -254,7 +311,7 @@
\__rawobjects_force_scope:n { #1 }
\cs_if_exist_use:cT
{
- #3 _ \object_if_global:nT { #1 }{ g } set _ eq:cN
+ #3 _ \__rawobjects_scope_pfx:n { #1 } set _ eq:cN
}
{
{ \object_member_adr:nnn { #1 }{ #2 }{ #3 } } #4
@@ -267,7 +324,7 @@
{
\object_member_set_eq:nnvN { #1 }{ #2 }
{
- \object_member_adr:vnn { \__rawobjects_object_pxyvar:n { #1 } }
+ \object_rcmember_adr:nnn { #1 }
{ #2 _ type }{ str }
} #3
}
@@ -275,46 +332,80 @@
\cs_generate_variant:Nn \object_member_set_eq:nnN { VnN, nnc, Vnc }
-\cs_new:Nn \object_nconst_adr:nnn
+\cs_new:Nn \object_ncmember_adr:nnn
{
c _ #1 \tl_to_str:n { _ CONST _ #2 _ #3 }
}
-\cs_generate_variant:Nn \object_member_adr:nnn { Vnn, vnn }
+\cs_generate_variant:Nn \object_ncmember_adr:nnn { Vnn, vnn }
-\cs_new:Nn \object_rconst_adr:nnn
+\cs_new:Nn \object_rcmember_adr:nnn
{
- \object_nconst_adr:vnn { \__rawobjects_object_pxyvar:n { #1 } }
+ \object_ncmember_adr:vnn { \__rawobjects_object_pxyvar:n { #1 } }
{ #2 }{ #3 }
}
-\cs_generate_variant:Nn \object_member_adr:nnn { Vnn }
+\cs_generate_variant:Nn \object_rcmember_adr:nnn { Vnn }
+
+\prg_new_conditional:Nnn \object_ncmember_if_exist:nnn {p, T, F, TF }
+ {
+ \cs_if_exist:cTF
+ {
+ \object_ncmember_adr:nnn { #1 }{ #2 }{ #3 }
+ }
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
+ }
+
+\prg_new_conditional:Nnn \object_rcmember_if_exist:nnn {p, T, F, TF }
+ {
+ \cs_if_exist:cTF
+ {
+ \object_rcmember_adr:nnn { #1 }{ #2 }{ #3 }
+ }
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
+ }
+
+\prg_generate_conditional_variant:Nnn \object_ncmember_if_exist:nnn
+ { Vnn }{ p, T, F, TF }
+\prg_generate_conditional_variant:Nnn \object_rcmember_if_exist:nnn
+ { Vnn }{ p, T, F, TF }
+
-\cs_new:Nn \object_nconst_use:nnn
+\cs_new:Nn \object_ncmember_use:nnn
{
\cs_if_exist_use:cT { #3 _ use:c }
{
- { \object_nconst_adr:nnn { #1 }{ #2 }{ #3 } }
+ { \object_ncmember_adr:nnn { #1 }{ #2 }{ #3 } }
}
}
-\cs_new:Nn \object_rconst_use:nnn
+\cs_new:Nn \object_rcmember_use:nnn
{
\cs_if_exist_use:cT { #3 _ use:c }
{
- { \object_rconst_adr:nnn { #1 }{ #2 }{ #3 } }
+ { \object_rcmember_adr:nnn { #1 }{ #2 }{ #3 } }
}
}
-\cs_generate_variant:Nn \object_nconst_use:nnn { Vnn }
-\cs_generate_variant:Nn \object_rconst_use:nnn { Vnn }
+\cs_generate_variant:Nn \object_ncmember_use:nnn { Vnn }
+\cs_generate_variant:Nn \object_rcmember_use:nnn { Vnn }
\cs_new_protected:Nn \__rawobjects_const_create:nnnn
{
\use:c { #1 _ const:cn }
{
- \object_nconst_adr:nnn { #2 }{ #3 }{ #1 }
+ \object_ncmember_adr:nnn { #2 }{ #3 }{ #1 }
}
{ #4 }
}
@@ -361,7 +452,7 @@
{
\seq_const_from_clist:cn
{
- \object_nconst_adr:nnn { #1 }{ #2 }{ seq }
+ \object_ncmember_adr:nnn { #1 }{ #2 }{ seq }
}
{ #3 }
}
@@ -373,13 +464,99 @@
{
\prop_const_from_keyval:cn
{
- \object_nconst_adr:nnn { #1 }{ #2 }{ prop }
+ \object_ncmember_adr:nnn { #1 }{ #2 }{ prop }
}
{ #3 }
}
\cs_generate_variant:Nn \object_newconst_prop_from_keyval:nnn { Vnn }
+
+\cs_new:Nn \object_ncmethod_adr:nnn
+ {
+ #1 \tl_to_str:n { _ CMETHOD _ #2 : #3 }
+ }
+
+\cs_generate_variant:Nn \object_ncmethod_adr:nnn { Vnn , vnn }
+
+\cs_new:Nn \object_rcmethod_adr:nnn
+ {
+ \object_ncmethod_adr:vnn
+ {
+ \__rawobjects_object_pxyvar:n { #1 }
+ }
+ { #2 }{ #3 }
+ }
+
+\cs_generate_variant:Nn \object_ncmethod_adr:nnn { Vnn , vnn }
+\cs_generate_variant:Nn \object_rcmethod_adr:nnn { Vnn }
+
+
+\prg_new_conditional:Nnn \object_ncmethod_if_exist:nnn {p, T, F, TF }
+ {
+ \cs_if_exist:cTF
+ {
+ \object_ncmethod_adr:nnn { #1 }{ #2 }{ #3 }
+ }
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
+ }
+
+\prg_new_conditional:Nnn \object_rcmethod_if_exist:nnn {p, T, F, TF }
+ {
+ \cs_if_exist:cTF
+ {
+ \object_rcmethodr_adr:nnn { #1 }{ #2 }{ #3 }
+ }
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
+ }
+
+\prg_generate_conditional_variant:Nnn \object_ncmethod_if_exist:nnn
+ { Vnn }{ p, T, F, TF }
+\prg_generate_conditional_variant:Nnn \object_rcmethod_if_exist:nnn
+ { Vnn }{ p, T, F, TF }
+
+
+\cs_new_protected:Nn \object_new_cmethod:nnnn
+ {
+ \cs_new:cn
+ {
+ \object_ncmethod_adr:nnn { #1 }{ #2 }{ #3 }
+ }
+ { #4 }
+ }
+
+\cs_generate_variant:Nn \object_new_cmethod:nnnn { Vnnn }
+
+
+\cs_new:Nn \object_ncmethod_call:nnn
+ {
+ \use:c
+ {
+ \object_ncmethod_adr:nnn { #1 }{ #2 }{ #3 }
+ }
+ }
+
+\cs_new:Nn \object_rcmethod_call:nnn
+ {
+ \use:c
+ {
+ \object_rcmethod_adr:nnn { #1 }{ #2 }{ #3 }
+ }
+ }
+
+\cs_generate_variant:Nn \object_ncmethod_call:nnn { Vnn }
+\cs_generate_variant:Nn \object_rcmethod_call:nnn { Vnn }
+
\str_const:Nx \c_proxy_address_str
{ \object_address:nn { rawobjects }{ proxy } }
\str_const:cn { \__rawobjects_object_modvar:V \c_proxy_address_str }
@@ -391,24 +568,46 @@
\str_const:cV { \__rawobjects_object_visvar:V \c_proxy_address_str }
\c_object_public_str
-\cs_generate_variant:Nn \seq_const_from_clist:Nn { cx }
-
\seq_const_from_clist:cn
{
\object_member_adr:Vnn \c_proxy_address_str { varlist }{ seq }
}
{ varlist }
-\str_const:cn
+\object_newconst_str:Vnn \c_proxy_address_str { varlist_type }{ seq }
+
+
+\prg_new_conditional:Nnn \object_if_proxy:n {p, T, F, TF}
{
- \object_member_adr:Vnn \c_proxy_address_str { varlist_type }{ str }
+ \object_test_proxy:nNTF { #1 }
+ \c_proxy_address_str
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
}
- { seq }
-\prg_new_conditional:Nnn \object_if_proxy:n {p, T, F, TF}
+
+\prg_generate_conditional_variant:Nnn \str_if_eq:nn { ve }{ TF }
+
+\prg_new_conditional:Nnn \object_test_proxy:nn {p, T, F, TF}
+ {
+ \str_if_eq:veTF { \__rawobjects_object_pxyvar:n { #1 } }
+ { #2 }
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
+ }
+
+\prg_new_conditional:Nnn \object_test_proxy:nN {p, T, F, TF}
{
\str_if_eq:cNTF { \__rawobjects_object_pxyvar:n { #1 } }
- \c_proxy_address_str
+ #2
{
\prg_return_true:
}
@@ -417,6 +616,11 @@
}
}
+\prg_generate_conditional_variant:Nnn \object_test_proxy:nn
+ { Vn }{p, T, F, TF}
+\prg_generate_conditional_variant:Nnn \object_test_proxy:nN
+ { VN }{p, T, F, TF}
+
\msg_new:nnn { aa }{ mess }{ #1 }
@@ -450,7 +654,7 @@
{
\object_new_member:nnv { #2 }{ ##1 }
{
- \object_member_adr:nnn { #1 }{ ##1 _ type }{ str }
+ \object_ncmember_adr:nnn { #1 }{ ##1 _ type }{ str }
}
}
}
@@ -474,22 +678,30 @@
}
\cs_generate_variant:Nn \object_create:nnnNN { VnnNN }
-\cs_generate_variant:Nn \object_create_set:NnnnNN { NVnnNN }
-\cs_generate_variant:Nn \object_create_gset:NnnnNN { NVnnNN }
+\cs_generate_variant:Nn \object_create_set:NnnnNN { NVnnNN, NnnfNN }
+\cs_generate_variant:Nn \object_create_gset:NnnnNN { NVnnNN, NnnfNN }
-\cs_new:Nn \__rawobjects_combine:nn
+\cs_new:Nn \__rawobjects_combine_aux:nnn
{
- anon . #2 . #1
+ anon . #3 . #2 . #1
}
-\cs_generate_variant:Nn \__rawobjects_combine:nn { Vn }
+\cs_generate_variant:Nn \__rawobjects_combine_aux:nnn { Vnf }
+
+\cs_new:Nn \__rawobjects_combine:Nn
+ {
+ \__rawobjects_combine_aux:Vnf #1 { #2 }
+ {
+ \cs_to_str:N #1
+ }
+ }
\cs_new_protected:Nn \object_allocate_incr:NNnnNN
{
- \object_create_set:NnnnNN #1 { #3 }{ #4 }
+ \object_create_set:NnnfNN #1 { #3 }{ #4 }
{
- \__rawobjects_combine:Vn #2 { #3 }
+ \__rawobjects_combine:Nn #2 { #3 }
}
#5 #6
@@ -498,9 +710,9 @@
\cs_new_protected:Nn \object_gallocate_incr:NNnnNN
{
- \object_create_gset:NnnnNN #1 { #3 }{ #4 }
+ \object_create_gset:NnnfNN #1 { #3 }{ #4 }
{
- \__rawobjects_combine:Vn #2 { #3 }
+ \__rawobjects_combine:Nn #2 { #3 }
}
#5 #6
@@ -513,9 +725,9 @@
\cs_new_protected:Nn \object_allocate_gincr:NNnnNN
{
- \object_create_set:NnnnNN #1 { #3 }{ #4 }
+ \object_create_set:NnnfNN #1 { #3 }{ #4 }
{
- \__rawobjects_combine:Vn #2 { #3 }
+ \__rawobjects_combine:Nn #2 { #3 }
}
#5 #6
@@ -524,9 +736,9 @@
\cs_new_protected:Nn \object_gallocate_gincr:NNnnNN
{
- \object_create_gset:NnnnNN #1 { #3 }{ #4 }
+ \object_create_gset:NnnfNN #1 { #3 }{ #4 }
{
- \__rawobjects_combine:Vn #2 { #3 }
+ \__rawobjects_combine:Nn #2 { #3 }
}
#5 #6
@@ -559,12 +771,7 @@
\cs_new_protected:Nn \proxy_push_member:nnn
{
\__rawobjects_force_scope:n { #1 }
- \object_new_member:nnn { #1 }{ #2 _ type }{ str }
- \str_set:cn
- {
- \object_member_adr:nnn { #1 }{ #2 _ type }{ str }
- }
- { #3 }
+ \object_newconst_str:nnn { #1 }{ #2 _ type }{ #3 }
\seq_gput_left:cn
{
\object_member_adr:nnn { #1 }{ varlist }{ seq }