Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1st attempt to move from xtend to java #225

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions renderc/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -82,13 +82,13 @@ add_custom_command(
./io.opentelemetry.render/src/io/opentelemetry/render/GenerateRender.mwe2
./io.opentelemetry.render/src/io/opentelemetry/render/validation/RenderValidator.xtend
./io.opentelemetry.render/src/io/opentelemetry/render/formatting/RenderFormatter.xtend
./io.opentelemetry.render/src/io/opentelemetry/render/extensions/AppExtensions.xtend
./io.opentelemetry.render/src/io/opentelemetry/render/extensions/SpanExtensions.xtend
./io.opentelemetry.render/src/io/opentelemetry/render/extensions/FieldExtensions.xtend
./io.opentelemetry.render/src/io/opentelemetry/render/extensions/FieldTypeExtensions.xtend
./io.opentelemetry.render/src/io/opentelemetry/render/extensions/MessageExtensions.xtend
./io.opentelemetry.render/src/io/opentelemetry/render/extensions/UtilityExtensions.xtend
./io.opentelemetry.render/src/io/opentelemetry/render/extensions/XPackedMessageExtensions.xtend
./io.opentelemetry.render/src/io/opentelemetry/render/extensions/AppExtensions.java
./io.opentelemetry.render/src/io/opentelemetry/render/extensions/SpanExtensions.java
./io.opentelemetry.render/src/io/opentelemetry/render/extensions/FieldExtensions.java
./io.opentelemetry.render/src/io/opentelemetry/render/extensions/FieldTypeExtensions.java
./io.opentelemetry.render/src/io/opentelemetry/render/extensions/MessageExtensions.java
./io.opentelemetry.render/src/io/opentelemetry/render/extensions/UtilityExtensions.java
./io.opentelemetry.render/src/io/opentelemetry/render/extensions/XPackedMessageExtensions.java
./io.opentelemetry.render/src/io/opentelemetry/render/generator/RenderGenerator.xtend
./io.opentelemetry.render/src/io/opentelemetry/render/generator/MetricsGenerator.xtend
./io.opentelemetry.render/src/io/opentelemetry/render/generator/AppPacker.xtend
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

package io.opentelemetry.render.extensions;

import io.opentelemetry.render.render.App;
import io.opentelemetry.render.render.Document;
import io.opentelemetry.render.render.Message;
import io.opentelemetry.render.render.Metric;
import io.opentelemetry.render.render.PackageDefinition;
import io.opentelemetry.render.render.Span;
import java.util.List;
import java.util.Set;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.xbase.lib.Functions.Function1;
import org.eclipse.xtext.xbase.lib.IterableExtensions;

public class AppExtensions {
public static String hashName(final App app) {
String name = app.getName();
return (name + "_hash");
}

public static String hashFunctor(final App app) {
String name = app.getName();
return (name + "_hasher_t");
}

public static String hashSize(final App app) {
String upperCase = AppExtensions.hashName(app).toUpperCase();
return (upperCase + "_SIZE");
}

public static PackageDefinition pkg(final App app) {
EObject eContainer = app.eContainer();
return ((Document) eContainer).getPackage();
}

public static EList<Metric> metrics(final App app) {
EObject eContainer = app.eContainer();
return ((Document) eContainer).getMetrics();
}

public static Set<App> remoteApps(final App app) {
final Function1<Span, Boolean> function = (Span it) -> {
return it.isIsProxy();
};
final Function1<Span, App> function1 = (Span it) -> {
return it.getRemoteApp();
};
return IterableExtensions.<App>toSet(IterableExtensions.<Span, App>map(IterableExtensions.<Span>filter(app.getSpans(), function), function1));
}

public static List<Message> messages(final App app) {
final Function1<Span, EList<Message>> function = (Span it) -> {
return it.getMessages();
};
return IterableExtensions.<Message>toList(IterableExtensions.<Span, Message>flatMap(app.getSpans(), function));
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

package io.opentelemetry.render.extensions;

import io.opentelemetry.render.render.Field;
import io.opentelemetry.render.render.FieldType;

public class FieldExtensions {
public static int size(final Field field, final boolean packedStrings) {
int numOfElements = field.isIsArray() ? field.getArray_size() : 1;
int size = FieldTypeExtensions.size(field.getType(), packedStrings);
return (size * numOfElements);
}

public static CharSequence arraySuffix(final Field field) {
if (field.isIsArray()) {
return "[" + field.getArray_size() + "]";
}
return "";
}

public static CharSequence cType(final Field field) {
FieldType type = field.getType();
int expression = field.isIsArray() ? field.getArray_size() : -1;
return FieldTypeExtensions.cType(type, expression);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

package io.opentelemetry.render.extensions;

import com.google.common.base.Objects;
import io.opentelemetry.render.render.FieldType;
import io.opentelemetry.render.render.FieldTypeEnum;

public class FieldTypeExtensions {
public static String cType(final FieldType fieldType, final boolean packedStrings) {
String switchResult = null;
FieldTypeEnum enumType = fieldType.getEnum_type();
if (enumType != null) {
switch (enumType) {
case U8:
switchResult = "uint8_t";
break;
case U16:
switchResult = "uint16_t";
break;
case U32:
switchResult = "uint32_t";
break;
case U64:
switchResult = "uint64_t";
break;
case U128:
switchResult = "unsigned __int128";
break;
case S8:
switchResult = "int8_t";
break;
case S16:
switchResult = "int16_t";
break;
case S32:
switchResult = "int32_t";
break;
case S64:
switchResult = "int64_t";
break;
case S128:
switchResult = "__int128";
break;
case STRING:
switchResult = packedStrings ? "uint16_t" : "struct jb_blob";
break;
default:
break;
}
}
return switchResult;
}

public static CharSequence cType(final FieldType type, final int arraySize) {
String expression = null;
boolean shortString = type.isIsShortString();
if (shortString) {
expression = "short_string<" + type.getSize() + ">";
} else {
expression = type.getEnum_type().getLiteral();
}
CharSequence finalExpression = null;
if (arraySize >= 0) {
finalExpression = "std::array<" + expression + "," + arraySize + ">";
} else {
finalExpression = expression;
}
return finalExpression;
}

public static String wireCType(final FieldType fieldType) {
return FieldTypeExtensions.cType(fieldType, true);
}

public static String parsedCType(final FieldType fieldType) {
return FieldTypeExtensions.cType(fieldType, false);
}

public static int size(final FieldType fieldType, final boolean packedStrings) {
int expression;
boolean shortString = fieldType.isIsShortString();
if (shortString) {
expression = fieldType.getSize();
} else {
int switchResult = (int) 0;
FieldTypeEnum enumType = fieldType.getEnum_type();
if (enumType != null) {
switch (enumType) {
case U8:
switchResult = 1;
break;
case U16:
switchResult = 2;
break;
case U32:
switchResult = 4;
break;
case U64:
switchResult = 8;
break;
case U128:
switchResult = 16;
break;
case S8:
switchResult = 1;
break;
case S16:
switchResult = 2;
break;
case S32:
switchResult = 4;
break;
case S64:
switchResult = 8;
break;
case S128:
switchResult = 16;
break;
case STRING:
switchResult = packedStrings ? 2:16;
break;
default:
break;
}
}
expression = switchResult;
}
return expression;
}

public static int wireSize(final FieldType fieldType) {
return FieldTypeExtensions.size(fieldType, true);
}

public static int parsedSize(final FieldType fieldType) {
return FieldTypeExtensions.size(fieldType, false);
}

public static int alignment(final FieldType fieldType, final boolean packedStrings) {
int expression;
boolean shortString = fieldType.isIsShortString();
if (shortString) {
expression = 1;
} else {
int switchResult = (int) 0;
FieldTypeEnum enumType = fieldType.getEnum_type();
if (enumType != null) {
switch (enumType) {
case U8:
switchResult = 1;
break;
case U16:
switchResult = 2;
break;
case U32:
switchResult = 4;
break;
case U64:
switchResult = 8;
break;
case U128:
switchResult = 16;
break;
case S8:
switchResult = 1;
break;
case S16:
switchResult = 2;
break;
case S32:
switchResult = 4;
break;
case S64:
switchResult = 8;
break;
case S128:
switchResult = 16;
break;
case STRING:
switchResult = packedStrings ? 2: 8;
break;
}
}
expression = switchResult;
}
return expression;
}

public static int wireAlignment(final FieldType fieldType) {
return FieldTypeExtensions.alignment(fieldType, true);
}

public static int parsedAlignment(final FieldType fieldType) {
return FieldTypeExtensions.alignment(fieldType, false);
}

public static boolean isInt(final FieldType fieldType) {
return ((!fieldType.isIsShortString()) && (fieldType.getEnum_type() == FieldTypeEnum.STRING));
}
}
Loading
Loading