content: /*
   * Copyright 1999-2101 Alibaba Group.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package com.alibaba.fastjson.serializer;
  
  
  /**
   * @author wenshao<szujobs@hotmail.com>
   */
  public enum SerializerFeature {
      QuoteFieldNames,
      /**
       * 
       */
      UseSingleQuotes,
      /**
       * 
       */
      WriteMapNullValue,
      /**
       * 
       */
      WriteEnumUsingToString,
      /**
       * 
       */
      UseISO8601DateFormat,
      /**
       * @since 1.1
       */
      WriteNullListAsEmpty,
      /**
       * @since 1.1
       */
      WriteNullStringAsEmpty,
      /**
       * @since 1.1
       */
      WriteNullNumberAsZero,
      /**
       * @since 1.1
       */
      WriteNullBooleanAsFalse,
      /**
       * @since 1.1
       */
      SkipTransientField,
      /**
       * @since 1.1
       */
      SortField,
      /**
       * @since 1.1.1
       */
      WriteTabAsSpecial,
      /**
       * @since 1.1.2
       */
      PrettyFormat,
      /**
       * @since 1.1.2
       */
      WriteClassName,
  
      /**
       * @since 1.1.6
       */
      DisableCircularReferenceDetect,
  
      /**
       * @since 1.1.9
       */
      WriteSlashAsSpecial,
      
      /**
       * @since 1.1.10
       */
      BrowserCompatible,
      
      /**
       * @since 1.1.14
       */
      WriteDateUseDateFormat,
      
      /**
       * @since 1.1.15
       */
      NotWriteRootClassName,
      
      /**
       * @since 1.1.19
       */
      DisableCheckSpecialChar,
      ;
  
      private SerializerFeature(){
          mask = (1 << ordinal());
      }
  
      private final int mask;
  
      public final int getMask() {
          return mask;
      }
  
      public static boolean isEnabled(int features, SerializerFeature feature) {
          return (features & feature.getMask()) != 0;
      }
  
      public static int config(int features, SerializerFeature feature, boolean state) {
          if (state) {
              features |= feature.getMask();
          } else {
              features &= ~feature.getMask();
          }
  
          return features;
      }
  }
  