summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/lt3rawobjects
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-03-21 16:47:21 +0000
committerKarl Berry <karl@freefriends.org>2023-03-21 16:47:21 +0000
commit9402d4bfa4a12794ccec97745691022509975072 (patch)
tree4683465fdb5c0b1f1638c93909331e96282422cd /Master/texmf-dist/tex/latex/lt3rawobjects
parent0cde5db5dc139ef2532052bc6eb5695fa4e85a74 (diff)
lt3rawobjects (17mar23)
git-svn-id: svn://tug.org/texlive/trunk@66619 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/lt3rawobjects')
-rw-r--r--Master/texmf-dist/tex/latex/lt3rawobjects/lt3rawobjects.sty1172
1 files changed, 896 insertions, 276 deletions
diff --git a/Master/texmf-dist/tex/latex/lt3rawobjects/lt3rawobjects.sty b/Master/texmf-dist/tex/latex/lt3rawobjects/lt3rawobjects.sty
index 2c9e25dcce3..a22f1f0ea62 100644
--- a/Master/texmf-dist/tex/latex/lt3rawobjects/lt3rawobjects.sty
+++ b/Master/texmf-dist/tex/latex/lt3rawobjects/lt3rawobjects.sty
@@ -26,13 +26,66 @@
%%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}[2022-04-10]
-\ProvidesExplPackage{lt3rawobjects}{2022/12/09}{ 2.2 }{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}
-\str_const:Nn \c_object_private_str {pri}
+\ProvidesExplPackage{lt3rawobjects}{2023/03/17}{ 2.3 }{Objects and proxies in LaTeX3}
+
+\msg_new:nnn { rawobjects }{ deprecate }
+ {
+ Command ~ #1 ~ is ~ deprecated. ~ Use ~ instead ~ #2
+ }
+
+\cs_new_protected:Nn \__rawobjects_launch_deprecate:NN
+ {
+ \msg_warning:nnnn{ rawobjects }{ deprecate }{ #1 }{ #2 }
+ }
+
+
+\cs_new:Nn \rwobj_address_f:n
+ {
+ \exp_args:Nc \cs_to_str:N { #1 }
+ }
+
+\str_const:Nn \c_object_local_str {l}
+\str_const:Nn \c_object_global_str {g}
+\str_const:Nn \c_object_public_str {_}
+\str_const:Nn \c_object_private_str {__}
+
+\cs_new:Nn \__rawobjects_scope:N
+ {
+ \str_use:N #1
+ }
+
+\cs_new:Nn \__rawobjects_scope_pfx:N
+ {
+ \str_if_eq:NNF #1 \c_object_local_str
+ { g }
+ }
+
+\cs_generate_variant:Nn \__rawobjects_scope_pfx:N { c }
+
+\cs_new:Nn \__rawobjects_scope_pfx_cl:n
+ {
+ \__rawobjects_scope_pfx:c{
+ \object_ncmember_adr:nnn
+ {
+ \object_embedded_adr:nn { #1 }{ /_I_/ }
+}
+{ S }{ str }
+}
+ }
+
+\cs_new:Nn \__rawobjects_vis_var:N
+ {
+ \str_use:N #1
+ }
+
+\cs_new:Nn \__rawobjects_vis_fun:N
+ {
+ \str_if_eq:NNT #1 \c_object_private_str
+ {
+ __
+ }
+ }
-\str_const:Nn \c__rawobjects_const_str {con}
\cs_new:Nn \object_address:nn {
\tl_to_str:n { #1 _ #2 }
}
@@ -53,32 +106,16 @@
\str_gset:Nn #1 { #2 _ #3 }
}
-\cs_new:Nn \__rawobjects_object_modvar:n{
- c __ #1 _ MODULE _ str
-}
-
-\cs_new:Nn \__rawobjects_object_pxyvar:n{
- c __ #1 _ PROXY _ str
-}
-
-\cs_new:Nn \__rawobjects_object_scovar:n{
- c __ #1 _ SCOPE _ str
-}
-
-\cs_new:Nn \__rawobjects_object_visvar:n{
- c __ #1 _ VISIB _ str
-}
-
-\cs_generate_variant:Nn \__rawobjects_object_modvar:n { V }
-\cs_generate_variant:Nn \__rawobjects_object_pxyvar:n { V }
-\cs_generate_variant:Nn \__rawobjects_object_scovar:n { V }
-\cs_generate_variant:Nn \__rawobjects_object_visvar:n { V }
\prg_new_conditional:Nnn \object_if_exist:n { p, T, F, TF }
{
\cs_if_exist:cTF
{
- \__rawobjects_object_modvar:n { #1 }
+ \object_ncmember_adr:nnn
+ {
+ \object_embedded_adr:nn{ #1 }{ /_I_/ }
+ }
+ { S }{ str }
}
{
\prg_return_true:
@@ -92,17 +129,32 @@
{ p, T, F, TF }
\cs_new:Nn \object_get_module:n {
- \str_use:c { \__rawobjects_object_modvar:n { #1 } }
+ \object_ncmember_use:nnn
+ {
+ \object_embedded_adr:nn{ #1 }{ /_I_/ }
+ }
+ { M }{ str }
}
\cs_new:Nn \object_get_proxy_adr:n {
- \str_use:c { \__rawobjects_object_pxyvar:n { #1 } }
+ \object_ncmember_use:nnn
+ {
+ \object_embedded_adr:nn{ #1 }{ /_I_/ }
+ }
+ { P }{ str }
}
\cs_generate_variant:Nn \object_get_module:n { V }
\cs_generate_variant:Nn \object_get_proxy_adr:n { V }
\prg_new_conditional:Nnn \object_if_local:n {p, T, F, TF}
{
- \str_if_eq:cNTF { \__rawobjects_object_scovar:n {#1} }
+ \str_if_eq:cNTF
+ {
+ \object_ncmember_adr:nnn
+ {
+ \object_embedded_adr:nn{ #1 }{ /_I_/ }
+ }
+ { S }{ str }
+ }
\c_object_local_str
{
\prg_return_true:
@@ -114,7 +166,14 @@
\prg_new_conditional:Nnn \object_if_global:n {p, T, F, TF}
{
- \str_if_eq:cNTF { \__rawobjects_object_scovar:n {#1} }
+ \str_if_eq:cNTF
+ {
+ \object_ncmember_adr:nnn
+ {
+ \object_embedded_adr:nn{ #1 }{ /_I_/ }
+ }
+ { S }{ str }
+ }
\c_object_global_str
{
\prg_return_true:
@@ -126,7 +185,14 @@
\prg_new_conditional:Nnn \object_if_public:n {p, T, F, TF}
{
- \str_if_eq:cNTF { \__rawobjects_object_visvar:n { #1 } }
+ \str_if_eq:cNTF
+ {
+ \object_ncmember_adr:nnn
+ {
+ \object_embedded_adr:nn{ #1 }{ /_I_/ }
+ }
+ { V }{ str }
+ }
\c_object_public_str
{
\prg_return_true:
@@ -138,7 +204,14 @@
\prg_new_conditional:Nnn \object_if_private:n {p, T, F, TF}
{
- \str_if_eq:cNTF { \__rawobjects_object_visvar:n {#1} }
+ \str_if_eq:cNTF
+ {
+ \object_ncmember_adr:nnn
+ {
+ \object_embedded_adr:nn{ #1 }{ /_I_/ }
+ }
+ { V }{ str }
+ }
\c_object_private_str
{
\prg_return_true:
@@ -175,225 +248,626 @@
\cs_generate_variant:Nn \object_macro_use:nn{ Vn }
-\cs_new:Nn \__rawobjects_scope:n
+\cs_new:Nn \__rawobjects_member_adr:nnnNN
{
- \object_if_local:nTF { #1 }
- {
- l
- }
+ \__rawobjects_scope:N #4
+ \__rawobjects_vis_var:N #5
+ #1 \tl_to_str:n { _ MEMBER _ #2 _ #3 }
+ }
+
+\cs_generate_variant:Nn \__rawobjects_member_adr:nnnNN { VnnNN, nnncc }
+
+
+\cs_new:Nn \object_member_adr:nnn
+ {
+ \__rawobjects_member_adr:nnncc { #1 }{ #2 }{ #3 }
{
- \str_if_eq:cNTF { \__rawobjects_object_scovar:n { #1 } }
- \c__rawobjects_const_str
+ \object_ncmember_adr:nnn
{
- c
+ \object_embedded_adr:nn{ #1 }{ /_I_/ }
}
+ { S }{ str }
+ }
+ {
+ \object_ncmember_adr:nnn
{
- g
+ \object_embedded_adr:nn{ #1 }{ /_I_/ }
}
+ { V }{ str }
}
}
-\cs_new:Nn \__rawobjects_scope_pfx:n
- {
- \object_if_local:nF { #1 }
- { g }
- }
+\cs_generate_variant:Nn \object_member_adr:nnn { Vnn, vnn, nnv, nnf }
+
-\cs_new:Nn \__rawobjects_vis_var:n
+\prg_new_conditional:Nnn \object_member_if_exist:nnn {p, T, F, TF }
{
- \object_if_private:nTF { #1 }
+ \cs_if_exist:cTF
{
- __
+ \object_member_adr:nnn { #1 }{ #2 }{ #3 }
+ }
+ {
+ \prg_return_true:
}
{
- _
+ \prg_return_false:
}
}
-\cs_new:Nn \__rawobjects_vis_fun:n
+\prg_generate_conditional_variant:Nnn \object_member_if_exist:nnn
+ { Vnn }{ p, T, F, TF }
+
+
+\prg_new_conditional:Nnn \object_member_if_tracked:nn {p, T, F, TF }
{
- \object_if_private:nT { #1 }
+ \cs_if_exist:cTF
{
- __
+ \object_rcmember_adr:nnn
+ { #1 }{ #2 _ type }{ str }
+ }
+ {
+ \prg_return_true:
+ }
+ {
+ \cs_if_exist:cTF
+ {
+ \object_ncmember_adr:nnn
+ {
+ \object_embedded_adr:nn { #1 }{ /_T_/ }
+ }
+ { #2 _ type }{ str }
+ }
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
}
}
-\cs_new:Nn \object_member_adr:nnn
+\prg_generate_conditional_variant:Nnn \object_member_if_tracked:nn
+ { Vn }{ p, T, F, TF }
+
+\prg_new_eq_conditional:NNn \object_member_if_exist:nn
+ \object_member_if_tracked:nn { p, T, F, TF }
+\prg_new_eq_conditional:NNn \object_member_if_exist:Vn
+ \object_member_if_tracked:Vn { p, T, F, TF }
+
+
+\cs_new:Nn \object_member_type:nn
{
- \__rawobjects_scope:n { #1 }
- \__rawobjects_vis_var:n { #1 }
- #1 \tl_to_str:n { _ MEMBER _ #2 _ #3 }
+ \cs_if_exist:cTF
+ {
+ \object_rcmember_adr:nnn
+ { #1 }{ #2 _ type }{ str }
+ }
+ {
+ \object_rcmember_use:nnn
+ { #1 }{ #2 _ type }{ str }
+ }
+ {
+ \cs_if_exist:cT
+ {
+ \object_ncmember_adr:nnn
+ {
+ \object_embedded_adr:nn { #1 }{ /_T_/ }
+ }
+ { #2 _ type }{ str }
+ }
+ {
+ \object_ncmember_use:nnn
+ {
+ \object_embedded_adr:nn { #1 }{ /_T_/ }
+ }
+ { #2 _ type }{ str }
+ }
+ }
}
-\cs_generate_variant:Nn \object_member_adr:nnn { Vnn, vnn, nnv }
\cs_new:Nn \object_member_adr:nn
{
- \object_member_adr:nnv { #1 }{ #2 }
+ \object_member_adr:nnf { #1 }{ #2 }
{
- \object_rcmember_adr:nnn { #1 }
- { #2 _ type }{ str }
+ \object_member_type:nn { #1 }{ #2 }
}
}
\cs_generate_variant:Nn \object_member_adr:nn { Vn }
-\cs_new:Nn \object_member_type:nn
+\cs_new:Nn \__rawobjects_par_trans:N
+ {
+ \str_case:nnF { #1 }
+ {
+ { N }{ N }
+ { V }{ N }
+ { n }{ n }
+ { v }{ n }
+ { f }{ n }
+ { x }{ n }
+ { e }{ n }
+ { o }{ n }
+ { ~ }{}
+ }
+ { #1 }
+ }
+
+\cs_new:Nn \__rawobjects_par_trans:n
{
- \object_rcmember_use:nnn { #1 }
- { #2 _ type }{ str }
+ \str_map_function:nN { #1 } \__rawobjects_par_trans:N
}
+\str_new:N \l__rawobjects_tmp_fa_str
-\msg_new:nnnn { rawobjects }{ scoperr }{ Nonstandard ~ scope }
+\cs_new_protected:Nn \__rawobjects_save_dat:n
{
- Operation ~ not ~ permitted ~ on ~ object ~ #1 ~
- ~ since ~ it ~ wasn't ~ declared ~ local ~ or ~ global
+ \str_set:Nx \l__rawobjects_tmp_fa_str
+ { \str_tail:n{ #1 } }
}
+\cs_new_protected:Nn \__rawobjects_save_dat:nnN
+ {
+ \str_set:Nx \l__rawobjects_tmp_fa_str
+ { \str_tail:n{ #2 } }
+ }
+\cs_new_protected:Nn \__rawobjects_save_dat_aux:n
+ {
+ \__rawobjects_save_dat:nnN #1
+ }
+\cs_generate_variant:Nn \__rawobjects_save_dat_aux:n { f }
-\cs_new_protected:Nn \__rawobjects_force_scope:n
+\cs_new_protected:Nn \__rawobjects_save_fun:N
{
- \bool_if:nF
+ \__rawobjects_save_dat_aux:f { \cs_split_function:N #1 }
+ }
+
+\cs_new:Nn \__rawobjects_use_dat:nn
+ {
+ #1 : #2 \str_use:N \l__rawobjects_tmp_fa_str
+ }
+
+
+\cs_new_protected:Nn \__rawobjects_mgen:nN
+ {
+ \__rawobjects_save_fun:N #2
+ \cs_new:cpn { #1 : nnn \str_use:N \l__rawobjects_tmp_fa_str } ##1##2##3
{
- \object_if_local_p:n { #1 } || \object_if_global_p:n { #1 }
+ #2
+ {
+ \object_member_adr:nnn{ ##1 }{ ##2 }{ ##3 }
+ }
}
+ \cs_new:cpn { #1 : nn \str_use:N \l__rawobjects_tmp_fa_str } ##1##2
{
- \msg_error:nnx { rawobjects }{ scoperr }{ #1 }
+ #2
+ {
+ \object_member_adr:nn{ ##1 }{ ##2 }
+ }
+ }
+ }
+\cs_new_protected:Nn \__rawobjects_mgen_pr:nN
+ {
+ \__rawobjects_save_fun:N #2
+ \cs_new_protected:cpn
+ { #1 : nnn \str_use:N \l__rawobjects_tmp_fa_str } ##1##2##3
+ {
+ #2
+ {
+ \object_member_adr:nnn{ ##1 }{ ##2 }{ ##3 }
+ }
+ }
+ \cs_new_protected:cpn
+ { #1 : nn \str_use:N \l__rawobjects_tmp_fa_str } ##1##2
+ {
+ #2
+ {
+ \object_member_adr:nn{ ##1 }{ ##2 }
+ }
}
}
-
-\prg_new_conditional:Nnn \object_member_if_exist:nnn {p, T, F, TF }
+\cs_new_protected:Nn \__rawobjects_mgen:nnn
{
- \cs_if_exist:cTF
+ \__rawobjects_save_dat:n { #3 }
+
+ \cs_new:cpn { __rawobjects_auxfun_#1 :nn } ##1##2
{
- \object_member_adr:nnn { #1 }{ #2 }{ #3 }
+ \use:c{ #2 : #3 }
}
+ \cs_generate_variant:cn { __rawobjects_auxfun_#1 :nn }{ nf, ff }
+
+ \cs_new:cpn { #1 : nnn \str_use:N \l__rawobjects_tmp_fa_str } ##1##2##3
{
- \prg_return_true:
+ \use:c { __rawobjects_auxfun_#1 :nf }
+ { ##3 }
+ {
+ \__rawobjects_scope_pfx_cl:n{ ##1 }
+ }
+ {
+ \object_member_adr:nnn{ ##1 }{ ##2 }{ ##3 }
+ }
}
+ \cs_new:cpn { #1 : nn \str_use:N \l__rawobjects_tmp_fa_str } ##1##2
{
- \prg_return_false:
+ \use:c { __rawobjects_auxfun_#1 :ff }
+ {
+ \object_member_type:nn { ##1 }{ ##2 }
+ }
+ {
+ \__rawobjects_scope_pfx_cl:n{ ##1 }
+ }
+ {
+ \object_member_adr:nn{ ##1 }{ ##2 }
+ }
}
}
-
-\prg_new_conditional:Nnn \object_member_if_exist:nn {p, T, F, TF }
+\cs_new_protected:Nn \__rawobjects_mgen_pr:nnn
{
- \cs_if_exist:cTF
+ \__rawobjects_save_dat:n { #3 }
+
+ \cs_new:cpn { __rawobjects_auxfun_#1 :nn } ##1##2
{
- \object_member_adr:nn { #1 }{ #2 }
+ \use:c{ #2 : #3 }
}
+ \cs_generate_variant:cn { __rawobjects_auxfun_#1 :nn }{ nf, ff }
+
+ \cs_new_protected:cpn
+ { #1 : nnn \str_use:N \l__rawobjects_tmp_fa_str } ##1##2##3
{
- \prg_return_true:
+ \use:c { __rawobjects_auxfun_#1 :nf }
+ { ##3 }
+ {
+ \__rawobjects_scope_pfx_cl:n{ ##1 }
+ }
+ {
+ \object_member_adr:nnn{ ##1 }{ ##2 }{ ##3 }
+ }
}
+ \cs_new_protected:cpn
+ { #1 : nn \str_use:N \l__rawobjects_tmp_fa_str } ##1##2
{
- \prg_return_false:
+ \use:c { __rawobjects_auxfun_#1 :ff }
+ {
+ \object_member_type:nn { ##1 }{ ##2 }
+ }
+ {
+ \__rawobjects_scope_pfx_cl:n{ ##1 }
+ }
+ {
+ \object_member_adr:nn{ ##1 }{ ##2 }
+ }
}
}
-\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_generate_variant:Nn \__rawobjects_mgen:nN { fN }
+\cs_generate_variant:Nn \__rawobjects_mgen:nnn { fnn }
+\cs_generate_variant:Nn \__rawobjects_mgen_pr:nN { fN }
+\cs_generate_variant:Nn \__rawobjects_mgen_pr:nnn { fnn }
+\cs_new_protected:Nn \object_member_generate:NN
+ {
+ \__rawobjects_mgen:fN { \cs_to_str:N #1 } #2
+ }
-\cs_new_protected:Nn \object_new_member:nnn
+\cs_new_protected:Nn \object_member_generate_inline:Nnn
{
- \__rawobjects_force_scope:n { #1 }
- \cs_if_exist_use:cT { #3 _ new:c }
- {
- { \object_member_adr:nnn { #1 }{ #2 }{ #3 } }
- }
+ \__rawobjects_mgen:fnn { \cs_to_str:N #1 }{ #2 }{ #3 }
+ }
+\cs_new_protected:Nn \object_member_generate_protected:NN
+ {
+ \__rawobjects_mgen_pr:fN { \cs_to_str:N #1 } #2
}
-\cs_generate_variant:Nn \object_new_member:nnn { Vnn, nnv }
+\cs_new_protected:Nn \object_member_generate_protected_inline:Nnn
+ {
+ \__rawobjects_mgen_pr:fnn { \cs_to_str:N #1 }{ #2 }{ #3 }
+ }
-\cs_new:Nn \object_member_use:nnn
+\cs_new_protected:Nn \__rawobjects_ncgen:nN
{
- \cs_if_exist_use:cT { #3 _ use:c }
+ \__rawobjects_save_fun:N #2
+ \cs_new:cpn { #1 : nnn \str_use:N \l__rawobjects_tmp_fa_str } ##1##2##3
{
- { \object_member_adr:nnn { #1 }{ #2 }{ #3 } }
+ #2
+ {
+ \object_ncmember_adr:nnn{ ##1 }{ ##2 }{ ##3 }
+ }
}
}
-
-\cs_new:Nn \object_member_use:nn
+\cs_new_protected:Nn \__rawobjects_ncgen_pr:nN
{
- \object_member_use:nnv { #1 }{ #2 }
+ \__rawobjects_save_fun:N #2
+ \cs_new_protected:cpn
+ { #1 : nnn \str_use:N \l__rawobjects_tmp_fa_str } ##1##2##3
{
- \object_rcmember_adr:nnn { #1 }
- { #2 _ type }{ str }
+ #2
+ {
+ \object_ncmember_adr:nnn{ ##1 }{ ##2 }{ ##3 }
+ }
}
}
-\cs_generate_variant:Nn \object_member_use:nnn { Vnn, vnn, nnv }
-\cs_generate_variant:Nn \object_member_use:nn { Vn }
+\cs_new_protected:Nn \__rawobjects_ncgen:nnn
+ {
+ \__rawobjects_save_dat:n { #3 }
+ \cs_new:cpn { __rawobjects_auxfun_#1 :nn } ##1##2
+ {
+ \use:c{ #2 : #3 }
+ }
+ \cs_generate_variant:cn { __rawobjects_auxfun_#1 :nn }{ nf }
-\cs_new_protected:Nn \object_member_set:nnnn
+ \cs_new:cpn { #1 : nnn \str_use:N \l__rawobjects_tmp_fa_str } ##1##2##3
+ {
+ \use:c { __rawobjects_auxfun_#1 :nf }
+ { ##3 }
+ {
+ \__rawobjects_scope_pfx_cl:n{ ##1 }
+ }
+ {
+ \object_ncmember_adr:nnn{ ##1 }{ ##2 }{ ##3 }
+ }
+ }
+ }
+\cs_new_protected:Nn \__rawobjects_ncgen_pr:nnn
{
- \__rawobjects_force_scope:n { #1 }
- \cs_if_exist_use:cT
+ \__rawobjects_save_dat:n { #3 }
+
+ \cs_new:cpn { __rawobjects_auxfun_#1 :nn } ##1##2
{
- #3 _ \__rawobjects_scope_pfx:n { #1 } set:cn
+ \use:c{ #2 : #3 }
}
+ \cs_generate_variant:cn { __rawobjects_auxfun_#1 :nn }{ nf }
+
+ \cs_new_protected:cpn
+ { #1 : nnn \str_use:N \l__rawobjects_tmp_fa_str } ##1##2##3
{
- { \object_member_adr:nnn { #1 }{ #2 }{ #3 } } { #4 }
+ \use:c { __rawobjects_auxfun_#1 :nf }
+ { ##3 }
+ {
+ \__rawobjects_scope_pfx_cl:n{ ##1 }
+ }
+ {
+ \object_ncmember_adr:nnn{ ##1 }{ ##2 }{ ##3 }
+ }
}
}
-\cs_generate_variant:Nn \object_member_set:nnnn { Vnnn, nnvn }
+\cs_generate_variant:Nn \__rawobjects_ncgen:nN { fN }
+\cs_generate_variant:Nn \__rawobjects_ncgen:nnn { fnn }
+\cs_generate_variant:Nn \__rawobjects_ncgen_pr:nN { fN }
+\cs_generate_variant:Nn \__rawobjects_ncgen_pr:nnn { fnn }
+
+\cs_new_protected:Nn \object_ncmember_generate:NN
+ {
+ \__rawobjects_ncgen:fN { \cs_to_str:N #1 } #2
+ }
+
+\cs_new_protected:Nn \object_ncmember_generate_inline:Nnn
+ {
+ \__rawobjects_ncgen:fnn { \cs_to_str:N #1 }{ #2 }{ #3 }
+ }
+\cs_new_protected:Nn \object_ncmember_generate_protected:NN
+ {
+ \__rawobjects_ncgen_pr:fN { \cs_to_str:N #1 } #2
+ }
-\cs_new_protected:Nn \object_member_set:nnn
+\cs_new_protected:Nn \object_ncmember_generate_protected_inline:Nnn
{
- \object_member_set:nnvn { #1 }{ #2 }
+ \__rawobjects_ncgen_pr:fnn { \cs_to_str:N #1 }{ #2 }{ #3 }
+ }
+
+
+\cs_new_protected:Nn \__rawobjects_rcgen:nN
+ {
+ \__rawobjects_save_fun:N #2
+ \cs_new:cpn { #1 : nnn \str_use:N \l__rawobjects_tmp_fa_str } ##1##2##3
{
- \object_rcmember_adr:nnn { #1 }
- { #2 _ type }{ str }
- } { #3 }
+ #2
+ {
+ \object_rcmember_adr:nnn{ ##1 }{ ##2 }{ ##3 }
+ }
+ }
+ }
+\cs_new_protected:Nn \__rawobjects_rcgen_pr:nN
+ {
+ \__rawobjects_save_fun:N #2
+ \cs_new_protected:cpn
+ { #1 : nnn \str_use:N \l__rawobjects_tmp_fa_str } ##1##2##3
+ {
+ #2
+ {
+ \object_rcmember_adr:nnn{ ##1 }{ ##2 }{ ##3 }
+ }
+ }
}
-\cs_generate_variant:Nn \object_member_set:nnn { Vnn }
+\cs_new_protected:Nn \__rawobjects_rcgen:nnn
+ {
+ \__rawobjects_save_dat:n { #3 }
+ \cs_new:cpn { __rawobjects_auxfun_#1 :nn } ##1##2
+ {
+ \use:c{ #2 : #3 }
+ }
+ \cs_generate_variant:cn { __rawobjects_auxfun_#1 :nn }{ nf }
-\cs_new_protected:Nn \object_member_set_eq:nnnN
+ \cs_new:cpn { #1 : nnn \str_use:N \l__rawobjects_tmp_fa_str } ##1##2##3
+ {
+ \use:c { __rawobjects_auxfun_#1 :nf }
+ { ##3 }
+ {
+ \__rawobjects_scope_pfx_cl:n{ ##1 }
+ }
+ {
+ \object_rcmember_adr:nnn{ ##1 }{ ##2 }{ ##3 }
+ }
+ }
+ }
+\cs_new_protected:Nn \__rawobjects_rcgen_pr:nnn
{
- \__rawobjects_force_scope:n { #1 }
- \cs_if_exist_use:cT
+ \__rawobjects_save_dat:n { #3 }
+
+ \cs_new:cpn { __rawobjects_auxfun_#1 :nn } ##1##2
{
- #3 _ \__rawobjects_scope_pfx:n { #1 } set _ eq:cN
+ \use:c{ #2 : #3 }
}
+ \cs_generate_variant:cn { __rawobjects_auxfun_#1 :nn }{ nf }
+
+ \cs_new_protected:cpn
+ { #1 : nnn \str_use:N \l__rawobjects_tmp_fa_str } ##1##2##3
{
- { \object_member_adr:nnn { #1 }{ #2 }{ #3 } } #4
+ \use:c { __rawobjects_auxfun_#1 :nf }
+ { ##3 }
+ {
+ \__rawobjects_scope_pfx_cl:n{ ##1 }
+ }
+ {
+ \object_rcmember_adr:nnn{ ##1 }{ ##2 }{ ##3 }
+ }
}
}
-\cs_generate_variant:Nn \object_member_set_eq:nnnN { VnnN, nnnc, Vnnc, nnvN }
+\cs_generate_variant:Nn \__rawobjects_rcgen:nN { fN }
+\cs_generate_variant:Nn \__rawobjects_rcgen:nnn { fnn }
+\cs_generate_variant:Nn \__rawobjects_rcgen_pr:nN { fN }
+\cs_generate_variant:Nn \__rawobjects_rcgen_pr:nnn { fnn }
+
+\cs_new_protected:Nn \object_rcmember_generate:NN
+ {
+ \__rawobjects_rcgen:fN { \cs_to_str:N #1 } #2
+ }
+
+\cs_new_protected:Nn \object_rcmember_generate_inline:Nnn
+ {
+ \__rawobjects_rcgen:fnn { \cs_to_str:N #1 }{ #2 }{ #3 }
+ }
+\cs_new_protected:Nn \object_rcmember_generate_protected:NN
+ {
+ \__rawobjects_rcgen_pr:fN { \cs_to_str:N #1 } #2
+ }
+
+\cs_new_protected:Nn \object_rcmember_generate_protected_inline:Nnn
+ {
+ \__rawobjects_rcgen_pr:fnn { \cs_to_str:N #1 }{ #2 }{ #3 }
+ }
+
-\cs_new_protected:Nn \object_member_set_eq:nnN
+\cs_generate_variant:Nn \cs_generate_variant:Nn { cx }
+
+\cs_new_protected:Nn \__rawobjects_genmem_int:nnn
+ {
+ \__rawobjects_mgen:nnn { #1 }{ #2 }{ #3 }
+ \cs_generate_variant:cx
+ { #1 : nnn \str_use:N \l__rawobjects_tmp_fa_str }
+ { Vnn \str_use:N \l__rawobjects_tmp_fa_str, nnv \str_use:N \l__rawobjects_tmp_fa_str }
+ \cs_generate_variant:cx
+ { #1 : nn \str_use:N \l__rawobjects_tmp_fa_str }
+ { Vn \str_use:N \l__rawobjects_tmp_fa_str }
+ }
+\cs_new_protected:Nn \__rawobjects_genmem_pr_int:nnn
{
- \object_member_set_eq:nnvN { #1 }{ #2 }
+ \__rawobjects_mgen_pr:nnn { #1 }{ #2 }{ #3 }
+ \cs_generate_variant:cx
+ { #1 : nnn \str_use:N \l__rawobjects_tmp_fa_str }
+ { Vnn \str_use:N \l__rawobjects_tmp_fa_str, nnv \str_use:N \l__rawobjects_tmp_fa_str }
+ \cs_generate_variant:cx
+ { #1 : nn \str_use:N \l__rawobjects_tmp_fa_str }
+ { Vn \str_use:N \l__rawobjects_tmp_fa_str }
+ }
+
+\cs_new_protected:Nn \__rawobjects_genncm_int:nnn
+ {
+ \__rawobjects_ncgen:nnn { #1 }{ #2 }{ #3 }
+ \cs_generate_variant:cx
+ { #1 : nnn \str_use:N \l__rawobjects_tmp_fa_str }
+ { Vnn \str_use:N \l__rawobjects_tmp_fa_str }
+ }
+\cs_new_protected:Nn \__rawobjects_genncm_pr_int:nnn
+ {
+ \__rawobjects_ncgen_pr:nnn { #1 }{ #2 }{ #3 }
+ \cs_generate_variant:cx
+ { #1 : nnn \str_use:N \l__rawobjects_tmp_fa_str }
+ { Vnn \str_use:N \l__rawobjects_tmp_fa_str }
+ }
+
+\cs_new_protected:Nn \__rawobjects_genrcm_int:nnn
+ {
+ \__rawobjects_rcgen:nnn { #1 }{ #2 }{ #3 }
+ \cs_generate_variant:cx
+ { #1 : nnn \str_use:N \l__rawobjects_tmp_fa_str }
+ { Vnn \str_use:N \l__rawobjects_tmp_fa_str }
+ }
+\cs_new_protected:Nn \__rawobjects_genrcm_pr_int:nnn
+ {
+ \__rawobjects_rcgen_pr:nnn { #1 }{ #2 }{ #3 }
+ \cs_generate_variant:cx
+ { #1 : nnn \str_use:N \l__rawobjects_tmp_fa_str }
+ { Vnn \str_use:N \l__rawobjects_tmp_fa_str }
+ }
+
+
+\msg_new:nnnn { rawobjects }{ noerr }{ Unspecified ~ scope }
+ {
+ Object ~ #1 ~ hasn't ~ a ~ scope ~ variable
+ }
+
+
+\__rawobjects_genmem_pr_int:nnn { object_new_member }{ #1 _ new }{ c }
+
+\cs_new_protected:Nn \object_new_member_tracked:nnn
+ {
+ \object_new_member:nnn { #1 }{ #2 }{ #3 }
+
+ \str_const:cn
{
- \object_rcmember_adr:nnn { #1 }
+ \object_ncmember_adr:nnn
+ {
+ \object_embedded_adr:nn { #1 }{ /_T_/ }
+ }
{ #2 _ type }{ str }
- } #3
+ }
+ { #3 }
}
-\cs_generate_variant:Nn \object_member_set_eq:nnN { VnN, nnc, Vnc }
+\cs_generate_variant:Nn \object_new_member_tracked:nnn { Vnn, nnv }
+
+
+\__rawobjects_genmem_int:nnn {object_member_use}{ #1_use }{c}
+
+\cs_generate_variant:Nn \object_member_use:nnn {vnn}
+
+
+\__rawobjects_genmem_pr_int:nnn {object_member_set}{ #1_#2 set }{ cn }
+
+
+\__rawobjects_genmem_pr_int:nnn { object_member_set_eq }{ #1 _ #2 set_eq }{ cN }
+
+\cs_generate_variant:Nn \object_member_set_eq:nnnN { nnnc, Vnnc }
+
+\cs_generate_variant:Nn \object_member_set_eq:nnN { nnc, Vnc }
\cs_new:Nn \object_ncmember_adr:nnn
{
- c _ #1 \tl_to_str:n { _ CONST _ #2 _ #3 }
+ \tl_to_str:n{ c _ } #1 \tl_to_str:n { _ CONST _ #2 _ #3 }
}
\cs_generate_variant:Nn \object_ncmember_adr:nnn { Vnn, vnn }
+
\cs_new:Nn \object_rcmember_adr:nnn
{
- \object_ncmember_adr:vnn { \__rawobjects_object_pxyvar:n { #1 } }
+ \object_ncmember_adr:vnn
+ {
+ \object_ncmember_adr:nnn
+ {
+ \object_embedded_adr:nn{ #1 }{ /_I_/ }
+ }
+ { P }{ str }
+ }
{ #2 }{ #3 }
}
@@ -433,34 +907,12 @@
{ Vnn }{ p, T, F, TF }
-\cs_new:Nn \object_ncmember_use:nnn
- {
- \cs_if_exist_use:cT { #3 _ use:c }
- {
- { \object_ncmember_adr:nnn { #1 }{ #2 }{ #3 } }
- }
- }
+\__rawobjects_genncm_int:nnn { object_ncmember_use }{ #1_use}{ c }
-\cs_new:Nn \object_rcmember_use:nnn
- {
- \cs_if_exist_use:cT { #3 _ use:c }
- {
- { \object_rcmember_adr:nnn { #1 }{ #2 }{ #3 } }
- }
- }
+\__rawobjects_genrcm_int:nnn { object_rcmember_use }{ #1_use}{ c }
-\cs_generate_variant:Nn \object_ncmember_use:nnn { Vnn }
-\cs_generate_variant:Nn \object_rcmember_use:nnn { Vnn }
-
-\cs_new_protected:Nn \object_newconst:nnnn
- {
- \use:c { #3 _ const:cn }
- {
- \object_ncmember_adr:nnn { #1 }{ #2 }{ #3 }
- }
- { #4 }
- }
+\__rawobjects_genncm_pr_int:nnn { object_newconst }{ #1 _ const }{ cn }
\cs_new_protected:Nn \object_newconst_tl:nnn
@@ -500,6 +952,9 @@
\cs_generate_variant:Nn \object_newconst_skip:nnn { Vnn }
\cs_generate_variant:Nn \object_newconst_fp:nnn { Vnn }
+\cs_generate_variant:Nn \object_newconst_str:nnn { nnx }
+\cs_generate_variant:Nn \object_newconst_str:nnn { nnV }
+
\cs_new_protected:Nn \object_newconst_seq_from_clist:nnn
{
@@ -536,7 +991,11 @@
{
\object_ncmethod_adr:vnn
{
- \__rawobjects_object_pxyvar:n { #1 }
+ \object_ncmember_adr:nnn
+ {
+ \object_embedded_adr:nn{ #1 }{ /_I_/ }
+ }
+ { P }{ str }
}
{ #2 }{ #3 }
}
@@ -610,40 +1069,50 @@
\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 }
- { rawobjects }
-\str_const:cV { \__rawobjects_object_pxyvar:V \c_proxy_address_str }
- \c_proxy_address_str
-\str_const:cV { \__rawobjects_object_scovar:V \c_proxy_address_str }
- \c__rawobjects_const_str
-\str_const:cV { \__rawobjects_object_visvar:V \c_proxy_address_str }
- \c_object_public_str
-\seq_const_from_clist:cn
+\cs_new_protected:Nn \__rawobjects_initproxy:nnn
{
- \object_member_adr:Vnn \c_proxy_address_str { varlist }{ seq }
+ \object_newconst:nnnn
+ {
+ \object_embedded_adr:nn{ #3 }{ /_I_/ }
+ }
+ { ifprox }{ bool }{ \c_true_bool }
}
- { varlist, objlist }
+\cs_generate_variant:Nn \__rawobjects_initproxy:nnn { VnV }
-\object_newconst_str:Vnn \c_proxy_address_str { varlist_type }{ seq }
-\object_newconst_str:Vnn \c_proxy_address_str { objlist_type }{ seq }
-\seq_const_from_clist:cn
+\cs_new:Nn \__rawobjects_bol_com:N
{
- \object_member_adr:Vnn \c_proxy_address_str { objlist }{ seq }
+ \cs_if_exist_p:N #1 && \bool_if_p:N #1
}
- {}
+\cs_generate_variant:Nn \__rawobjects_bol_com:N { c }
\prg_new_conditional:Nnn \object_if_proxy:n {p, T, F, TF}
{
- \object_test_proxy:nNTF { #1 }
- \c_proxy_address_str
+ \cs_if_exist:cTF
{
- \prg_return_true:
+ \object_ncmember_adr:nnn
+ {
+ \object_embedded_adr:nn{ #1 }{ /_I_/ }
+ }
+ { ifprox }{ bool }
+ }
+ {
+ \bool_if:cTF
+ {
+ \object_ncmember_adr:nnn
+ {
+ \object_embedded_adr:nn{ #1 }{ /_I_/ }
+ }
+ { ifprox }{ bool }
+ }
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
}
{
\prg_return_false:
@@ -655,7 +1124,14 @@
\prg_new_conditional:Nnn \object_test_proxy:nn {p, T, F, TF}
{
- \str_if_eq:veTF { \__rawobjects_object_pxyvar:n { #1 } }
+ \str_if_eq:veTF
+ {
+ \object_ncmember_adr:nnn
+ {
+ \object_embedded_adr:nn{ #1 }{ /_I_/ }
+ }
+ { P }{ str }
+ }
{ #2 }
{
\prg_return_true:
@@ -667,7 +1143,14 @@
\prg_new_conditional:Nnn \object_test_proxy:nN {p, T, F, TF}
{
- \str_if_eq:cNTF { \__rawobjects_object_pxyvar:n { #1 } }
+ \str_if_eq:cNTF
+ {
+ \object_ncmember_adr:nnn
+ {
+ \object_embedded_adr:nn{ #1 }{ /_I_/ }
+ }
+ { P }{ str }
+ }
#2
{
\prg_return_true:
@@ -683,8 +1166,6 @@
{ VN }{p, T, F, TF}
-\msg_new:nnn { aa }{ mess }{ #1 }
-
\msg_new:nnnn { rawobjects }{ notproxy }{ Fake ~ proxy }
{
Object ~ #1 ~ is ~ not ~ a ~ proxy.
@@ -700,20 +1181,38 @@
\cs_new_protected:Nn \__rawobjects_create_anon:nnnNN
{
+ \tl_if_empty:nF{ #1 }
+ {
\__rawobjects_force_proxy:n { #1 }
- \str_const:cn { \__rawobjects_object_modvar:n { #2 } }{ #3 }
- \str_const:cx { \__rawobjects_object_pxyvar:n { #2 } }{ #1 }
- \str_const:cV { \__rawobjects_object_scovar:n { #2 } } #4
- \str_const:cV { \__rawobjects_object_visvar:n { #2 } } #5
+ \object_newconst_str:nnn
+ {
+ \object_embedded_adr:nn{ #3 }{ /_I_/ }
+ }
+ { M }{ #2 }
+ \object_newconst_str:nnn
+ {
+ \object_embedded_adr:nn{ #3 }{ /_I_/ }
+ }
+ { P }{ #1 }
+ \object_newconst_str:nnV
+ {
+ \object_embedded_adr:nn{ #3 }{ /_I_/ }
+ }
+ { S } #4
+ \object_newconst_str:nnV
+ {
+ \object_embedded_adr:nn{ #3 }{ /_I_/ }
+ }
+ { V } #5
\seq_map_inline:cn
{
\object_member_adr:nnn { #1 }{ varlist }{ seq }
}
{
- \object_new_member:nnv { #2 }{ ##1 }
+ \object_new_member:nnv { #3 }{ ##1 }
{
\object_ncmember_adr:nnn { #1 }{ ##1 _ type }{ str }
}
@@ -725,22 +1224,35 @@
}
{
\embedded_create:nvn
- { #2 }
+ { #3 }
{
\object_ncmember_adr:nnn { #1 }{ ##1 _ proxy }{ str }
}
{ ##1 }
}
+
+ \tl_map_inline:cn
+ {
+ \object_member_adr:nnn { #1 }{ init }{ tl }
+ }
+ {
+ ##1 { #1 }{ #2 }{ #3 }
+ }
+
+ }
}
-\cs_generate_variant:Nn \__rawobjects_create_anon:nnnNN { nnvcc }
+\cs_generate_variant:Nn \__rawobjects_create_anon:nnnNN { xnxNN, xvxcc }
\cs_new_protected:Nn \object_create:nnnNN
{
- \__rawobjects_create_anon:nnnNN { #1 }{ \object_address:nn { #2 }{ #3 } }
- { #2 } #4 #5
+ \__rawobjects_create_anon:xnxNN { #1 }{ #2 }
+ { \object_address:nn { #2 }{ #3 } }
+ #4 #5
}
+\cs_generate_variant:Nn \object_create:nnnNN { VnnNN }
+
\cs_new_protected:Nn \object_create_set:NnnnNN
{
\object_create:nnnNN { #2 }{ #3 }{ #4 } #5 #6
@@ -753,28 +1265,207 @@
\str_gset:Nx #1 { \object_address:nn { #3 }{ #4 } }
}
+\cs_generate_variant:Nn \object_create_set:NnnnNN { NVnnNN, NnnfNN }
+\cs_generate_variant:Nn \object_create_gset:NnnnNN { NVnnNN, NnnfNN }
+
+\cs_new_protected:Nn \object_create:nnnN
+ {
+ \object_create:nnnNN { #1 }{ #2 }{ #3 } #4 \c_object_public_str
+ }
+
+\cs_generate_variant:Nn \object_create:nnnN { VnnN }
+
+\cs_new_protected:Nn \object_create_set:NnnnN
+ {
+ \object_create_set:NnnnNN #1 { #2 }{ #3 }{ #4 } #5 \c_object_public_str
+ }
+
+\cs_new_protected:Nn \object_create_gset:NnnnN
+ {
+ \object_create_gset:NnnnNN #1 { #2 }{ #3 }{ #4 } #5 \c_object_public_str
+ }
+
+\cs_generate_variant:Nn \object_create_set:NnnnN { NVnnN }
+\cs_generate_variant:Nn \object_create_gset:NnnnN { NVnnN }
+
+\cs_new_protected:Nn \object_create:nnn
+ {
+ \object_create:nnnNN { #1 }{ #2 }{ #3 }
+ \c_object_global_str \c_object_public_str
+ }
+
+\cs_generate_variant:Nn \object_create:nnn { Vnn }
+
+\cs_new_protected:Nn \object_create_set:Nnnn
+ {
+ \object_create_set:NnnnNN #1 { #2 }{ #3 }{ #4 }
+ \c_object_global_str \c_object_public_str
+ }
+
+\cs_new_protected:Nn \object_create_gset:Nnnn
+ {
+ \object_create_gset:NnnnNN #1 { #2 }{ #3 }{ #4 }
+ \c_object_global_str \c_object_public_str
+ }
+
+\cs_generate_variant:Nn \object_create_set:Nnnn { NVnn }
+\cs_generate_variant:Nn \object_create_gset:Nnnn { NVnn }
+
\cs_new_protected:Nn \embedded_create:nnn
{
- \__rawobjects_create_anon:nnvcc { #2 }
+ \__rawobjects_create_anon:xvxcc { #2 }
+ {
+ \object_ncmember_adr:nnn
+ {
+ \object_embedded_adr:nn{ #1 }{ /_I_/ }
+ }
+ { M }{ str }
+ }
{
\object_embedded_adr:nn
{ #1 }{ #3 }
}
{
- \__rawobjects_object_modvar:n{ #1 }
+ \object_ncmember_adr:nnn
+ {
+ \object_embedded_adr:nn{ #1 }{ /_I_/ }
+ }
+ { S }{ str }
}
{
- \__rawobjects_object_scovar:n{ #1 }
+ \object_ncmember_adr:nnn
+ {
+ \object_embedded_adr:nn{ #1 }{ /_I_/ }
+ }
+ { V }{ str }
}
+ }
+
+\cs_generate_variant:Nn \embedded_create:nnn { nvn, Vnn }
+
+
+\cs_new_protected:Nn \proxy_create:nn
+ {
+ \object_create:VnnNN \c_proxy_address_str { #1 }{ #2 }
+ \c_object_global_str \c_object_public_str
+ }
+
+\cs_new_protected:Nn \proxy_create_set:Nnn
+ {
+ \object_create_set:NVnnNN #1 \c_proxy_address_str { #2 }{ #3 }
+ \c_object_global_str \c_object_public_str
+ }
+
+\cs_new_protected:Nn \proxy_create_gset:Nnn
+ {
+ \object_create_gset:NVnnNN #1 \c_proxy_address_str { #2 }{ #3 }
+ \c_object_global_str \c_object_public_str
+ }
+
+\cs_new_protected:Nn \proxy_create:nnN
+ {
+ \__rawobjects_launch_deprecate:NN \proxy_create:nnN \proxy_create:nn
+ \object_create:VnnNN \c_proxy_address_str { #1 }{ #2 }
+ \c_object_global_str #3
+ }
+
+\cs_new_protected:Nn \proxy_create_set:NnnN
+ {
+ \__rawobjects_launch_deprecate:NN \proxy_create_set:NnnN \proxy_create_set:Nnn
+ \object_create_set:NVnnNN #1 \c_proxy_address_str { #2 }{ #3 }
+ \c_object_global_str #4
+ }
+
+\cs_new_protected:Nn \proxy_create_gset:NnnN
+ {
+ \__rawobjects_launch_deprecate:NN \proxy_create_gset:NnnN \proxy_create_gset:Nnn
+ \object_create_gset:NVnnNN #1 \c_proxy_address_str { #2 }{ #3 }
+ \c_object_global_str #4
+ }
+
+
+\cs_new_protected:Nn \proxy_push_member:nnn
+ {
+ \object_newconst_str:nnn { #1 }{ #2 _ type }{ #3 }
+ \seq_gput_left:cn
{
- \__rawobjects_object_visvar:n{ #1 }
+ \object_member_adr:nnn { #1 }{ varlist }{ seq }
}
+ { #2 }
}
-\cs_generate_variant:Nn \object_create:nnnNN { VnnNN }
-\cs_generate_variant:Nn \object_create_set:NnnnNN { NVnnNN, NnnfNN }
-\cs_generate_variant:Nn \object_create_gset:NnnnNN { NVnnNN, NnnfNN }
-\cs_generate_variant:Nn \embedded_create:nnn { nvn, Vnn }
+\cs_generate_variant:Nn \proxy_push_member:nnn { Vnn }
+
+
+\cs_new_protected:Nn \proxy_push_embedded:nnn
+ {
+ \object_newconst_str:nnx { #1 }{ #2 _ proxy }{ #3 }
+ \seq_gput_left:cn
+ {
+ \object_member_adr:nnn { #1 }{ objlist }{ seq }
+ }
+ { #2 }
+ }
+
+\cs_generate_variant:Nn \proxy_push_embedded:nnn { Vnn }
+
+
+\cs_new_protected:Nn \proxy_add_initializer:nN
+ {
+ \tl_gput_right:cn
+ {
+ \object_member_adr:nnn { #1 }{ init }{ tl }
+ }
+ { #2 }
+ }
+
+\cs_generate_variant:Nn \proxy_add_initializer:nN { VN }
+
+
+\str_const:Nx \c_proxy_address_str
+ { \object_address:nn { rawobjects }{ proxy } }
+
+\object_newconst_str:nnn
+ {
+ \object_embedded_adr:Vn \c_proxy_address_str { /_I_/ }
+ }
+ { M }{ rawobjects }
+
+\object_newconst_str:nnV
+ {
+ \object_embedded_adr:Vn \c_proxy_address_str { /_I_/ }
+ }
+ { P } \c_proxy_address_str
+
+\object_newconst_str:nnV
+ {
+ \object_embedded_adr:Vn \c_proxy_address_str { /_I_/ }
+ }
+ { S } \c_object_global_str
+
+\object_newconst_str:nnV
+ {
+ \object_embedded_adr:Vn \c_proxy_address_str { /_I_/ }
+ }
+ { V } \c_object_public_str
+
+\__rawobjects_initproxy:VnV \c_proxy_address_str { rawobjects } \c_proxy_address_str
+
+\object_new_member:Vnn \c_proxy_address_str { init }{ tl }
+
+\object_new_member:Vnn \c_proxy_address_str { varlist }{ seq }
+
+\object_new_member:Vnn \c_proxy_address_str { objlist }{ seq }
+
+\proxy_push_member:Vnn \c_proxy_address_str
+ { init }{ tl }
+\proxy_push_member:Vnn \c_proxy_address_str
+ { varlist }{ seq }
+\proxy_push_member:Vnn \c_proxy_address_str
+ { objlist }{ seq }
+
+\proxy_add_initializer:VN \c_proxy_address_str
+ \__rawobjects_initproxy:nnn
\cs_new:Nn \__rawobjects_combine_aux:nnn
@@ -844,61 +1535,17 @@
\cs_generate_variant:Nn \object_gallocate_gincr:NNnnNN { NNVnNN }
-
-\cs_new_protected:Nn \proxy_create:nnN
- {
- \object_create:VnnNN \c_proxy_address_str { #1 }{ #2 }
- \c_object_global_str #3
- }
-
-\cs_new_protected:Nn \proxy_create_set:NnnN
- {
- \object_create_set:NVnnNN #1 \c_proxy_address_str { #2 }{ #3 }
- \c_object_global_str #4
- }
-
-\cs_new_protected:Nn \proxy_create_gset:NnnN
- {
- \object_create_gset:NVnnNN #1 \c_proxy_address_str { #2 }{ #3 }
- \c_object_global_str #4
- }
-
-\cs_new_protected:Nn \proxy_push_member:nnn
- {
- \__rawobjects_force_scope:n { #1 }
- \object_newconst_str:nnn { #1 }{ #2 _ type }{ #3 }
- \seq_gput_left:cn
- {
- \object_member_adr:nnn { #1 }{ varlist }{ seq }
- }
- { #2 }
- }
-
-\cs_generate_variant:Nn \proxy_push_member:nnn { Vnn }
-
-
-\cs_generate_variant:Nn \object_newconst_str:nnn { nnx }
-
-\cs_new_protected:Nn \proxy_push_embedded:nnn
- {
- \__rawobjects_force_scope:n { #1 }
- \object_newconst_str:nnx { #1 }{ #2 _ proxy }{ #3 }
- \seq_gput_left:cn
- {
- \object_member_adr:nnn { #1 }{ objlist }{ seq }
- }
- { #2 }
- }
-
-\cs_generate_variant:Nn \proxy_push_embedded:nnn { Vnn }
-
\cs_new_protected:Nn \object_assign:nn
{
\seq_map_inline:cn
{
\object_member_adr:vnn
{
- \__rawobjects_object_pxyvar:n { #1 }
+ \object_ncmember_adr:nnn
+ {
+ \object_embedded_adr:nn{ #1 }{ /_I_/ }
+ }
+ { P }{ str }
}
{ varlist }{ seq }
}
@@ -912,33 +1559,6 @@
\cs_generate_variant:Nn \object_assign:nn { nV, Vn, VV }
-\cs_new_protected:Nn \rawobjects_fwl_inst:n
- {
- \object_if_exist:nF
- {
- \object_address:nn { rawobjects }{ fwl ! #1 }
- }
- {
- \proxy_create:nnN { rawobjects }{ fwl ! #1 } \c_object_private_str
- \proxy_push_member
- {
- \object_address:nn { rawobjects }{ fwl ! #1 }
- }
- { next }{ str }
- }
- }
-
-\cs_new_protected:Nn \rawobjects_fwl_newnode:nnnNN
- {
- \rawobjects_fwl_inst:n { #1 }
- \object_create:nnnNN
- {
- \object_address:nn { rawobjects }{ fwl ! #1 }
- }
- { #2 }{ #3 } #4 #5
- }
-
-
\endinput
%%
%% End of file `lt3rawobjects.sty'.