hqlcpputil.hpp 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /*##############################################################################
  2. Copyright (C) 2011 HPCC Systems.
  3. All rights reserved. This program is free software: you can redistribute it and/or modify
  4. it under the terms of the GNU Affero General Public License as
  5. published by the Free Software Foundation, either version 3 of the
  6. License, or (at your option) any later version.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU Affero General Public License for more details.
  11. You should have received a copy of the GNU Affero General Public License
  12. along with this program. If not, see <http://www.gnu.org/licenses/>.
  13. ############################################################################## */
  14. #ifndef HQLCPPUTIL_HPP
  15. #define HQLCPPUTIL_HPP
  16. interface IConstWorkUnit;
  17. class CHqlBoundExpr;
  18. extern ITypeInfo * queryBoolType();
  19. extern IHqlExpression * queryBoolExpr(bool value);
  20. extern IHqlExpression * queryNullChar();
  21. extern IHqlExpression * queryZero();
  22. extern IHqlExpression * getZero();
  23. extern IHqlExpression * getDefaultAttr();
  24. extern IHqlExpression * getSelfAttr();
  25. extern IHqlExpression * queryActivityIdMarker();
  26. extern IHqlExpression * queryConditionalRowMarker();
  27. extern bool storePointerInArray(ITypeInfo * type);
  28. extern bool isCompare3Valued(ITypeInfo * type);
  29. extern ITypeInfo * queryVoidType();
  30. extern ITypeInfo * getArrayElementType(ITypeInfo * itemType);
  31. extern ITypeInfo * getConcatResultType(IHqlExpression * expr);
  32. extern bool isSelectSortedTop(IHqlExpression * selectExpr);
  33. extern ITypeInfo * makeRowReferenceType(IHqlExpression * ds);
  34. extern ITypeInfo * makeRowReferenceType(const CHqlBoundExpr & bound);
  35. extern IHqlExpression * addMemberSelector(IHqlExpression * expr, IHqlExpression * selector);
  36. extern IHqlExpression * addExpressionModifier(IHqlExpression * expr, typemod_t modifier, IInterface * extra=NULL);
  37. extern void expandFieldNames(StringBuffer & out, IHqlExpression * record, const char * sep, IHqlExpression * formatFunc);
  38. extern IHqlExpression * ensurePositiveOrZeroInt64(IHqlExpression * expr);
  39. extern void getOutputLibraryName(SCMStringBuffer & libraryName, IConstWorkUnit * wu);
  40. extern bool canCreateTemporary(IHqlExpression * expr);
  41. extern IHqlExpression * projectCreateSetDataset(IHqlExpression * createsetExpr);
  42. extern IHqlExpression * mapInternalFunctionParameters(IHqlExpression * expr);
  43. //Common types and expressions...
  44. extern ITypeInfo * boolType;
  45. extern ITypeInfo * sizetType;
  46. extern ITypeInfo * signedType;
  47. extern ITypeInfo * unsignedType;
  48. extern ITypeInfo * defaultIntegralType;
  49. extern ITypeInfo * counterType;
  50. extern ITypeInfo * unknownDataType;
  51. extern ITypeInfo * unknownStringType;
  52. extern ITypeInfo * unknownVarStringType;
  53. extern ITypeInfo * unknownUtf8Type;
  54. extern ITypeInfo * constUnknownVarStringType;
  55. extern ITypeInfo * unknownUnicodeType;
  56. extern ITypeInfo * fposType;
  57. extern ITypeInfo * doubleType;
  58. extern IHqlExpression * skipActionMarker;
  59. extern IHqlExpression * skipReturnMarker;
  60. extern IHqlExpression * subGraphMarker;
  61. extern IHqlExpression * removedAssignTag;
  62. extern IHqlExpression * internalAttrExpr;
  63. #define NO_ACTION_REQUIRES_GRAPH \
  64. no_apply:\
  65. case no_output:\
  66. case no_buildindex:\
  67. case no_distribution:\
  68. case no_newsoapcall:\
  69. case no_newsoapcall_ds:\
  70. case no_newsoapaction_ds:\
  71. case no_keydiff:\
  72. case no_keypatch:\
  73. case no_setgraphresult:\
  74. case no_allnodes:\
  75. case no_definesideeffect
  76. #endif