clispinner

Log

Files

Refs

LICENSE

clispinner.h (4057B)

     1 #pragma once
     2 
     3 #include "shpPackages/signalTimer/signalTimer.h"
     4 
     5 #define startG(obj) (obj)->f->start(obj)
     6 #define createTheSignalTimerG(obj) (obj)->f->createTheSignalTimer(obj)
     7 #define setSignalTimerG(obj, signalTimer) (obj)->f->setSignalTimer(obj, signalTimer)
     8 //pauseProcessG
     9 #define setSpinStringG(obj, spinString) (obj)->f->setSpinString(obj, spinString)
    10 //setInterval
    11 #define isSpinningG(obj) (obj)->f->isSpinning(obj)
    12 
    13 /* Class clispinner */
    14 typedef struct clispinner clispinnert;
    15 
    16 /* for object inheriting clispinner, cast to clispinner to be able to use this class functions and generics*/
    17 #define cClispinner(self) ( (clispinnert*) self )
    18 
    19 typedef void            (*freeClispinnerFt)      (clispinnert *self);
    20 typedef void            (*terminateClispinnerFt) (clispinnert **self);
    21 typedef char*           (*toStringClispinnerFt)  (clispinnert *self);
    22 typedef clispinnert* (*duplicateClispinnerFt) (clispinnert *self);
    23 typedef void            (*smashClispinnerFt)     (clispinnert **self);
    24 
    25 /**
    26  * free clispinner
    27  */
    28 typedef void            (*finishClispinnerFt)    (clispinnert **self);
    29 
    30 typedef void            (*startClispinnerFt)               (clispinnert *self);
    31 typedef void            (*stopClispinnerFt)                (clispinnert *self);
    32 typedef void            (*createTheSignalTimerClispinnerFt)(clispinnert *self);
    33 typedef void            (*setSignalTimerClispinnerFt)      (clispinnert *self, signalTimert * signalTimer);
    34 typedef signalTimert*   (*getSignalTimerClispinnerFt)      (clispinnert *self);
    35 typedef void            (*pauseProcessClispinnerFt)        (clispinnert *self);
    36 typedef void            (*setSpinStringClispinnerFt)       (clispinnert *self, const char *spinString);
    37 typedef void            (*setIntervalClispinnerFt)         (clispinnert *self, u64 interval);
    38 typedef bool            (*isSpinningClispinnerFt)          (clispinnert *self);
    39 
    40 #define CLISPINNERTITLESIZE 1024
    41 
    42 /**
    43  * class functions
    44  * allocated once for all objects
    45  *
    46  * freed with finalizeClispinner
    47  */
    48 
    49 /**
    50  * use this define in child classes and add the new function after this class functions
    51  *
    52  * in this define, add the methods after <finishClispinnerFt    finish;>
    53  *
    54  * Example:
    55  * #define RINGFUNCTIONST \n *   CLISPINNERFUNCTIONST; \n *   setSizeRingFt           setSize
    56  */
    57 #define CLISPINNERFUNCTIONST \
    58   startClispinnerFt                start;\
    59   stopClispinnerFt                 stop;\
    60   createTheSignalTimerClispinnerFt createTheSignalTimer;\
    61   setSignalTimerClispinnerFt       setSignalTimer;\
    62   getSignalTimerClispinnerFt       getSignalTimer;\
    63   pauseProcessClispinnerFt         pauseProcess;\
    64   setSpinStringClispinnerFt        setSpinString;\
    65   setIntervalClispinnerFt          setInterval;\
    66   isSpinningClispinnerFt           isSpinning;
    67 
    68 
    69 typedef struct {
    70   freeClispinnerFt      free;
    71   terminateClispinnerFt terminate;
    72   toStringClispinnerFt  toString;
    73   duplicateClispinnerFt duplicate;
    74   smashClispinnerFt     smash;
    75   finishClispinnerFt    finish;
    76   CLISPINNERFUNCTIONST;
    77 } clispinnerFunctionst;
    78 
    79 /**
    80  * class
    81  */
    82 struct clispinner {
    83   const char           *type;
    84   clispinnerFunctionst *f;
    85   bool                 isSpinning;
    86   indexer              ix;
    87   u64                  interval;
    88   char                 title[CLISPINNERTITLESIZE];
    89   char                 spinString[32];
    90 };
    91 
    92 /* clispinner */
    93 
    94 #define createClispinner(obj) clispinnert obj; initiateClispinner(&obj)
    95 #define createAllocateClispinner(obj) clispinnert *obj; initiateAllocateClispinner(&obj)
    96 
    97 void initiateClispinner(clispinnert *self);
    98 void initiateAllocateClispinner(clispinnert **self);
    99 void finalizeClispinner(void);
   100 
   101 /* initialize class methods, call registerMethodsClispinner from classes inheriting this class */
   102 void registerMethodsClispinner(clispinnerFunctionst *f);
   103 
   104 clispinnert* allocClispinner(u64 interval, const char *title);
   105 
   106 /* end class clispinner*/
   107 
   108 #define isClispinnerCompiledWithCurrentLisheepyVersion checkLibsheepyVersionClispinner(LIBSHEEPY_VERSION)
   109 bool checkLibsheepyVersionClispinner(const char *currentLibsheepyVersion);