| /************************************************************** |
| * |
| * 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. |
| * |
| *************************************************************/ |
| |
| |
| #ifndef _IDLC_ASTATTRIBUTE_HXX_ |
| #define _IDLC_ASTATTRIBUTE_HXX_ |
| |
| #include <idlc/astdeclaration.hxx> |
| #include "idlc/astscope.hxx" |
| |
| #include "registry/types.h" |
| #include "rtl/ustring.hxx" |
| |
| namespace typereg { class Writer; } |
| |
| class AstAttribute: public AstDeclaration, public AstScope { |
| public: |
| AstAttribute( |
| sal_uInt32 flags, AstType const * type, rtl::OString const & name, |
| AstScope * scope): |
| AstDeclaration(NT_attribute, name, scope), |
| AstScope(NT_attribute), m_flags(flags), m_pType(type) |
| {} |
| |
| AstAttribute(NodeType nodeType, sal_uInt32 flags, AstType const * pType, const ::rtl::OString& name, AstScope* pScope) |
| : AstDeclaration(nodeType, name, pScope), AstScope(nodeType) |
| , m_flags(flags) |
| , m_pType(pType) |
| {} |
| virtual ~AstAttribute() {} |
| |
| void setExceptions( |
| rtl::OUString const * getDoc, DeclList const * getExc, |
| rtl::OUString const * setDoc, DeclList const * setExc) |
| { |
| if (getDoc != 0) { |
| m_getDocumentation = *getDoc; |
| } |
| if (getExc != 0) { |
| m_getExceptions = *getExc; |
| } |
| if (setDoc != 0) { |
| m_setDocumentation = *setDoc; |
| } |
| if (setExc != 0) { |
| m_setExceptions = *setExc; |
| } |
| } |
| |
| DeclList::size_type getGetExceptionCount() const |
| { return m_getExceptions.size(); } |
| |
| DeclList::size_type getSetExceptionCount() const |
| { return m_setExceptions.size(); } |
| |
| AstType const * getType() const |
| { return m_pType; } |
| sal_Bool isReadonly() const |
| { return ((m_flags & AF_READONLY) == AF_READONLY); } |
| sal_Bool isOptional() const |
| { return ((m_flags & AF_OPTIONAL) == AF_OPTIONAL); } |
| sal_Bool isAttribute() const |
| { return ((m_flags & AF_ATTRIBUTE) == AF_ATTRIBUTE); } |
| sal_Bool isProperty() const |
| { return ((m_flags & AF_PROPERTY) == AF_PROPERTY); } |
| sal_Bool isBound() const |
| { return ((m_flags & AF_BOUND) == AF_BOUND); } |
| sal_Bool isMayBeVoid() const |
| { return ((m_flags & AF_MAYBEVOID) == AF_MAYBEVOID); } |
| sal_Bool isConstrained() const |
| { return ((m_flags & AF_CONSTRAINED) == AF_CONSTRAINED); } |
| sal_Bool isTransient() const |
| { return ((m_flags & AF_TRANSIENT) == AF_TRANSIENT); } |
| sal_Bool isMayBeAmbiguous() const |
| { return ((m_flags & AF_MAYBEAMBIGUOUS) == AF_MAYBEAMBIGUOUS); } |
| sal_Bool isMayBeDefault() const |
| { return ((m_flags & AF_MAYBEDEFAULT) == AF_MAYBEDEFAULT); } |
| sal_Bool isRemoveable() const |
| { return ((m_flags & AF_REMOVEABLE) == AF_REMOVEABLE); } |
| |
| sal_Bool dumpBlob( |
| typereg::Writer & rBlob, sal_uInt16 index, sal_uInt16 * methodIndex); |
| |
| private: |
| void dumpExceptions( |
| typereg::Writer & writer, rtl::OUString const & documentation, |
| DeclList const & exceptions, RTMethodMode flags, |
| sal_uInt16 * methodIndex); |
| |
| const sal_uInt32 m_flags; |
| AstType const * m_pType; |
| rtl::OUString m_getDocumentation; |
| DeclList m_getExceptions; |
| rtl::OUString m_setDocumentation; |
| DeclList m_setExceptions; |
| }; |
| |
| #endif // _IDLC_ASTATTRIBUTE_HXX_ |
| |