| /******************************************************************************* |
| * Copyright (c) 2016 CEA LIST. |
| * |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Arnault Lapitre (CEA LIST) arnault.lapitre@cea.fr |
| * - Initial API and implementation |
| ******************************************************************************/ |
| #ifndef CONTAINER_TYPEDEF_H_ |
| #define CONTAINER_TYPEDEF_H_ |
| |
| |
| #include <collection/Array.h> |
| |
| #include <collection/Collection.h> |
| |
| #include <collection/List.h> |
| |
| #include <collection/Multiset.h> |
| |
| #include <collection/Pair.h> |
| |
| #include <collection/Set.h> |
| |
| #include <collection/Vector.h> |
| |
| |
| |
| namespace sep |
| { |
| |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // MACRO FOR TYPEDEF DEFINITION |
| //////////////////////////////////////////////////////////////////////////////// |
| |
| |
| // LIST |
| #define DEFINE_LIST_REF_T(ClassName, TypedefName) \ |
| typedef List < ClassName > ListOf##TypedefName; |
| |
| #define DEFINE_LIST_REF(ClassName) \ |
| typedef List < ClassName > ListOf##ClassName; |
| |
| #define DEFINE_LIST_PTR_T(ClassName, TypedefName) \ |
| typedef List < ClassName * > ListOf##TypedefName; |
| |
| #define DEFINE_LIST_PTR(ClassName) \ |
| typedef List < ClassName * > ListOf##ClassName; |
| |
| |
| // VECTOR |
| #define DEFINE_VECTOR_REF_T(ClassName, TypedefName) \ |
| typedef Vector < ClassName > VectorOf##TypedefName; |
| |
| #define DEFINE_VECTOR_REF(ClassName) \ |
| typedef Vector < ClassName > VectorOf##ClassName; |
| |
| #define DEFINE_VECTOR_PTR_T(ClassName, TypedefName) \ |
| typedef Vector < ClassName * > VectorOf##TypedefName; |
| |
| #define DEFINE_VECTOR_PTR(ClassName) \ |
| typedef Vector < ClassName * > VectorOf##ClassName; |
| |
| #define DEFINE_APVECTOR_PTR(ClassName) \ |
| typedef APVector < ClassName * > APVectorOf##ClassName; |
| |
| |
| |
| // PAIR |
| #define DEFINE_PAIR_REF(ClassNameA, ClassNameB, TypedefName) \ |
| typedef Pair < ClassNameA , ClassNameB > TypedefName; |
| |
| #define DEFINE_PAIR_PTR(ClassNameA, ClassNameB, TypedefName) \ |
| typedef Pair < ClassNameA * , ClassNameB * > TypedefName; |
| |
| |
| |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // CLASS |
| //////////////////////////////////////////////////////////////////////////////// |
| |
| |
| class BFCode; |
| class RuntimeID; |
| |
| class AvmProgram; |
| class AvmTransition; |
| |
| class ExecutableForm; |
| |
| class Form; |
| |
| class InstanceOfBuffer; |
| class InstanceOfData; |
| class InstanceOfMachine; |
| class InstanceOfPort; |
| |
| class Machine; |
| |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // TYPEDEF FOR COLLECTION < BFCode > |
| //////////////////////////////////////////////////////////////////////////////// |
| |
| typedef Collection < BFCode > BFCodeCollection; |
| typedef List < BFCode > BFCodeList; |
| typedef Vector < BFCode > BFCodeVector; |
| |
| |
| /** |
| * TYPE LIST DECLARATIONS |
| */ |
| |
| DEFINE_LIST_REF_T(int , Int) |
| |
| DEFINE_LIST_REF_T( std::string , String ) |
| |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // List |
| //////////////////////////////////////////////////////////////////////////////// |
| |
| DEFINE_LIST_PTR( Machine ) |
| |
| DEFINE_LIST_PTR( AvmProgram ) |
| |
| DEFINE_LIST_PTR( AvmTransition ) |
| |
| DEFINE_LIST_PTR( ExecutableForm ) |
| |
| DEFINE_LIST_PTR( InstanceOfBuffer ) |
| DEFINE_LIST_PTR( InstanceOfData ) |
| DEFINE_LIST_PTR( InstanceOfMachine ) |
| DEFINE_LIST_PTR( InstanceOfPort ) |
| |
| |
| /** |
| * TYPE VECTOR DECLARATIONS |
| */ |
| DEFINE_VECTOR_REF_T(int , Int) |
| |
| DEFINE_VECTOR_REF_T( std::string , String ) |
| |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // Vector |
| //////////////////////////////////////////////////////////////////////////////// |
| |
| DEFINE_VECTOR_PTR( AvmProgram ) |
| |
| DEFINE_VECTOR_PTR( AvmTransition ) |
| |
| DEFINE_VECTOR_PTR( ExecutableForm ) |
| |
| DEFINE_VECTOR_PTR( InstanceOfData ) |
| |
| DEFINE_VECTOR_PTR( InstanceOfMachine ) |
| |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // Set & Multiset |
| //////////////////////////////////////////////////////////////////////////////// |
| |
| /** |
| * TYPE MIXED DECLARATIONS |
| */ |
| |
| DEFINE_PAIR_REF( RuntimeID , ListOfInstanceOfData , PairMachineData ) |
| |
| DEFINE_LIST_REF( PairMachineData ) |
| |
| |
| } |
| |
| #endif /*CONTAINER_TYPEDEF_H_*/ |
| |