About
Docs
Files
Support
Index

Essentials
AutoDocs
Library functions
Cooperate
Process mastering
Debug
Own debugging kit
FGE
Smart modeid pick
Loader
Shared lib. loader
Macros
Helper macros
Structs
All the structures
Logs
Library changelogs
Tools
Progs baked inside

MACROS
LP2IEEE()A
QBASEASSIGN()A
QBASEASSIGN2()A
QBASEDECL()A
QBASEDECL2()A
QBASEJUMPTAB()A
QBASELOCAL()A
QBASEPOINTER()A
QBASERESOLVE()A
QBASESLOTS()A
QDEV_HLP_ASMDIVU()A
QDEV_HLP_ASMMULU()A
QDEV_HLP_DELTAITER()A
QDEV_HLP_DELTASCAN()A
QDEV_HLP_DFUNC()A
QDEV_HLP_DIVUQUAD()A
QDEV_HLP_DSTOTV()A
QDEV_HLP_GETREG()A
QDEV_HLP_ISLISTEMPTY()A
QDEV_HLP_ITERATE()A
QDEV_HLP_MULUQUAD()A
QDEV_HLP_NOINTSEC()A
QDEV_HLP_NOSWITCH()A
QDEV_HLP_PROCDECL()A
QDEV_HLP_PROCEXIT()A
QDEV_HLP_REMOTE()A
QDEV_HLP_RESGLOB()A
QDEV_HLP_SETREG()A
QDEV_HLP_TASKDECL()A
QDEV_HLP_TVTODS()A
REGARG()A
REGVAR()A
__LOADA4()A
__SAVEA4()A
QDEVDEBUG()P
QDEVDEBUGIO()P
MFADD()I
MFCGE()I
MFCLE()I
MFCMP()I
MFDIV()I
MFFIX()I
MFFLT()I
MFMUL()I
MFSUB()I
MFVALUE()I
QDEV_HLP_ABS()I
QDEV_HLP_ADDTV()I
QDEV_HLP_ASMALIAS()I
QDEV_HLP_ASMENTRY()I
QDEV_HLP_BADDR()I
QDEV_HLP_BYTESPERROW()I
QDEV_HLP_EQUALIZEUC()I
QDEV_HLP_EQUALIZELC()I
QDEV_HLP_E_DIVULONG10()I
QDEV_HLP_FFPTOIEEE()I
QDEV_HLP_FLIP()I
QDEV_HLP_FNV32CSUM()I
QDEV_HLP_FNV32HASH()I
QDEV_HLP_IEEETOFFP()I
QDEV_HLP_LCOPYMEM()I
QDEV_HLP_LSHIFT64()I
QDEV_HLP_MAX()I
QDEV_HLP_MIN()I
QDEV_HLP_MKBADDR()I
QDEV_HLP_MKSTR()I
QDEV_HLP_MULU32X32()I
QDEV_HLP_N_DIVULONG10()I
QDEV_HLP_N_MULUXXX10()I
QDEV_HLP_NEG()I
QDEV_HLP_QUICKFILL()I
QDEV_HLP_SWAPQUAD()I
QDEV_HLP_POPCOUNT()I
QDEV_HLP_RASSIZE()I
QDEV_HLP_ROUNDPOW2()I
QDEV_HLP_RSHIFT64()I
QDEV_HLP_SUBTV()I
QDEV_HLP_SWAPLONG()I
QDEV_HLP_SWAPQUAD()I
QDEV_HLP_SWAPWORD()I



Q
D
E
V
_
H
L
P
_
R
E
M
O
T
E
(
)

SOURCE: qdev_macros.txt 1.16 (12/09/2014) English

                                 AMIGA - PUBLIC
 ----------------------------------------------------------------------------

   NAME

      QDEV_HLP_REMOTE() - Executes code that alters alien TCB.



   SYNOPSIS

      QDEV_HLP_REMOTE(tc, code);

      QDEV_HLP_REMOTE((struct Task *), <code>);



   FUNCTION

      This macro allows to affect alien TCB by pretending that
      SysBase->ThisTask is it. This macro does not inject code
      in alien/remote task!



   INPUTS

      tc   - Remote task address.

      code - Code to be executed that will affect 'tc'.



   RETURNS

      No output.



   BASES

      SysBase



   NOTES

      Must use this macro in either: QDEV_HLP_NOSWITCH() and/or
      QDEV_HLP_NOINTSEC() and cannot call routines that break
      forbidden state!



   SEE ALSO

      QDEV_HLP_NOSWITCH(), QDEV_HLP_NOINTSEC()



   EXAMPLE

      #include <proto/exec.h>
      #include <exec/execbase.h>
      #include <proto/dos.h>
      #include <proto/intuition.h>

      #include <qdev.h>

      ...

      struct Window *win;
      struct FileHandle *fh;
      struct MsgPort *mp;
      UBYTE *ptr;
      LONG fd;

      /*
       * This example shows how to change screen bar text that
       * the shell window sets when becomes active.
      */
      if ((fd = Open("CONSOLE:", MODE_OLDFILE)))
      {
        if ((win = nfo_getwinaddr(fd)))
        {
          if (nfo_iswindow(win))
          {
            /*
             * OK, now we are sure that the shell has its own
             * window. Lets find out what is the address of a
             * CON: process for this window.
            */
            fh = QDEV_HLP_BADDR(fd);

            mp =
             (struct MsgPort *)QDEV_HLP_ABS((LONG)fh->fh_Type);

            /*
             * Attempt to allocate self-deallocating memory as
             * if CON: did it.
            */
            QDEV_HLP_NOSWITCH
            (
              QDEV_HLP_REMOTE
              (
                mp->mp_SigTask,

                /*
                 * This memory will be deallocated upon CON:'s
                 * death (when you close the shell typically).
                */
                ptr = mem_alloclfvec(32, MEMF_PUBLIC);
              );

              if (ptr)
              {
                /*
                 * Fill that mem. with some text and set it as
                 * a new screen bar text.
                */
                *ptr = 0;

                txt_strncat(ptr, "My new screen title!", 32);

                /*
                 * Not safe to call in 'QDEV_HLP_REMOTE()' !!!
                */
                SetWindowTitles(win, (UBYTE *)-1, ptr);
              }
            );
          }
        }

        Close(fd);
      }

      ...



   BUGS

      None known.



 ----------------------------------------------------------------------------
    


No more fear cus pure HTML is here!
Copyright (C) 2013-2014 by Burnt Chip Dominators