Change typealias delimiter from : to typename
[ctf.git] / common-trace-format-proposal.txt
index ab77a268fd1542145ba6d260b606d58880448afb..ef6739ff114375135fb65eb57bd2eccbd36b97b1 100644 (file)
@@ -186,7 +186,7 @@ typealias integer {
   size = 32;
   signed = false;
   align = 32;
-} : uint32_t;
+} typename uint32_t;
 
 Definition of a named 5-bit signed bitfield:
 
@@ -194,7 +194,7 @@ typealias integer {
   size = 5;
   signed = true;
   align = 1;
-} : int5_t;
+} typename int5_t;
 
 4.1.6 GNU/C bitfields
 
@@ -253,7 +253,7 @@ typealias floating_point {
   exp_dig = 8;         /* sizeof(float) * CHAR_BIT - FLT_MANT_DIG */
   mant_dig = 24;       /* FLT_MANT_DIG */
   byte_order = native;
-} : float;
+} typename float;
 
 TODO: define NaN, +inf, -inf behavior.
 
@@ -271,10 +271,7 @@ this format by having the same start_value and end_value for each element, which
 is in fact a range of size 1. This single-value range is supported without
 repeating the start and end values with the value = string declaration.
 
-If a numeric value is encountered between < >, it represents the integer type
-size used to hold the enumeration, in bits.
-
-enum name <integer_type OR size> {
+enum name <integer_type> {
   somestring          = start_value1 ... end_value1,
   "other string"      = start_value2 ... end_value2,
   yet_another_string,  /* will be assigned to end_value2 + 1 */
@@ -285,7 +282,7 @@ enum name <integer_type OR size> {
 If the values are omitted, the enumeration starts at 0 and increment of 1 for
 each entry:
 
-enum name <32> {
+enum name <unsigned int> {
   ZERO,
   ONE,
   TWO,
@@ -371,7 +368,7 @@ variant name {
 };
 
 struct {
-  enum <integer_type or size> { sel1, sel2, sel3, ... } tag_field;
+  enum <integer_type> { sel1, sel2, sel3, ... } tag_field;
   ...
   variant name <tag_field> v;
 }
@@ -380,7 +377,7 @@ An unnamed variant definition within a structure is expressed by the following
 metadata:
 
 struct {
-  enum <integer_type or size> { sel1, sel2, sel3, ... } tag_field;
+  enum <integer_type> { sel1, sel2, sel3, ... } tag_field;
   ...
   variant <tag_field> {
     field_type sel1;
@@ -501,7 +498,7 @@ Metadata representation of a named string type:
 
 typealias string {
   encoding = UTF8 OR ASCII;
-} : name;
+} typename name;
 
 A nameless string type can be declared as a field type:
 
@@ -899,7 +896,7 @@ event {
  * Type declarations behave similarly to the C standard.
  */
 
-typedef aliased_type_prefix aliased_type new_type aliased_type_postfix;
+typedef aliased_type_specifiers new_type_declarators;
 
 /* e.g.: typedef struct example new_type_name[10]; */
 
@@ -907,15 +904,17 @@ typedef aliased_type_prefix aliased_type new_type aliased_type_postfix;
  * typealias
  *
  * The "typealias" declaration can be used to give a name (including
- * prefix/postfix) to a type. It should also be used to map basic C types
- * (float, int, unsigned long, ...) to a CTF type. Typealias is a superset of
- * "typedef": it also allows assignment of a simple variable identifier to a
- * type.
+ * pointer declarator specifier) to a type. It should also be used to
+ * map basic C types (float, int, unsigned long, ...) to a CTF type.
+ * Typealias is a superset of "typedef": it also allows assignment of a
+ * simple variable identifier to a type. The keyword "typename" is
+ * reserved to separate the aliased type from the newly declared alias
+ * name.
  */
 
 typealias type_class {
   ...
-} : new_type_prefix new_type new_type_postfix;
+} typename type_specifiers type_declarator;
 
 /*
  * e.g.: 
@@ -923,13 +922,13 @@ typealias type_class {
  *   size = 32;
  *   align = 32;
  *   signed = false;
- * } : struct page *;
+ * } typename struct page *;
  *
  * typealias integer {
  *  size = 32;
  *  align = 32;
  *  signed = true;
- * } : int;
+ * } typename int;
  */
 
 struct name {
@@ -940,7 +939,7 @@ variant name {
   ...
 };
 
-enum name <integer_type or size> {
+enum name <integer_type> {
   ...
 };
 
@@ -957,7 +956,7 @@ variant {
   ...
 }
 
-enum <integer_type or size> {
+enum <integer_type> {
   ...
 }
 
@@ -1075,6 +1074,7 @@ struct
 trace
 typealias
 typedef
+typename
 unsigned
 variant
 void
@@ -1309,8 +1309,8 @@ struct-or-variant-declaration-list:
 struct-or-variant-declaration:
        specifier-qualifier-list struct-or-variant-declarator-list ;
        declaration-specifiers storage-class-specifier declaration-specifiers declarator-list ;
-       typealias declaration-specifiers abstract-declarator-list : declaration-specifiers abstract-declarator-list ;
-       typealias declaration-specifiers abstract-declarator-list : declarator-list ;
+       typealias declaration-specifiers abstract-declarator-list typename declaration-specifiers abstract-declarator-list ;
+       typealias declaration-specifiers abstract-declarator-list typename declarator-list ;
 
 specifier-qualifier-list:
        type-specifier specifier-qualifier-list-opt
@@ -1338,9 +1338,6 @@ enum-specifier:
        enum identifier-opt < declaration-specifiers > { enumerator-list }
        enum identifier-opt < declaration-specifiers > { enumerator-list , }
        enum identifier < declaration-specifiers >
-       enum identifier-opt < integer-constant > { enumerator-list }
-       enum identifier-opt < integer-constant > { enumerator-list , }
-       enum identifier < integer-constant >
 
 enumerator-list:
        enumerator
@@ -1390,8 +1387,8 @@ ctf-specifier:
        event { ctf-assignment-expression-list-opt }
        stream { ctf-assignment-expression-list-opt }
        trace { ctf-assignment-expression-list-opt }
-       typealias declaration-specifiers abstract-declarator-list : declaration-specifiers abstract-declarator-list ;
-       typealias declaration-specifiers abstract-declarator-list : declarator-list ;
+       typealias declaration-specifiers abstract-declarator-list typename declaration-specifiers abstract-declarator-list ;
+       typealias declaration-specifiers abstract-declarator-list typename declarator-list ;
 
 ctf-type-specifier:
        floating_point { ctf-assignment-expression-list-opt }
@@ -1406,5 +1403,5 @@ ctf-assignment-expression:
        unary-expression assignment-operator unary-expression
        unary-expression type-assignment-operator type-specifier
        declaration-specifiers storage-class-specifier declaration-specifiers declarator-list
-       typealias declaration-specifiers abstract-declarator-list : declaration-specifiers abstract-declarator-list
-       typealias declaration-specifiers abstract-declarator-list : declarator-list
+       typealias declaration-specifiers abstract-declarator-list typename declaration-specifiers abstract-declarator-list
+       typealias declaration-specifiers abstract-declarator-list typename declarator-list
This page took 0.026815 seconds and 4 git commands to generate.