@@ -406,119 +406,38 @@ class QueryWrap final : public AsyncWrap {
406406  QueryWrap<Traits>** callback_ptr_ = nullptr ;
407407};
408408
409- struct  AnyTraits  final  {
410-   static  constexpr  const  char * name = " resolveAny"  ;
411-   static  int  Send (QueryWrap<AnyTraits>* wrap, const  char * name);
412-   static  v8::Maybe<int > Parse (QueryWrap<AnyTraits>* wrap,
413-                               const  std::unique_ptr<ResponseData>& response);
414- };
415- 
416- struct  ATraits  final  {
417-   static  constexpr  const  char * name = " resolve4"  ;
418-   static  int  Send (QueryWrap<ATraits>* wrap, const  char * name);
419-   static  v8::Maybe<int > Parse (QueryWrap<ATraits>* wrap,
420-                               const  std::unique_ptr<ResponseData>& response);
421- };
422- 
423- struct  AaaaTraits  final  {
424-   static  constexpr  const  char * name = " resolve6"  ;
425-   static  int  Send (QueryWrap<AaaaTraits>* wrap, const  char * name);
426-   static  v8::Maybe<int > Parse (QueryWrap<AaaaTraits>* wrap,
427-                               const  std::unique_ptr<ResponseData>& response);
428- };
429- 
430- struct  CaaTraits  final  {
431-   static  constexpr  const  char * name = " resolveCaa"  ;
432-   static  int  Send (QueryWrap<CaaTraits>* wrap, const  char * name);
433-   static  v8::Maybe<int > Parse (QueryWrap<CaaTraits>* wrap,
434-                               const  std::unique_ptr<ResponseData>& response);
435- };
436- 
437- struct  CnameTraits  final  {
438-   static  constexpr  const  char * name = " resolveCname"  ;
439-   static  int  Send (QueryWrap<CnameTraits>* wrap, const  char * name);
440-   static  v8::Maybe<int > Parse (QueryWrap<CnameTraits>* wrap,
441-                               const  std::unique_ptr<ResponseData>& response);
442- };
443- 
444- struct  MxTraits  final  {
445-   static  constexpr  const  char * name = " resolveMx"  ;
446-   static  int  Send (QueryWrap<MxTraits>* wrap, const  char * name);
447-   static  v8::Maybe<int > Parse (QueryWrap<MxTraits>* wrap,
448-                               const  std::unique_ptr<ResponseData>& response);
449- };
450- 
451- struct  NsTraits  final  {
452-   static  constexpr  const  char * name = " resolveNs"  ;
453-   static  int  Send (QueryWrap<NsTraits>* wrap, const  char * name);
454-   static  v8::Maybe<int > Parse (QueryWrap<NsTraits>* wrap,
455-                               const  std::unique_ptr<ResponseData>& response);
456- };
457- 
458- struct  TlsaTraits  final  {
459-   static  constexpr  const  char * name = " resolveTlsa"  ;
460-   static  int  Send (QueryWrap<TlsaTraits>* wrap, const  char * name);
461-   static  v8::Maybe<int > Parse (QueryWrap<TlsaTraits>* wrap,
462-                               const  std::unique_ptr<ResponseData>& response);
463- };
464- 
465- struct  TxtTraits  final  {
466-   static  constexpr  const  char * name = " resolveTxt"  ;
467-   static  int  Send (QueryWrap<TxtTraits>* wrap, const  char * name);
468-   static  v8::Maybe<int > Parse (QueryWrap<TxtTraits>* wrap,
469-                               const  std::unique_ptr<ResponseData>& response);
470- };
471- 
472- struct  SrvTraits  final  {
473-   static  constexpr  const  char * name = " resolveSrv"  ;
474-   static  int  Send (QueryWrap<SrvTraits>* wrap, const  char * name);
475-   static  v8::Maybe<int > Parse (QueryWrap<SrvTraits>* wrap,
476-                               const  std::unique_ptr<ResponseData>& response);
477- };
478- 
479- struct  PtrTraits  final  {
480-   static  constexpr  const  char * name = " resolvePtr"  ;
481-   static  int  Send (QueryWrap<PtrTraits>* wrap, const  char * name);
482-   static  v8::Maybe<int > Parse (QueryWrap<PtrTraits>* wrap,
483-                               const  std::unique_ptr<ResponseData>& response);
484- };
485- 
486- struct  NaptrTraits  final  {
487-   static  constexpr  const  char * name = " resolveNaptr"  ;
488-   static  int  Send (QueryWrap<NaptrTraits>* wrap, const  char * name);
489-   static  v8::Maybe<int > Parse (QueryWrap<NaptrTraits>* wrap,
490-                               const  std::unique_ptr<ResponseData>& response);
491- };
492- 
493- struct  SoaTraits  final  {
494-   static  constexpr  const  char * name = " resolveSoa"  ;
495-   static  int  Send (QueryWrap<SoaTraits>* wrap, const  char * name);
496-   static  v8::Maybe<int > Parse (QueryWrap<SoaTraits>* wrap,
497-                               const  std::unique_ptr<ResponseData>& response);
498- };
499- 
500- struct  ReverseTraits  final  {
501-   static  constexpr  const  char * name = " reverse"  ;
502-   static  int  Send (QueryWrap<ReverseTraits>* wrap, const  char * name);
503-   static  v8::Maybe<int > Parse (QueryWrap<ReverseTraits>* wrap,
504-                               const  std::unique_ptr<ResponseData>& response);
505- };
506- 
507- using  QueryAnyWrap = QueryWrap<AnyTraits>;
508- using  QueryAWrap = QueryWrap<ATraits>;
509- using  QueryAaaaWrap = QueryWrap<AaaaTraits>;
510- using  QueryCaaWrap = QueryWrap<CaaTraits>;
511- using  QueryCnameWrap = QueryWrap<CnameTraits>;
512- using  QueryMxWrap = QueryWrap<MxTraits>;
513- using  QueryNsWrap = QueryWrap<NsTraits>;
514- using  QueryTlsaWrap = QueryWrap<TlsaTraits>;
515- using  QueryTxtWrap = QueryWrap<TxtTraits>;
516- using  QuerySrvWrap = QueryWrap<SrvTraits>;
517- using  QueryPtrWrap = QueryWrap<PtrTraits>;
518- using  QueryNaptrWrap = QueryWrap<NaptrTraits>;
519- using  QuerySoaWrap = QueryWrap<SoaTraits>;
520- using  GetHostByAddrWrap = QueryWrap<ReverseTraits>;
521- 
409+ #define  QUERY_TYPES (V )                                                         \
410+   V (Reverse, reverse, getHostByAddr)                                           \
411+   V (A, resolve4, queryA)                                                       \
412+   V (Any, resolveAny, queryAny)                                                 \
413+   V (Aaaa, resolve6, queryAaaa)                                                 \
414+   V (Caa, resolveCaa, queryCaa)                                                 \
415+   V (Cname, resolveCname, queryCname)                                           \
416+   V (Mx, resolveMx, queryMx)                                                    \
417+   V (Naptr, resolveNaptr, queryNaptr)                                           \
418+   V (Ns, resolveNs, queryNs)                                                    \
419+   V (Ptr, resolvePtr, queryPtr)                                                 \
420+   V (Srv, resolveSrv, querySrv)                                                 \
421+   V (Soa, resolveSoa, querySoa)                                                 \
422+   V (Tlsa, resolveTlsa, queryTlsa)                                              \
423+   V (Txt, resolveTxt, queryTxt)
424+ 
425+ //  All query type handlers share the same basic structure, so we can simplify
426+ //  the code a bit by using a macro to define that structure.
427+ #define  TYPE_TRAITS (Name, label )                                               \
428+   struct  Name ##Traits final  {                                                  \
429+     static  constexpr  const  char * name = #label;                                \
430+     static  int  Send (QueryWrap<Name##Traits>* wrap, const  char * name);          \
431+     static  v8::Maybe<int > Parse (                                               \
432+         QueryWrap<Name##Traits>* wrap,                                         \
433+         const  std::unique_ptr<ResponseData>& response);                        \
434+   };                                                                           \
435+   using  Query##Name##Wrap = QueryWrap<Name##Traits>;
436+ 
437+ #define  V (NAME, LABEL, _ ) TYPE_TRAITS(NAME, LABEL)
438+ QUERY_TYPES (V)
439+ #undef  V
440+ #undef  TYPE_TRAITS
522441}  //  namespace cares_wrap
523442}  //  namespace node
524443
0 commit comments