| /* |
| * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. |
| */ |
| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You 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. |
| */ |
| /* |
| * $Id: ElemDesc.java,v 1.2.4.1 2005/09/15 08:15:44 suresh_emailid Exp $ |
| */ |
| package com.sun.org.apache.xml.internal.utils; |
| |
| import java.util.HashMap; |
| import java.util.Map; |
| |
| |
| /** |
| * This class is in support of SerializerToHTML, and acts as a sort |
| * of element representative for HTML elements. |
| * @xsl.usage internal |
| */ |
| class ElemDesc |
| { |
| |
| /** Table of attributes for the element */ |
| Map<String, Integer> m_attrs = null; |
| |
| /** Element's flags, describing the role this element plays during |
| * formatting of the document. This is used as a bitvector; more than one flag |
| * may be set at a time, bitwise-ORed together. Mnemonic and bits |
| * have been assigned to the flag values. NOTE: Some bits are |
| * currently assigned multiple mnemonics; it is the caller's |
| * responsibility to disambiguate these if necessary. */ |
| int m_flags; |
| |
| /** Defines mnemonic and bit-value for the EMPTY flag */ |
| static final int EMPTY = (1 << 1); |
| |
| /** Defines mnemonic and bit-value for the FLOW flag */ |
| static final int FLOW = (1 << 2); |
| |
| /** Defines mnemonic and bit-value for the BLOCK flag */ |
| static final int BLOCK = (1 << 3); |
| |
| /** Defines mnemonic and bit-value for the BLOCKFORM flag */ |
| static final int BLOCKFORM = (1 << 4); |
| |
| /** Defines mnemonic and bit-value for the BLOCKFORMFIELDSET flag */ |
| static final int BLOCKFORMFIELDSET = (1 << 5); |
| |
| /** Defines mnemonic and bit-value for the CDATA flag */ |
| static final int CDATA = (1 << 6); |
| |
| /** Defines mnemonic and bit-value for the PCDATA flag */ |
| static final int PCDATA = (1 << 7); |
| |
| /** Defines mnemonic and bit-value for the RAW flag */ |
| static final int RAW = (1 << 8); |
| |
| /** Defines mnemonic and bit-value for the INLINE flag */ |
| static final int INLINE = (1 << 9); |
| |
| /** Defines mnemonic and bit-value for the INLINEA flag */ |
| static final int INLINEA = (1 << 10); |
| |
| /** Defines mnemonic and bit-value for the INLINELABEL flag */ |
| static final int INLINELABEL = (1 << 11); |
| |
| /** Defines mnemonic and bit-value for the FONTSTYLE flag */ |
| static final int FONTSTYLE = (1 << 12); |
| |
| /** Defines mnemonic and bit-value for the PHRASE flag */ |
| static final int PHRASE = (1 << 13); |
| |
| /** Defines mnemonic and bit-value for the FORMCTRL flag */ |
| static final int FORMCTRL = (1 << 14); |
| |
| /** Defines mnemonic and bit-value for the SPECIAL flag */ |
| static final int SPECIAL = (1 << 15); |
| |
| /** Defines mnemonic and bit-value for the ASPECIAL flag */ |
| static final int ASPECIAL = (1 << 16); |
| |
| /** Defines mnemonic and bit-value for the HEADMISC flag */ |
| static final int HEADMISC = (1 << 17); |
| |
| /** Defines mnemonic and bit-value for the HEAD flag */ |
| static final int HEAD = (1 << 18); |
| |
| /** Defines mnemonic and bit-value for the LIST flag */ |
| static final int LIST = (1 << 19); |
| |
| /** Defines mnemonic and bit-value for the PREFORMATTED flag */ |
| static final int PREFORMATTED = (1 << 20); |
| |
| /** Defines mnemonic and bit-value for the WHITESPACESENSITIVE flag */ |
| static final int WHITESPACESENSITIVE = (1 << 21); |
| |
| /** Defines mnemonic and bit-value for the ATTRURL flag */ |
| static final int ATTRURL = (1 << 1); |
| |
| /** Defines mnemonic and bit-value for the ATTREMPTY flag */ |
| static final int ATTREMPTY = (1 << 2); |
| |
| /** |
| * Construct an ElementDescription with an initial set of flags. |
| * |
| * @param flags Element flags |
| * @see m_flags |
| */ |
| ElemDesc(int flags) |
| { |
| m_flags = flags; |
| } |
| |
| /** |
| * "is (this element described by these flags)". |
| * |
| * This might more properly be called areFlagsSet(). It accepts an |
| * integer (being used as a bitvector) and checks whether all the |
| * corresponding bits are set in our internal flags. Note that this |
| * test is performed as a bitwise AND, not an equality test, so a |
| * 0 bit in the input means "don't test", not "must be set false". |
| * |
| * @param flags Vector of flags to compare against this element's flags |
| * |
| * @return true if the flags set in the parameter are also set in the |
| * element's stored flags. |
| * |
| * @see m_flags |
| * @see isAttrFlagSet |
| */ |
| boolean is(int flags) |
| { |
| // int which = (m_flags & flags); |
| return (m_flags & flags) != 0; |
| } |
| |
| /** |
| * Set a new attribute for this element |
| * |
| * |
| * @param name Attribute name |
| * @param flags Attibute flags |
| */ |
| void setAttr(String name, int flags) |
| { |
| |
| if (null == m_attrs) |
| m_attrs = new HashMap<>(); |
| |
| m_attrs.put(name, flags); |
| } |
| |
| /** |
| * Find out if a flag is set in a given attribute of this element |
| * |
| * |
| * @param name Attribute name |
| * @param flags Flag to check |
| * |
| * @return True if the flag is set in the attribute. Returns false |
| * if the attribute is not found |
| * @see m_flags |
| */ |
| boolean isAttrFlagSet(String name, int flags) |
| { |
| |
| if (null != m_attrs) |
| { |
| Integer _flags = m_attrs.get(name); |
| |
| if (null != _flags) |
| { |
| return (_flags & flags) != 0; |
| } |
| } |
| |
| return false; |
| } |
| } |