Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
2.1 KiB

  1. /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2. Copyright (c) 1989-1999 Microsoft Corporation
  3. Module Name:
  4. makexpr.hxx
  5. Abstract:
  6. Routine prototypes for complex expression creation routines.
  7. Notes:
  8. History:
  9. ----------------------------------------------------------------------------*/
  10. /****************************************************************************
  11. * include files
  12. ***************************************************************************/
  13. #include "nulldefs.h"
  14. extern "C"
  15. {
  16. #include <stdio.h>
  17. }
  18. #include "expr.hxx"
  19. #include "nodeskl.hxx"
  20. #include "listhndl.hxx"
  21. /****************************************************************************
  22. * routine prototypes.
  23. ***************************************************************************/
  24. expr_node * MakeRefExprOutOfDeref( expr_node * pExpr );
  25. expr_node * MakeReferentExpressionIfNecessary( expr_node * pExpr );
  26. expr_node * MakeDereferentExpressionIfNecessary( expr_node * pExpr );
  27. expr_node * MakeAddressExpressionNoMatterWhat( expr_node * pExpr );
  28. expr_node * MakeDerefExpressionOfCastPtrToType( node_skl * pType,
  29. expr_node * pSrcExpr
  30. );
  31. expr_node * MakeExpressionOfCastPtrToType( node_skl * pType,
  32. expr_node * pExpr );
  33. expr_node * MakeExpressionOfCastToTypeName( PNAME pName,
  34. expr_node * pExpr );
  35. expr_proc_call * MakeProcCallOutOfParamExprList( PNAME ProcName,
  36. node_skl * pProcType,
  37. ITERATOR& ParamExprList );
  38. expr_node * MakeAddressOfPointer( expr_node * pExpr );
  39. expr_node * MakeCastExprPtrToUChar( expr_node * pExpr );
  40. expr_node * MakeCastExprPtrToPtrToUChar( expr_node * pExpr );
  41. expr_node * MakeCastExprPtrToVoid( expr_node * pExpr );
  42. void SetPrefixes( ITERATOR& VarListToBeMangled,
  43. char * pPrefix,
  44. expr_node * pTargetExpr );
  45. void ResetPrefixes( ITERATOR& VarListToBeMangled,
  46. expr_node * pTargetExpr );
  47. expr_node * Make_1_ArrayExpressionFromVarName( PNAME pName, int Dimension );
  48. expr_node * CombineIntoLogicalAndExpr( ITERATOR& List );
  49. expr_node * MakeAttrExprWithNullPtrChecks( expr_node * pExpr );