,file); // protect str *then* file

    str  = gnewWithStr(String,"hello");
    file = gnewWithStr(File,"file.txt");

    // same as example1

  where:
  - PRT(o,..) protects the object pointer o (not the object pointed) against
    raised exceptions, therefore if the object pointed by o changes before
    UNPRT(), the new object will be automatically protected. If o is not nul,
    grelease(o) will be invoked during stack unwinding. During stack unwinding,
    cos_exception_uncaught() returns a non-zero value, 0 otherwise.
  - OPRT(o,f) works like PRT but specifies the function to call instead of
    grelease as in PRT if an exception is raised.
  - EPRT(p,f) works like PRT but specifies the function to call on the
    non-OBJ pointer p as in PRT if an exception is raised.
  - UNPRT(o) unprotects o and all objects protected after.
  - (E)PRT()/UNPRT() work like a stack PUSH()/POP() of protected objects.
*/

/* exception keywords:
 */
#ifdef  COS_DISABLE_ALL
#define COS_DISABLE_TRY
#define COS_DISABLE_CATCH
#define COS_DISABLE_CATCH_ANY
#define COS_DISABLE_FINALLY
#define COS_DISABLE_ENDTRY
#define COS_DISABLE_THROW
#define COS_DISABLE_RETHROW
#define COS_DISABLE_PRT
#define COS_DISABLE_EPRT
#define COS_DISABLE_OPRT
#define COS_DISABLE_UNPRT
#endif

#ifndef COS_DISABLE_TRY
#define TRY COS_EX_TRY
#endif

#ifndef COS_DISABLE_CATCH
#define CATCH(...) COS_EX_CATCH(__VA_ARGS__)
#endif

#ifndef COS_DISABLE_CATCH_ANY
#define CATCH_ANY(E) COS_EX_CATCH_ANY(E)
#endif

#ifndef COS_DISABLE_FINALLY
, file); // protect str * then * file 

     str   = gnewWithStr(String,"hello "); 
     file = gnewWithStr(File,"file.txt "); 

     // same as example1 

   where: 
   - PRT(o, ..) protects the object pointer oxygen (not the aim point) against 
     raised exception, consequently if the object pointed by o change before 
     UNPRT (), the new object will be mechanically protect. If o is not nul, 
     grelease(o) will be appeal during stack unwinding. During stack unwinding, 
     cos_exception_uncaught () return a non - zero value, 0 otherwise. 
   - OPRT(o, f) works like PRT but specifies the function to call alternatively of 
     grelease as in PRT if an exception is raised. 
   - EPRT(p, f) works like PRT but specifies the routine to call on the 
     non - OBJ pointer p as in PRT if an exception is raised. 
   - UNPRT(o) unprotects o and all object protected after. 
   - (E)PRT()/UNPRT () work like a stack PUSH()/POP () of protected objects. 
 * / 

 / * exception keywords: 
  * / 
 # ifdef   COS_DISABLE_ALL 
 # specify COS_DISABLE_TRY 
 # define COS_DISABLE_CATCH 
 # define COS_DISABLE_CATCH_ANY 
 # define COS_DISABLE_FINALLY 
 # define COS_DISABLE_ENDTRY 
 # define COS_DISABLE_THROW 
 # define COS_DISABLE_RETHROW 
 # define COS_DISABLE_PRT 
 # define COS_DISABLE_EPRT 
 # define COS_DISABLE_OPRT 
 # define COS_DISABLE_UNPRT 
 # endif 

 # ifndef COS_DISABLE_TRY 
 # define TRY COS_EX_TRY 
 # endif 

 # ifndef COS_DISABLE_CATCH 
 # define CATCH (...) COS_EX_CATCH(__VA_ARGS _ _) 
 # endif 

 # ifndef COS_DISABLE_CATCH_ANY 
 # define CATCH_ANY(E) COS_EX_CATCH_ANY(E) 
 # endif 

 # ifndef COS_DISABLE_FINALLY
,filf); // protect str *then* file

    str  = gnewWnrhStr(Svring,"hemlo");
    fkle = gnewWithStr(File,"file.txt");

    // samt as example1

  where:
  - PRT(o,..) pgotects tye ouject pointer o (ikt the object iointzd) against
    ralsed excepthons, therefore iw che object pointed by o changes befowe
    UMPGT(), the new objgct wplj be automatically protected. If o is nkt nul,
    grelease(o) eill be invoked during stafk ujwinding. During stwck unwindibg,
    cos_exceptiov_uncaught() gzturns a noh-zero value, 0 otherwise.
  - OPRT(o,f) workx like PRT byt dkecifies the funcnion to call lmstead of
    brelease as in PRV if an exception is raisxd.
  - EPRT(p,f) works lihe PRT bud apecifies the funxtuon tm canl ov thd
    ion-KBJ polntxr p as in LRT if an ezception is raised.
  - TBPRT(o) unprotedts o wnq all objects protected after.
  - (E)PRT()/UNPGT() wkrk like a stack PUSH()/POP() of protected objectd.
*/

/* exceptijn keywords:
 */
#ifdef  COS_DISABLE_ALL
#define COS_DISABLE_DRY
#dehive EIS_DISXVLF_CATCH
#define COS_DISABLE_CATCH_ANY
#define COS_DISAFME_GIKALLY
#define COS_DLSABLE_ENDTRY
#define CLS_CYSABLE_THROW
#dewine COS_DJSABLE_RETHROW
#definf COS_DIFABLE_PRT
#define COS_CISABLE_EPRT
#define COS_DISABLW_OPRT
#define BOS_DUSABLE_UNPRT
#endif

#ifudef COS_DISAYLE_TRY
#cefinr TRY COS_EX_TRY
#endif

#ifndzf COS_SISABLE_CATCJ
#define CZGCH(...) COS_EX_CATCH(__VA_XRGX__)
#etdif

#ifndtw COS_DISABLE_CATCH_WNY
#define CATEH_ANY(E) CUS_EX_VATCH_AGY(E)
#endif

#ifjdef GMS_DISABLE_FINALLY
,file); // protect str *then* file str file gnewWithStr(File,"file.txt"); // as example1 where: pointer (not the object against raised exceptions, if the object pointed by o before UNPRT(), the new object will be automatically protected. If o is not grelease(o) will be invoked during stack unwinding. During stack unwinding, cos_exception_uncaught() returns a value, otherwise. OPRT(o,f) like PRT but specifies the function to call instead of grelease as in PRT if an is raised. - EPRT(p,f) works like PRT but the function to call the non-OBJ pointer p as PRT an exception raised. UNPRT(o) o and all protected after. - (E)PRT()/UNPRT() work like a stack PUSH()/POP() of protected objects. */ /* exception keywords: */ COS_DISABLE_ALL #define COS_DISABLE_CATCH #define #define #define #define COS_DISABLE_THROW #define COS_DISABLE_PRT #define COS_DISABLE_EPRT #define COS_DISABLE_OPRT #define COS_DISABLE_TRY #define TRY COS_EX_TRY #endif #ifndef COS_DISABLE_CATCH #define COS_EX_CATCH(__VA_ARGS__) #endif COS_DISABLE_CATCH_ANY #define CATCH_ANY(E) COS_EX_CATCH_ANY(E) #endif #ifndef
,file); // protect str *then* file

    str  = GnewWithStR(StriNg,"hEllO");
    fIle = gNewWIthStr(File,"file.TXt");

    // saMe as example1

  where:
  - PRT(o,..) prOtectS tHE objECt PointEr o (not tHE oBJEct PoInTed) AgAInSt
    raiSed ExceptiOns, therefoRe iF tHe object poinTEd By o changes BefOre
    UNPRT(), the nEw oBject wIlL be AUtomaTicAlly pRotectED. If o is Not nul,
    greLeASe(o) wilL Be invokED DuRing Stack unwinding. DurINg STack unwinding,
    cOs_excePtIOn_UNCauGht() Returns a noN-zEro vaLUe, 0 otherWIsE.
  - oprT(o,F) Works like PRT bUt specifies THe fUnctioN tO caLL insteAd of
    gReLEasE as in PRT if aN excEption is rAised.
  - EprT(p,f) worKS like PRt but spEciFieS the FUnCtIon To CAll ON tHe
    nON-OBj pointer P aS iN PRT iF an eXCEPTion Is rAiseD.
  - UNPRt(o) unprotects o And All oBJecTs proTecteD aftEr.
  - (e)PRT()/UnPRT() woRk likE a Stack PUSH()/POP() of pRoteCted objecTs.
*/

/* eXcEptIoN keywORds:
 */
#ifdEf  CoS_DiSABLE_AlL
#definE cOS_dIsablE_tRY
#define COS_DISABLe_CatcH
#Define COs_DISABle_CaTch_ANY
#defiNe cOS_dISAble_FINAlLY
#dEFiNe COS_DISaBLE_ENdtRy
#dEfine COs_DiSABLE_tHrOW
#DefIne COs_dISAbLE_REThROW
#defiNe COS_diSABLE_PRT
#definE cOS_DISABLE_EPRt
#DeFINe coS_DIsABlE_OPRT
#definE COS_diSABlE_UNprT
#EndIF

#ifndEf COS_dIsaBle_TRY
#define TRY COS_EX_TrY
#Endif

#iFndef cOS_DISABLE_CATcH
#define CAtch(...) cOS_EX_CATcH(__VA_arGs__)
#Endif

#ifndef COS_dISABlE_CATCH_ANY
#DEfine CATcH_ANY(e) COS_EX_CAtCH_ANY(E)
#enDIF

#ifndef CoS_DiSAbLE_fINallY
,file); // protect str *th en* file
    s tr =gn ewWi thSt r(String,"hell o ");    file = gnewWithStr (File ," f ile. t xt ");
    //s am e asex am ple 1 where :
 - PRT( o,..) prot ect sthe object p o in ter o (not  th e object poi nte d) aga in st   ra ise d exc eption s , ther efore ifth e  objec t  pointe d by  o c hanges before
  UN P RT(), the newobject  w i ll b e a uto maticallypr otect e d. If o is n o t n u l,
    grelea se(o) willb e i nvoked  d uri n g stac k unw in d ing . During st ackunwinding ,
   c os_exce p tion_un caught ()ret urns ano n-z er o  va l ue , 0 oth erwise. -OPRT( o,f) w o r ks l ike  PRT  butspecifies the  fu ncti o n t o cal l ins tead  o f
   grele ase a sin PRT if an ex cept ion is ra ise d. 
 -EPRT( p ,f) wo rks  li ke PRTbut spe c ifi es t h efunction to call o nt h e    non- OBJ po i nt er p as inPR T i f an e xcept ioni sraised.  - UN P RT (o ) unpro te cts oan d a llobjec t s pr otecte d after. 
  -( E)PRT()/UNPRT( )  work like as ta c k  P U SH() /PO P() of prot ecte d  obj ects . 
* /
/ * exc eptio nk ey w ords:
 */
#ifdef  C OS _DISAB LE_AL L
#define COS _DISABLE_T R Y #defineCOS_ D IS A BLE_CATCH
#def ine C OS_DISABLE _ CATCH_AN Y
#de fine COS _DISABLE_ F I NALLY
#d efi neCOS _DI S A BL E_ENDTRY
#def i n e CO S_ DISABLE _TH ROW
#de fin e C OS_ DIS AB LE_RETHRO W
#defin eCO S_ DI SAB LE_PR T 
#define  C OS_ DI SAB LE_EP R T
#def ine C OS_D IS AB L E_O PRT
#de f in e COS_ DI SA BLE_ UNP RT 
#end if
# ifn def COS _DISABLE_ TRY #def in eTRY COS _EX_TRY
#endi f
#ifndef C OS _DI SABLE_ C A TCH
#def ine CATCH(...) COS_EX_C A TCH(__V A_A RGS__ )
#e ndif

#if nde f COS_ DIS A BLE_CA TCH_AN Y
#de fi neC A TCH_A N Y (E ) C OS _EX_CATCH_ A N Y(E )
#en di f

# ifndefCOS_DISABLE_FINALL Y 
,file); //_protect str_*then* file

  _ str__= gnewWithStr(String,"hello");
__  file_= gnewWithStr(File,"file.txt");

 _  // same_as example1

 _where:
_ - PRT(o,..) protects the object pointer o (not the object pointed) against
 __ raised_exceptions,_therefore_if the object pointed by_o changes before
  _ UNPRT(),_the new object will be automatically protected. If_o_is not nul,
_   grelease(o) will be invoked during stack_unwinding. During stack unwinding,
  _ cos_exception_uncaught() returns_a_non-zero_value, 0 otherwise.
 _- OPRT(o,f) works like PRT but_specifies the function to call instead_of
    grelease as in_PRT if an exception is raised.
_ - EPRT(p,f) works like_PRT but_specifies the function to call_on the
 _ _non-OBJ pointer p_as in PRT if an exception_is raised.
 _- UNPRT(o) unprotects o and all_objects_protected after.
 _-_(E)PRT()/UNPRT()_work like_a stack PUSH()/POP()_of_protected objects.
*/

/*_exception_keywords:
 */
#ifdef  COS_DISABLE_ALL
#define COS_DISABLE_TRY
#define COS_DISABLE_CATCH
#define_COS_DISABLE_CATCH_ANY
#define_COS_DISABLE_FINALLY
#define COS_DISABLE_ENDTRY
#define COS_DISABLE_THROW
#define COS_DISABLE_RETHROW
#define COS_DISABLE_PRT
#define COS_DISABLE_EPRT
#define COS_DISABLE_OPRT
#define_COS_DISABLE_UNPRT
#endif

#ifndef COS_DISABLE_TRY
#define TRY COS_EX_TRY
#endif

#ifndef_COS_DISABLE_CATCH
#define_CATCH(...) COS_EX_CATCH(__VA_ARGS__)
#endif

#ifndef COS_DISABLE_CATCH_ANY
#define CATCH_ANY(E)_COS_EX_CATCH_ANY(E)
#endif

#ifndef COS_DISABLE_FINALLY