Changeset 03ac869


Ignore:
Timestamp:
May 8, 2024, 4:41:33 PM (3 weeks ago)
Author:
JiadaL <j82liang@…>
Branches:
master
Children:
41c8312
Parents:
0843ba6
Message:

Add GCC visibility push(default); Fix trait satisfaction problem

Location:
libcfa/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/enum.cfa

    r0843ba6 r03ac869  
    22#include "fstream.hfa"
    33
    4 forall(E, T| TypedEnum(E, T)) {
     4#pragma GCC visibility push(default)
     5
     6forall(T, E| TypedEnum(T, E)) {
    57    // constructors
    68
    79    // comparison
    810    int ?==?(E l, E r) { return posE(l) == posE(r); }
    9     int ?!=?(E l, E r) { return !(l == r); }
     11    int ?!=?(E l, E r) { return posE(l) != posE(r); }
    1012    int ?!=?(E l, zero_t) { return !( posE(l) == 0 ); }
    1113    int ?<?(E l, E r) { return posE(l) < posE(r); }
     
    1315    int ?>?(E l, E r) { return posE(l) > posE(r); }
    1416    int ?>=?(E l, E r) {  return posE(l) >= posE(r); }
    15 
    16     // for testing; To be removed
    17     // #include <string.h>
    18     char * typeEnumString(E e) {
    19         // char* out = malloc(sizeof(char) * (5 + strlen(labelE(e) + 1)));
    20         // return strcat(strcat(out, "Enum "), labelE(e));
    21         return labelE(e);
    22     }
    2317}
  • libcfa/src/enum.hfa

    r0843ba6 r03ac869  
    77    };
    88
    9     forall(E| Bounded(E, T)) trait Serial {
     9    forall(E| Bounded(T, E)) trait Serial {
    1010        unsigned fromInstance(E e);
    1111        E fromInt(unsigned i);
     
    1515
    1616    // Opague Enum + TypedEnum
    17     forall(E | Serial(E, T)) trait CfaEnum {
     17    forall(E | Serial(T, E)) trait CfaEnum {
    1818        char * labelE(E e);
    1919        unsigned int posE(E e);
    2020    };
    2121
    22     forall(E | CfaEnum(E, T)) trait TypedEnum {
     22    forall(E| CfaEnum(T, E)) trait TypedEnum {
    2323        T valueE(E e);
    2424    };
    25 
    26     forall(E | TypedEnum(E, T)) {
    27         // comparison
    28         int ?==?(E l, E r);
    29         int ?!=?(E l, E r);
    30         int ?!=?(E l, zero_t);
    31         int ?<?(E l, E r);
    32         int ?<=?(E l, E r);
    33         int ?>?(E l, E r);
    34         int ?>=?(E l, E r);
    35 
    36         // for testing; To be removed
    37         // char * typeEnumString(E e);
    38         char * typeEnumString(E e);
    39     }
    4025}
    4126
     27
     28forall(T, E | TypedEnum(T, E)) {
     29    // comparison
     30    int ?==?(E l, E r);
     31    int ?!=?(E l, E r);
     32    int ?!=?(E l, zero_t);
     33    int ?<?(E l, E r);
     34    int ?<=?(E l, E r);
     35    int ?>?(E l, E r);
     36    int ?>=?(E l, E r);
     37}
Note: See TracChangeset for help on using the changeset viewer.