Main Page   Alphabetical List   Compound List   File List   Compound Members   File Members  

qtype.c File Reference

#include "lclintMacros.nf"
#include "basic.h"

Go to the source code of this file.

Functions

qtype qtype_create (ctype c)
void qtype_free ( qtype q)
qtype qtype_unknown ()
qtype qtype_addQual (qtype qt, qual q)
qtype qtype_addQualList ( qtype qt, qualList ql)
qtype qtype_mergeImplicitAlt ( qtype q1, qtype q2)
qtype qtype_mergeAlt ( qtype q1, qtype q2)
qtype qtype_combine ( qtype q1, ctype ct)
qtype qtype_resolve ( qtype q)
cstring qtype_unparse (qtype q)
qtype qtype_newBase ( qtype q, ctype ct)
qtype qtype_newQbase (qtype q1, qtype q2)
void qtype_adjustPointers (int n, qtype q)
qtype qtype_copy (qtype q)


Function Documentation

qtype qtype_addQual ( qtype qt,
qual q )
 

Definition at line 57 of file qtype.c.

Referenced by idDecl_addQual().

00058 {
00059   if (qtype_isDefined (qt))
00060     {
00061       qt->quals = qualList_add (qt->quals, q);
00062     }
00063 
00064   return qt;
00065 }

qtype qtype_addQualList ( qtype qt,
qualList ql )
 

Definition at line 68 of file qtype.c.

00069 {
00070   if (qtype_isDefined (qt))
00071     {
00072       qt->quals = qualList_appendList (qt->quals, ql);
00073     }
00074 
00075   return qt;
00076 }

void qtype_adjustPointers ( int n,
qtype q )
 

Definition at line 202 of file qtype.c.

00203 {
00204   if (qtype_isDefined (q))
00205     {
00206       q->type = ctype_adjustPointers (n, q->type);
00207     }
00208 }

qtype qtype_combine ( qtype q1,
ctype ct )
 

Definition at line 147 of file qtype.c.

00148 {
00149   if (qtype_isDefined (q1))
00150     {
00151       /* ct is modifier (or q1->type is unknown) */
00152       q1->type = ctype_combine (q1->type, ct); 
00153     }
00154 
00155   return q1;
00156 }

qtype qtype_copy ( qtype q )
 

Definition at line 211 of file qtype.c.

00212 {
00213   if (qtype_isDefined (q))
00214     {
00215       qtype r = qtype_create (q->type);
00216       
00217       qualList_free (r->quals);
00218       r->quals = qualList_copy (q->quals);
00219       return r;
00220     }
00221   else
00222     {
00223       return qtype_undefined;
00224     }
00225 }

qtype qtype_create ( ctype c )
 

Definition at line 34 of file qtype.c.

Referenced by processNamedDecl(), qtype_copy(), and qtype_unknown().

00035 {
00036   qtype q = (qtype) dmalloc (sizeof (*q));
00037 
00038   q->type = c;
00039   q->quals = qualList_new ();
00040   return q;
00041 }

void qtype_free ( qtype q )
 

Definition at line 43 of file qtype.c.

Referenced by doDeclareConstant(), doDeclareVar(), exprNode_cast(), idDecl_free(), idDecl_setTyp(), qtype_mergeAlt(), qtype_mergeImplicitAlt(), setProcessingTypedef(), and setProcessingVars().

00044 {
00045   if (qtype_isDefined (q))
00046     {
00047       qualList_free (q->quals);
00048       sfree (q);
00049     }
00050 }

qtype qtype_mergeAlt ( qtype q1,
qtype q2 )
 

Definition at line 123 of file qtype.c.

00124 {
00125   if (qtype_isDefined (q1) && qtype_isDefined (q2))
00126     {
00127       if (context_getFlag (FLG_IMPCONJ))
00128         {
00129           q1->type = ctype_makeConj (q1->type, q2->type);
00130         }
00131       else
00132         {
00133           q1->type = ctype_makeExplicitConj (q1->type, q2->type);
00134         }
00135 
00136       
00137       if (!qualList_isEmpty (q2->quals))
00138         {
00139           checkAltQuals (q2);
00140         }
00141     }
00142   
00143   qtype_free (q2);
00144   return q1;
00145 }

qtype qtype_mergeImplicitAlt ( qtype q1,
qtype q2 )
 

Definition at line 106 of file qtype.c.

00107 {
00108   if (qtype_isDefined (q1) && qtype_isDefined (q2))
00109     {
00110       q1->type = ctype_makeConj (q1->type, q2->type);
00111       
00112       if (!qualList_isEmpty (q2->quals))
00113         {
00114           checkAltQuals (q2);
00115         }
00116     }
00117 
00118   qtype_free (q2);
00119   return q1;
00120 }

qtype qtype_newBase ( qtype q,
ctype ct )
 

Definition at line 181 of file qtype.c.

00182 {
00183   if (qtype_isDefined (q))
00184     {
00185       q->type = ctype_newBase (ct, q->type);
00186     }
00187 
00188   return q;
00189 }

qtype qtype_newQbase ( qtype q1,
qtype q2 )
 

Definition at line 191 of file qtype.c.

Referenced by idDecl_fixBase(), and idDecl_fixParamBase().

00192 {
00193   if (qtype_isDefined (q1) && qtype_isDefined (q2))
00194     {
00195       q1->type = ctype_newBase (q1->type, q2->type);
00196       q1->quals = qualList_appendList (q1->quals, q2->quals);
00197     }
00198 
00199   return q1;
00200 }

qtype qtype_resolve ( qtype q )
 

Definition at line 158 of file qtype.c.

00159 {
00160   if (qtype_isDefined (q))
00161     {
00162       q->type = ctype_resolve (q->type);
00163     }
00164 
00165   return q;
00166 }

qtype qtype_unknown ( )
 

Definition at line 52 of file qtype.c.

00053 {
00054   return (qtype_create (ctype_unknown));
00055 }

cstring qtype_unparse ( qtype q )
 

Definition at line 168 of file qtype.c.

00169 {
00170   if (qtype_isDefined (q))
00171     {
00172       return (message ("%q%s", qualList_unparse (q->quals), 
00173                        ctype_unparse (q->type)));
00174     }
00175   else
00176     {
00177       return (cstring_makeLiteral ("<undefined>"));
00178     }
00179 }


Generated at Fri Nov 3 18:58:04 2000 for LCLint by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000