\ProvidesExplPackage {tagpdf-user} {2019/07/02} {0.61}
  {tagpdf - user commands}

\NewDocumentCommand \tagpdfsetup { m }
 {
  \keys_set:nn { uftag / setup } { #1 }
 }

\cs_set_eq:NN\tagpdfifluatexTF \sys_if_engine_luatex:TF
\cs_set_eq:NN\tagpdfifluatexT  \sys_if_engine_luatex:T
\cs_set_eq:NN\tagpdfifpdftexT  \sys_if_engine_pdftex:T

%%% a generic command to retrieve data

\cs_new:Npn \tagpdfget #1 { \uftag_get:n { #1} }
\cs_new:Npn \uftag_get:n #1 { \use:c {__uftag_get_data_#1: } }


%%%% mc related user commands
\NewDocumentCommand \tagmcifinTF { m m }
 {
  \__uftag_mc_if_in:TF { #1 } { #2 }
 }

\NewDocumentCommand \tagmcbegin { m }
 {
  \uftag_mc_begin:n {#1}\ignorespaces
 }


\NewDocumentCommand \tagmcend {  }
 {
  \unskip % this unskip appears to mess up some spacing; can we do this in another way?
  \uftag_mc_end:
 }

\NewDocumentCommand \tagmcuse { m }
 {
  \uftag_mc_use:n {#1}
 }


%%%% structure related commands

\NewDocumentCommand \tagstructbegin { m }
 {
  \uftag_struct_begin:n {#1}
 }

\NewDocumentCommand \tagstructend {  }
 {
  \uftag_struct_end:
 }

\NewDocumentCommand \tagstructuse { m }
 {
  \uftag_struct_use:n {#1}
 }



%%%% debug/show commands
\NewDocumentCommand\showtagpdfmcdata { O {\__uftag_get_mc_abs_cnt:} }
 {
  \bool_if:NT \g__uftag_mode_lua_bool
   {
    \sys_if_engine_luatex:T
     {
      \directlua{uftag.trace.show_all_mc_data(#1)}
     }
   }
 }

\NewDocumentCommand\showtagpdfattributes { }
 {
  \bool_if:NT \g__uftag_mode_lua_bool
   {
    \sys_if_engine_luatex:T
     {
      \directlua
       {
        uftag.trace.log(
        "showtagpdfattributes: MC=>abscnt=\__uftag_get_mc_abs_cnt:=>attr=\the\l__uftag_mc_cnt_attr=>tag=" ..
        tostring(uftag.func.get_tag_from (\the\l__uftag_mc_type_attr)) ..
        "=\the\l__uftag_mc_type_attr",0
        )
       }
      \ignorespaces
     }
   }
 }

\sys_if_engine_luatex:T
{
  \NewDocumentCommand\pdffakespace { }
  {
   \__uftag_fakespace:
  }
}


\endinput
