Ajout de trois fonctions pour positionner les valeurs des capacites,

resistances et inductances apres leur creation.
This commit is contained in:
Pierre Nguyen Tuong 2002-08-16 19:19:49 +00:00
parent 5d8bc21a5f
commit 29f162db02
16 changed files with 417 additions and 24 deletions

View File

@ -1,4 +1,4 @@
.\" $Id: GENLIB_LOCAP.3,v 1.1 2002/08/16 13:35:20 pnt Exp $
.\" $Id: GENLIB_LOCAP.3,v 1.2 2002/08/16 19:15:02 pnt Exp $
.\" @(#)GENLIB_LOCAP.3 2.11 2002/08/16; Labo LIP6/ASIM; Author : Pierre Nguyen TUong
.if t \{\
.so man1/alc_contents.mac
@ -78,8 +78,8 @@ int main(int argc,char \(**argv[])
GENLIB_DEF_LOFIG("parallel_cap") ;
/\(** Define interface \(**/
GENLIB_LOCON("i", IN, "input") ;
GENLIB_LOCON("f", OUT, "output") ;
GENLIB_LOCON("i",IN,"input") ;
GENLIB_LOCON("f",OUT,"output") ;
/\(** Add capacitors \(**/
GENLIB_LOCAP(CAPMIM,5.1,"input","output","cap1") ;

View File

@ -1,4 +1,4 @@
.\" $Id: GENLIB_LORES.3,v 1.1 2002/08/16 13:35:20 pnt Exp $
.\" $Id: GENLIB_LORES.3,v 1.2 2002/08/16 19:15:02 pnt Exp $
.\" @(#)GENLIB_LORES.3 2.11 2002/08/16; Labo LIP6/ASIM; Author : Pierre Nguyen Tuong
.if t \{\
.so man1/alc_contents.mac
@ -72,8 +72,8 @@ int main(int argc,char \(**argv[])
GENLIB_DEF_LOFIG("parallel_res") ;
/\(** Define interface \(**/
GENLIB_LOCON("i", IN, "input") ;
GENLIB_LOCON("f", OUT, "output") ;
GENLIB_LOCON("i",IN,"input") ;
GENLIB_LOCON("f",OUT,"output") ;
/\(** Add resistors \(**/
GENLIB_LORES(RESMIM,5.1,"input","output","res1") ;

View File

@ -1,4 +1,4 @@
.\" $Id: GENLIB_LOSELF.3,v 1.1 2002/08/16 13:35:20 pnt Exp $
.\" $Id: GENLIB_LOSELF.3,v 1.2 2002/08/16 19:15:02 pnt Exp $
.\" @(#)GENLIB_LOSELF.3 2.11 2002/08/16; Labo LIP6/ASIM; Author : Pierre Nguyen Tuong
.if t \{\
.so man1/alc_contents.mac
@ -72,8 +72,8 @@ int main(int argc,char \(**argv[])
GENLIB_DEF_LOFIG("parallel_self") ;
/\(** Define interface \(**/
GENLIB_LOCON("i", IN, "input") ;
GENLIB_LOCON("f", OUT, "output") ;
GENLIB_LOCON("i",IN,"input") ;
GENLIB_LOCON("f",OUT,"output") ;
/\(** Add inductors \(**/
GENLIB_LOSELF(SELFMIM,5.1,"input","output","self1") ;

View File

@ -0,0 +1,98 @@
.\" $Id: GENLIB_SET_LOCAP.3,v 1.1 2002/08/16 19:15:02 pnt Exp $
.\" @(#)GENLIB_SET_LOCAP.2 2.11 2002/08/14 ; Labo LIP6/ASIM cao-vlsi; Author : Pierre Nguyen Tuong
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_SET_LOCAP
.XE
.XS2 \n%
.ti 0.2i
GENLIB_SET_LOCAP
.XE2 \}
.TH GENLIB_SET_LOCAP 3 "August 14, 2002" "ASIM/LIP6" "MBK LOGICAL FUNCTIONS"
.SH NAME
GENLIB_SET_LOCAP \- set the capacitance value of a logical capacitor, after its creation.
.so man1/alc_origin.1
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include "mlo.h"
void GENLIB_SET_LOCAP(figname,capname,newcapa)
char \(**figname ;
char \(**capname ;
double newcapa ;
.ft R
.fi
.SH PARAMETERS
.TP 20
\fIfigname\fP
Name of the logical figure
.TP
\fIcapname\fP
Instance name of the capacitor
.TP
\fInewcapa\fP
New capacitance value
.SH DESCRIPTION
\fBGENLIB_SET_LOCAP\fP looks in the list of capacitors of the logical model \fIfigname\fP
for a capacitor identified by its instance \fIcapname\fP and set
the CAPA field to the newcapa value.
.SH RETURN VALUE
None
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"\(**\(**\(** mbk error \(**\(**\(** getlocap impossible :
capacitor \fIname\fP doesn't exist in figure \fIptfig \-> NAME\fP"
.ft R
.RS
No capacitor matches the name.
.RE
.SH EXAMPLE
.ta 3n 6n 9n 12n 15n 18n 21n
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
int main(int argc,char \(**argv[])
{
/\(** Create a figure to work on, a parallel capacitor \(**/
GENLIB_DEF_LOFIG("parallel_cap") ;
/\(** Define interface \(**/
GENLIB_LOCON("i",IN,"input") ;
GENLIB_LOCON("f",OUT,"output") ;
/\(** Add capacitors \(**/
GENLIB_LOCAP(CAPMIM,5.1,"input","output","cap1") ;
GENLIB_LOCAP(CAPMIM,5.2,"input","output","cap2") ;
/* Modify capacitors value */
GENLIB_SET_LOCAP("parallel_cap","cap1",6.2) ;
GENLIB_SET_LOCAP("parallel_cap","cap2",6.3) ;
/\(** Save all that on disk \(**/
GENLIB_SAVE_LOFIG() ;
return 0 ;
}
.ft R
.fi
.SH SEE ALSO
.BR mbk (1),
.BR GENLIB_DEF_LOFIG (3),
.BR GENLIB_LOCAP(3)
.so man1/alc_bug_report.1

View File

@ -0,0 +1,98 @@
.\" $Id: GENLIB_SET_LORES.3,v 1.1 2002/08/16 19:15:02 pnt Exp $
.\" @(#)GENLIB_SET_LORES.2 2.11 2002/08/14 ; Labo LIP6/ASIM cao-vlsi; Author : Pierre Nguyen Tuong
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_SET_LORES
.XE
.XS2 \n%
.ti 0.2i
GENLIB_SET_LORES
.XE2 \}
.TH GENLIB_SET_LORES 3 "August 14, 2002" "ASIM/LIP6" "MBK LOGICAL FUNCTIONS"
.SH NAME
GENLIB_SET_LORES \- set the resistance value of a logical resistor, after its creation.
.so man1/alc_origin.1
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include "mlo.h"
void GENLIB_SET_LORES(figname,resname,newresi)
char \(**figname ;
char \(**resname ;
double newresi ;
.ft R
.fi
.SH PARAMETERS
.TP 20
\fIfigname\fP
Name of the logical figure
.TP
\fIresname\fP
Instance name of the resistor
.TP
\fInewresi\fP
New resistance value
.SH DESCRIPTION
\fBGENLIB_SET_LORES\fP looks in the list of resistors of the logical model \fIfigname\fP
for a resistor identified by its instance \fIresname\fP and set
the RESI field to the newresi value.
.SH RETURN VALUE
None
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"\(**\(**\(** mbk error \(**\(**\(** getlores impossible :
resistor \fIname\fP doesn't exist in figure \fIptfig \-> NAME\fP"
.ft R
.RS
No resistor matches the name.
.RE
.SH EXAMPLE
.ta 3n 6n 9n 12n 15n 18n 21n
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
int main(int argc,char \(**argv[])
{
/\(** Create a figure to work on, a parallel resistor \(**/
GENLIB_DEF_LOFIG("parallel_res") ;
/\(** Define interface \(**/
GENLIB_LOCON("i",IN,"input") ;
GENLIB_LOCON("f",OUT,"output") ;
/\(** Add resistors \(**/
GENLIB_LORES(RESMIM,5.1,"input","output","res1") ;
GENLIB_LORES(RESMIM,5.2,"input","output","res2") ;
/* Modify resistors value */
GENLIB_SET_LORES("parallel_res","res1",6.2) ;
GENLIB_SET_LORES("parallel_res","res2",6.3) ;
/\(** Save all that on disk \(**/
GENLIB_SAVE_LOFIG() ;
return 0 ;
}
.ft R
.fi
.SH SEE ALSO
.BR mbk (1),
.BR GENLIB_DEF_LOFIG (3),
.BR GENLIB_LORES(3)
.so man1/alc_bug_report.1

View File

@ -0,0 +1,98 @@
.\" $Id: GENLIB_SET_LOSELF.3,v 1.1 2002/08/16 19:15:02 pnt Exp $
.\" @(#)GENLIB_SET_LOSELF.2 2.11 2002/08/14 ; Labo LIP6/ASIM cao-vlsi; Author : Pierre Nguyen Tuong
.if t \{\
.so man1/alc_contents.mac
.XS \n%
.ti 0.2i
GENLIB_SET_LOSELF
.XE
.XS2 \n%
.ti 0.2i
GENLIB_SET_LOSELF
.XE2 \}
.TH GENLIB_SET_LOSELF 3 "August 14, 2002" "ASIM/LIP6" "MBK LOGICAL FUNCTIONS"
.SH NAME
GENLIB_SET_LOSELF \- set the inductance value of a logical inductor, after its creation.
.so man1/alc_origin.1
.SH SYNOPSYS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include "mlo.h"
void GENLIB_SET_LOSELF(figname,selfname,newself)
char \(**figname ;
char \(**selfname ;
double newself ;
.ft R
.fi
.SH PARAMETERS
.TP 20
\fIfigname\fP
Name of the logical figure
.TP
\fIselfname\fP
Instance name of the inductor
.TP
\fInewself\fP
New inductance value
.SH DESCRIPTION
\fBGENLIB_SET_LOSELF\fP looks in the list of inductors of the logical model \fIfigname\fP
for a inductor identified by its instance \fIselfname\fP and set
the SELF field to the newself value.
.SH RETURN VALUE
None
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"\(**\(**\(** mbk error \(**\(**\(** getloself impossible :
inductor \fIname\fP doesn't exist in figure \fIptfig \-> NAME\fP"
.ft R
.RS
No inductor matches the name.
.RE
.SH EXAMPLE
.ta 3n 6n 9n 12n 15n 18n 21n
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include <genlib.h>
int main(int argc,char \(**argv[])
{
/\(** Create a figure to work on, a parallel inductor \(**/
GENLIB_DEF_LOFIG("parallel_self") ;
/\(** Define interface \(**/
GENLIB_LOCON("i",IN,"input") ;
GENLIB_LOCON("f",OUT,"output") ;
/\(** Add inductors \(**/
GENLIB_LOSELF(SELFMIM,5.1,"input","output","self1") ;
GENLIB_LOSELF(SELFMIM,5.2,"input","output","self2") ;
/* Modify inductors value */
GENLIB_SET_LOSELF("parallel_self","self1",6.2) ;
GENLIB_SET_LOSELF("parallel_self","self2",6.3) ;
/\(** Save all that on disk \(**/
GENLIB_SAVE_LOFIG() ;
return 0 ;
}
.ft R
.fi
.SH SEE ALSO
.BR mbk (1),
.BR GENLIB_DEF_LOFIG (3),
.BR GENLIB_LOSELF(3)
.so man1/alc_bug_report.1

View File

@ -33,6 +33,9 @@ man_MANS = GENLIB_BUS.3 \
GENLIB_LOCAP.3 \
GENLIB_LORES.3 \
GENLIB_LOSELF.3 \
GENLIB_SET_LOCAP.3 \
GENLIB_SET_LORES.3 \
GENLIB_SET_LOSELF.3 \
GENLIB_OUTLINE.3 \
GENLIB_PHCON.3 \
GENLIB_PHREF.3 \

View File

@ -1,4 +1,4 @@
.\" $Id: getlocap.3,v 1.2 2002/08/16 18:40:24 pnt Exp $
.\" $Id: getlocap.3,v 1.3 2002/08/16 19:19:41 pnt Exp $
.\" @(#)getlocap.2 2.11 2002/08/14 ; Labo LIP6/ASIM cao-vlsi; Author : Pierre Nguyen Tuong
.if t \{\
.so man1/alc_contents.mac
@ -61,7 +61,7 @@ No capacitor matches the name.
locap_list \(**exist(char \(**figname,char \(**capname)
{
return getlocap(getlofig(figname),capname) ;
return getlocap(getlofig(figname,'A'),capname) ;
}
.ft R
.fi

View File

@ -1,4 +1,4 @@
.\" $Id: getlores.3,v 1.1 2002/08/14 21:56:40 pnt Exp $
.\" $Id: getlores.3,v 1.2 2002/08/16 19:19:41 pnt Exp $
.\" @(#)getlores.2 2.11 2002/08/14 ; Labo LIP6/ASIM cao-vlsi; Author : Pierre Nguyen Tuong
.if t \{\
.so man1/alc_contents.mac
@ -61,7 +61,7 @@ No resistor matches the name.
lores_list \(**exist(char \(**figname,char \(**resname)
{
return getlores(getlofig(figname),resname) ;
return getlores(getlofig(figname,'A'),resname) ;
}
.ft R
.fi

View File

@ -1,4 +1,4 @@
.\" $Id: getloself.3,v 1.1 2002/08/14 21:56:40 pnt Exp $
.\" $Id: getloself.3,v 1.2 2002/08/16 19:19:41 pnt Exp $
.\" @(#)getloself.2 2.11 2002/08/14 ; Labo LIP6/ASIM cao-vlsi; Author : Pierre Nguyen Tuong
.if t \{\
.so man1/alc_contents.mac
@ -61,7 +61,7 @@ No inductor matches the name.
loself_list \(**exist(char \(**figname,char \(**selfname)
{
return getloself(getlofig(figname),selfname) ;
return getloself(getlofig(figname,'A'),selfname) ;
}
.ft R
.fi

View File

@ -1,4 +1,4 @@
.\" $Id: setlocap.3,v 1.1 2002/08/16 18:40:25 pnt Exp $
.\" $Id: setlocap.3,v 1.2 2002/08/16 19:19:41 pnt Exp $
.\" @(#)setlocap.2 2.11 2002/08/14 ; Labo LIP6/ASIM cao-vlsi; Author : Pierre Nguyen Tuong
.if t \{\
.so man1/alc_contents.mac
@ -66,7 +66,7 @@ No capacitor matches the name.
void set_locap_value(char \(**figname,char \(**capname,double newcapa)
{
setlocap(getlofig(figname),capname,newcapa) ;
setlocap(getlofig(figname,'A'),capname,newcapa) ;
}
.ft R
.fi

View File

@ -1,4 +1,4 @@
.\" $Id: setlores.3,v 1.1 2002/08/16 18:40:25 pnt Exp $
.\" $Id: setlores.3,v 1.2 2002/08/16 19:19:41 pnt Exp $
.\" @(#)setlores.2 2.11 2002/08/14 ; Labo LIP6/ASIM cao-vlsi; Author : Pierre Nguyen Tuong
.if t \{\
.so man1/alc_contents.mac
@ -66,7 +66,7 @@ No resistor matches the name.
void set_lores_value(char \(**figname,char \(**resname,double newresi)
{
setlores(getlofig(figname),resname,newresi) ;
setlores(getlofig(figname,'A'),resname,newresi) ;
}
.ft R
.fi

View File

@ -1,4 +1,4 @@
.\" $Id: setloself.3,v 1.1 2002/08/16 18:40:25 pnt Exp $
.\" $Id: setloself.3,v 1.2 2002/08/16 19:19:41 pnt Exp $
.\" @(#)setloself.2 2.11 2002/08/14 ; Labo LIP6/ASIM cao-vlsi; Author : Pierre Nguyen Tuong
.if t \{\
.so man1/alc_contents.mac
@ -66,7 +66,7 @@ No inductor matches the name.
void set_loself_value(char \(**figname,char \(**selfname,double newself)
{
setloself(getlofig(figname),selfname,newself) ;
setloself(getlofig(figname,'A'),selfname,newself) ;
}
.ft R
.fi

View File

@ -30,7 +30,7 @@
* Modified by pnt <Pierre.Nguyen-Tuong@lip6.fr> 2002
*/
#ident "$Id: mbk_lo.c,v 1.4 2002/08/14 19:04:14 pnt Exp $"
#ident "$Id: mbk_lo.c,v 1.5 2002/08/16 19:19:49 pnt Exp $"
#include <stdio.h>
#include <unistd.h>
@ -1873,6 +1873,35 @@ locap_list *getlocap(lofig_list *ptfig, const char *cname)
return NULL ; /* never reached */
}
/*********************************** Capacitor : setlocap **************************************/
void setlocap(lofig_list *ptfig, const char *cname,double capa)
{
locap_list *ptcap = NULL ;
locap_list *cap = NULL ;
char *name = namealloc(cname) ;
for(ptcap = ptfig -> LOCAP ; ptcap != NULL ; ptcap = ptcap -> NEXT)
{
if(ptcap -> NAME == name)
{
cap = ptcap ;
break ;
}
}
if(cap == NULL)
{
(void)fflush(stdout) ;
(void)fprintf(stderr,"*** mbk error ***\n") ;
(void)fprintf(stderr,"setlocap impossible :\n") ;
(void)fprintf(stderr,"capacitor %s doesn't exist in figure %s\n",name,ptfig -> NAME) ;
EXIT(1) ;
}
cap -> CAPA = capa ;
}
/*********************************** Capacitor : viewlocap *************************************/
void viewlocap(locap_list *ptcap)
@ -2106,6 +2135,35 @@ lores_list *getlores(lofig_list *ptfig, const char *cname)
return NULL ; /* never reached */
}
/*********************************** Resistor : setlores **************************************/
void setlores(lofig_list *ptfig, const char *cname,double resi)
{
lores_list *ptres = NULL ;
lores_list *res = NULL ;
char *name = namealloc(cname) ;
for(ptres = ptfig -> LORES ; ptres != NULL ; ptres = ptres -> NEXT)
{
if(ptres -> NAME == name)
{
res = ptres ;
break ;
}
}
if(res == NULL)
{
(void)fflush(stdout) ;
(void)fprintf(stderr,"*** mbk error ***\n") ;
(void)fprintf(stderr,"setlores impossible :\n") ;
(void)fprintf(stderr,"resistor %s doesn't exist in figure %s\n",name,ptfig -> NAME) ;
EXIT(1) ;
}
res -> RESI = resi ;
}
/*********************************** Resistor : viewlores ***************************************/
void viewlores(lores_list *ptres)
@ -2339,6 +2397,35 @@ loself_list *getloself(lofig_list *ptfig, const char *cname)
return NULL ; /* never reached */
}
/*********************************** Inductor : setloself **************************************/
void setloself(lofig_list *ptfig, const char *cname,double self)
{
loself_list *ptself = NULL ;
loself_list *theself = NULL ;
char *name = namealloc(cname) ;
for(ptself = ptfig -> LOSELF ; ptself != NULL ; ptself = ptself -> NEXT)
{
if(ptself -> NAME == name)
{
theself = ptself ;
break ;
}
}
if(theself == NULL)
{
(void)fflush(stdout) ;
(void)fprintf(stderr,"*** mbk error ***\n") ;
(void)fprintf(stderr,"setloself impossible :\n") ;
(void)fprintf(stderr,"inductor %s doesn't exist in figure %s\n",name,ptfig -> NAME) ;
EXIT(1) ;
}
theself -> SELF = self ;
}
/*********************************** Inductor : viewloself ***************************************/
void viewloself(loself_list *ptself)

View File

@ -27,7 +27,7 @@
* Author : Frederic Petrot <Frederic.Petrot@lip6.fr>
* Modified by Czo <Olivier.Sirol@lip6.fr> 1997,98
* Modified by pnt <Pierre.Nguyen-Tuong@lip6.fr> 2002
* $Id: mbk_lo.h,v 1.2 2002/08/08 19:47:37 pnt Exp $
* $Id: mbk_lo.h,v 1.3 2002/08/16 19:19:49 pnt Exp $
*/
#ifndef _MBK_LO_H_
@ -75,6 +75,7 @@ extern locap_list *addlocap __P((lofig_list *ptfig,char type,double capa,losig_l
losig_list *ptbplate,char *name)) ;
extern int dellocap __P((lofig_list *ptfig,locap_list *ptcap)) ;
extern locap_list *getlocap __P((lofig_list *ptfig,const char *name)) ;
extern void setlocap __P((lofig_list *ptfig,const char *name,double capa)) ;
extern void dellocapuser __P((locap_list *)) ;
extern void viewlocap __P((locap_list *ptcap)) ;
@ -82,6 +83,7 @@ extern lores_list *addlores __P((lofig_list *ptfig,char type,double resi,losig_l
losig_list *ptrcon2,char *name)) ;
extern int dellores __P((lofig_list *ptfig,lores_list *ptres)) ;
extern lores_list *getlores __P((lofig_list *ptfig,const char *name)) ;
extern void setlores __P((lofig_list *ptfig,const char *name,double resi)) ;
extern void delloresuser __P((lores_list *)) ;
extern void viewlores __P((lores_list *ptres)) ;
@ -89,6 +91,7 @@ extern loself_list *addloself __P((lofig_list *ptfig,char type,double self,losig
losig_list *ptscon2,char *name)) ;
extern int delloself __P((lofig_list *ptfig,loself_list *ptself)) ;
extern loself_list *getloself __P((lofig_list *ptfig,const char *name)) ;
extern void setloself __P((lofig_list *ptfig,const char *name,double self)) ;
extern void delloselfuser __P((loself_list *)) ;
extern void viewloself __P((loself_list *ptself)) ;

View File

@ -27,7 +27,7 @@
* Author : Frederic Petrot <Frederic.Petrot@lip6.fr>
* Modified by Czo <Olivier.Sirol@lip6.fr> 1997,98
* Modified by pnt <Pierre.Nguyen-Tuong@lip6.fr> 2002
* $Id: mlo.h,v 1.5 2002/08/13 16:51:36 pnt Exp $
* $Id: mlo.h,v 1.6 2002/08/16 19:19:49 pnt Exp $
*/
#ifndef _MLO_H_
@ -312,19 +312,25 @@ extern locap_list *addlocap __P((lofig_list *ptfig,char type,double capa,losig_l
losig_list *ptbplate,char *name)) ;
extern int dellocap __P((lofig_list *ptfig,locap_list *ptcap)) ;
extern locap_list *getlocap __P((lofig_list *ptfig,const char *name)) ;
extern void setlocap __P((lofig_list *ptfig,const char *name,double capa)) ;
extern void dellocapuser __P((locap_list *)) ;
extern void viewlocap __P((locap_list *ptcap)) ;
extern lores_list *addlores __P((lofig_list *ptfig,char type,double resi,losig_list *ptrcon1,
losig_list *ptrcon2,char *name)) ;
extern int dellores __P((lofig_list *ptfig,lores_list *ptres)) ;
extern lores_list *getlores __P((lofig_list *ptfig,const char *name)) ;
extern void setlores __P((lofig_list *ptfig,const char *name,double resi)) ;
extern void delloresuser __P((lores_list *)) ;
extern void viewlores __P((lores_list *ptres)) ;
extern loself_list *addloself __P((lofig_list *ptfig,char type,double self,losig_list *ptscon1,
losig_list *ptscon2,char *name)) ;
extern int delloself __P((lofig_list *ptfig,loself_list *ptself)) ;
extern loself_list *getloself __P((lofig_list *ptfig,const char *name)) ;
extern void setloself __P((lofig_list *ptfig,const char *name,double self)) ;
extern void delloselfuser __P((loself_list *)) ;
extern void viewloself __P((loself_list *ptself)) ;
/************************************************************************************/