| /************************************************************** |
| * |
| * 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_IDLCTYPES_HXX_ |
| #define _IDLC_IDLCTYPES_HXX_ |
| |
| #include <stdio.h> |
| |
| #include <hash_map> |
| #include <list> |
| #include <vector> |
| #include <string> |
| #include <set> |
| |
| #include <sal/types.h> |
| #include <rtl/ustring.hxx> |
| |
| struct EqualString |
| { |
| sal_Bool operator()(const ::rtl::OString& str1, const ::rtl::OString& str2) const |
| { |
| return (str1 == str2); |
| } |
| }; |
| |
| struct HashString |
| { |
| sal_Int32 operator()(const ::rtl::OString& str) const |
| { |
| return str.hashCode(); |
| } |
| }; |
| |
| struct LessString |
| { |
| sal_Bool operator()(const ::rtl::OString& str1, const ::rtl::OString& str2) const |
| { |
| return (str1 < str2); |
| } |
| }; |
| |
| typedef ::std::list< ::rtl::OString > StringList; |
| typedef ::std::vector< ::rtl::OString > StringVector; |
| typedef ::std::set< ::rtl::OString, LessString > StringSet; |
| |
| class AstExpression; |
| typedef ::std::list< AstExpression* > ExprList; |
| |
| class AstUnionLabel; |
| typedef ::std::list< AstUnionLabel* > LabelList; |
| |
| class AstDeclaration; |
| |
| typedef ::std::hash_map< ::rtl::OString, AstDeclaration*, HashString, EqualString > DeclMap; |
| typedef ::std::list< AstDeclaration* > DeclList; |
| |
| class AstScope; |
| AstDeclaration* SAL_CALL scopeAsDecl(AstScope* pScope); |
| AstScope* SAL_CALL declAsScope(AstDeclaration* pDecl); |
| |
| #ifdef _MSC_VER |
| #pragma warning( disable : 4541 ) |
| #endif |
| |
| // flags used for attributes, properties and services |
| #define AF_INVALID 0x0000 |
| #define AF_READONLY 0x0001 |
| #define AF_OPTIONAL 0x0002 |
| #define AF_MAYBEVOID 0x0004 |
| #define AF_BOUND 0x0008 |
| #define AF_CONSTRAINED 0x0010 |
| #define AF_TRANSIENT 0x0020 |
| #define AF_MAYBEAMBIGUOUS 0x0040 |
| #define AF_MAYBEDEFAULT 0x0080 |
| #define AF_REMOVEABLE 0x0100 |
| #define AF_ATTRIBUTE 0x0200 |
| #define AF_PROPERTY 0x0400 |
| |
| enum ParseState |
| { |
| PS_NoState, |
| PS_TypeDeclSeen, // Seen complete typedef declaration |
| PS_ConstantDeclSeen, // Seen complete const declaration |
| PS_ExceptionDeclSeen, // Seen complete exception declaration |
| PS_InterfaceDeclSeen, // Seen complete interface declaration |
| PS_ServiceDeclSeen, // Seen complete service declaration |
| PS_SingletonDeclSeen, // Seen complete singleton declaration |
| PS_ModuleDeclSeen, // Seen complete module declaration |
| PS_AttributeDeclSeen, // Seen complete attribute declaration |
| PS_PropertyDeclSeen, // Seen complete property declaration |
| PS_OperationDeclSeen, // Seen complete operation declaration |
| PS_InterfaceInheritanceDeclSeen, // Seen complete interface inheritance decl |
| PS_ConstantsDeclSeen, // Seen complete constants declaration |
| |
| PS_ServiceSeen, // Seen a SERVICE keyword |
| PS_ServiceIDSeen, // Seen the service ID |
| PS_ServiceSqSeen, // '{' seen for service |
| PS_ServiceQsSeen, // '}' seen for service |
| PS_ServiceBodySeen, // Seen complete service body |
| PS_ServiceMemberSeen, // Seen a service member |
| PS_ServiceIFHeadSeen, // Seen an interface member header |
| PS_ServiceSHeadSeen, // Seen an service member header |
| |
| PS_SingletonSeen, // Seen a SINGLETON keyword |
| PS_SingletonIDSeen, // Seen the singleton ID |
| PS_SingletonSqSeen, // '{' seen for singleton |
| PS_SingletonQsSeen, // '}' seen for singleton |
| PS_SingletonBodySeen, // Seen complete singleton body |
| PS_SingletonMemberSeen, // Seen a singleton member |
| |
| PS_ModuleSeen, // Seen a MODULE keyword |
| PS_ModuleIDSeen, // Seen the module ID |
| PS_ModuleSqSeen, // '{' seen for module |
| PS_ModuleQsSeen, // '}' seen for module |
| PS_ModuleBodySeen, // Seen complete module body |
| |
| PS_ConstantsSeen, // Seen a CONSTANTS keyword |
| PS_ConstantsIDSeen, // Seen the constants ID |
| PS_ConstantsSqSeen, // '{' seen for constants |
| PS_ConstantsQsSeen, // '}' seen for constants |
| PS_ConstantsBodySeen, // Seen complete constants body |
| |
| PS_InterfaceSeen, // Seen an INTERFACE keyword |
| PS_InterfaceIDSeen, // Seen the interface ID |
| PS_InterfaceHeadSeen, // Seen the interface head |
| PS_InheritSpecSeen, // Seen a complete inheritance spec |
| PS_ForwardDeclSeen, // Forward interface decl seen |
| PS_InterfaceSqSeen, // '{' seen for interface |
| PS_InterfaceQsSeen, // '}' seen for interface |
| PS_InterfaceBodySeen, // Seen an interface body |
| PS_InheritColonSeen, // Seen ':' in inheritance list |
| |
| PS_SNListCommaSeen, // Seen ',' in list of scoped names |
| PS_ScopedNameSeen, // Seen a complete scoped name |
| PS_SN_IDSeen, // Seen an identifier as part of a scoped name |
| PS_ScopeDelimSeen, // Seen a scope delim as party of a scoped name |
| |
| PS_ConstSeen, // Seen a CONST keyword |
| PS_ConstTypeSeen, // Parsed the type of a constant |
| PS_ConstIDSeen, // Seen the constant ID |
| PS_ConstAssignSeen, // Seen the '=' |
| PS_ConstExprSeen, // Seen the constant value expression |
| |
| PS_TypedefSeen, // Seen a TYPEDEF keyword |
| PS_TypeSpecSeen, // Seen a complete type specification |
| PS_DeclaratorsSeen, // Seen a complete list of declarators |
| |
| PS_StructSeen, // Seen a STRUCT keyword |
| PS_StructHeaderSeen, // Seen struct header |
| PS_StructIDSeen, // Seen the struct ID |
| PS_StructSqSeen, // '{' seen for struct |
| PS_StructQsSeen, // '}' seen for struct |
| PS_StructBodySeen, // Seen complete body of struct decl |
| |
| PS_MemberTypeSeen, // Seen type of struct or except member |
| PS_MemberDeclsSeen, // Seen decls of struct or except members |
| PS_MemberDeclsCompleted,// Completed one struct or except member to ';' |
| |
| PS_UnionSeen, // Seen a UNION keyword |
| PS_UnionIDSeen, // Seen the union ID |
| PS_SwitchSeen, // Seen the SWITCH keyword |
| PS_SwitchOpenParSeen, // Seen the switch open par. |
| PS_SwitchTypeSeen, // Seen the switch type spec |
| PS_SwitchCloseParSeen, // Seen the switch close par. |
| PS_UnionSqSeen, // '{' seen for union |
| PS_UnionQsSeen, // '}' seen for union |
| PS_DefaultSeen, // Seen DEFAULT keyword |
| PS_UnionLabelSeen, // Seen label of union element |
| PS_LabelColonSeen, // Seen ':' of union branch label |
| PS_LabelExprSeen, // Seen expression of union branch label |
| PS_UnionElemSeen, // Seen a union element |
| PS_UnionElemCompleted, // Completed one union member up to ';' |
| PS_CaseSeen, // Seen a CASE keyword |
| PS_UnionElemTypeSeen, // Seen type spec for union element |
| PS_UnionElemDeclSeen, // Seen declarator for union element |
| PS_UnionBodySeen, // Seen completed union body |
| |
| PS_EnumSeen, // Seen an ENUM keyword |
| PS_EnumIDSeen, // Seen the enum ID |
| PS_EnumSqSeen, // Seen '{' for enum |
| PS_EnumQsSeen, // Seen '}' for enum |
| PS_EnumBodySeen, // Seen complete enum body |
| PS_EnumCommaSeen, // Seen ',' in list of enumerators |
| |
| PS_SequenceSeen, // Seen a SEQUENCE keyword |
| PS_SequenceSqSeen, // Seen '<' for sequence |
| PS_SequenceQsSeen, // Seen '>' for sequence |
| PS_SequenceTypeSeen, // Seen type decl for sequence |
| |
| PS_ArrayIDSeen, // Seen array ID |
| PS_ArrayTypeSeen, // Seen array type |
| PS_ArrayCompleted, // Seen completed array declaration |
| PS_DimSqSeen, // Seen '[' for array dimension |
| PS_DimQsSeen, // Seen ']' for array dimension |
| PS_DimExprSeen, // Seen size expression for array dimension |
| |
| |
| PS_FlagHeaderSeen, // Seen the attribute|property|interface member head |
| PS_AttrSeen, // Seen ATTRIBUTE keyword |
| PS_AttrTypeSeen, // Seen type decl for attribute |
| PS_AttrCompleted, // Seen complete attribute declaration |
| PS_ReadOnlySeen, // Seen READONLY keyword |
| PS_OptionalSeen, // Seen OPTIONAL keyword |
| PS_MayBeVoidSeen, // Seen MAYBEVOID yword |
| PS_BoundSeen, // Seen BOUND keyword |
| PS_ConstrainedSeen, // Seen CONSTRAINED keyword |
| PS_TransientSeen, // Seen TRANSIENT keyword |
| PS_MayBeAmbigiousSeen, // Seen MAYBEAMBIGIOUS keyword |
| PS_MayBeDefaultSeen, // Seen MAYBEDEFAULT keyword |
| PS_RemoveableSeen, // Seen REMOVEABLE keyword |
| |
| PS_PropertySeen, // Seen PROPERTY keyword |
| PS_PropertyTypeSeen, // Seen type decl for property |
| PS_PropertyCompleted, // Seen complete property declaration |
| |
| PS_ExceptSeen, // Seen EXCEPTION keyword |
| PS_ExceptHeaderSeen, // Seen exception header keyword |
| PS_ExceptIDSeen, // Seen exception identifier |
| PS_ExceptSqSeen, // Seen '{' for exception |
| PS_ExceptQsSeen, // Seen '}' for exception |
| PS_ExceptBodySeen, // Seen complete exception body |
| |
| PS_OpHeadSeen, // Seen the operation head |
| PS_OpTypeSeen, // Seen operation return type |
| PS_OpIDSeen, // Seen operation ID |
| PS_OpParsCompleted, // Completed operation param list |
| PS_OpCompleted, // Completed operation statement |
| PS_OpSqSeen, // Seen '(' for operation |
| PS_OpQsSeen, // Seen ')' for operation |
| PS_OpParCommaSeen, // Seen ',' in list of op params |
| PS_OpParDirSeen, // Seen parameter direction |
| PS_OpParTypeSeen, // Seen parameter type |
| PS_OpParDeclSeen, // Seen parameter declaration |
| PS_OpOnewaySeen, // Seen ONEWAY keyword |
| |
| PS_RaiseSeen, // Seen RAISES keyword |
| PS_RaiseSqSeen, // Seen '(' for RAISES |
| PS_RaiseQsSeen, // Seen ')' for RAISES |
| |
| PS_DeclsCommaSeen, // Seen ',' in declarators list |
| PS_DeclsDeclSeen // Seen complete decl in decls list |
| }; |
| |
| #endif // _IDLC_IDLCTYPES_HXX_ |
| |