C-like mode
xxxxxxxxxx
1
/* C demo code */
2
3
4
5
6
7
8
9
10
11
typedef struct {
12
void* arg_socket;
13
zmq_msg_t* arg_msg;
14
char* arg_string;
15
unsigned long arg_len;
16
int arg_int, arg_command;
17
18
int signal_fd;
19
int pad;
20
void* context;
21
sem_t sem;
22
} acl_zmq_context;
23
24
25
26
void* zmq_thread(void* context_pointer) {
27
acl_zmq_context* context = (acl_zmq_context*)context_pointer;
28
char ok = 'K', err = 'X';
29
int res;
30
31
while (1) {
32
while ((res = sem_wait(&context->sem)) == EINTR);
33
if (res) {write(context->signal_fd, &err, 1); goto cleanup;}
34
switch(p(command)) {
35
case 0: goto cleanup;
36
case 1: p(socket) = zmq_socket(context->context, p(int)); break;
37
case 2: p(int) = zmq_close(p(socket)); break;
38
case 3: p(int) = zmq_bind(p(socket), p(string)); break;
39
case 4: p(int) = zmq_connect(p(socket), p(string)); break;
40
case 5: p(int) = zmq_getsockopt(p(socket), p(int), (void*)p(string), &p(len)); break;
41
case 6: p(int) = zmq_setsockopt(p(socket), p(int), (void*)p(string), p(len)); break;
42
case 7: p(int) = zmq_send(p(socket), p(msg), p(int)); break;
43
case 8: p(int) = zmq_recv(p(socket), p(msg), p(int)); break;
44
case 9: p(int) = zmq_poll(p(socket), p(int), p(len)); break;
45
}
46
p(command) = errno;
47
write(context->signal_fd, &ok, 1);
48
}
49
cleanup:
50
close(context->signal_fd);
51
free(context_pointer);
52
return 0;
53
}
54
55
void* zmq_thread_init(void* zmq_context, int signal_fd) {
56
acl_zmq_context* context = malloc(sizeof(acl_zmq_context));
57
pthread_t thread;
58
59
context->context = zmq_context;
60
context->signal_fd = signal_fd;
61
sem_init(&context->sem, 1, 0);
62
pthread_create(&thread, 0, &zmq_thread, context);
63
pthread_detach(thread);
64
return context;
65
}
66
C++ example
xxxxxxxxxx
1
2
3
4
namespace {
5
enum Enum {
6
VAL1, VAL2, VAL3
7
};
8
9
char32_t unicode_string = U"\U0010FFFF";
10
string raw_string = R"delim(anything
11
you
12
want)delim";
13
14
int Helper(const MyType& param) {
15
return 0;
16
}
17
} // namespace
18
19
class ForwardDec;
20
21
template <class T, class V>
22
class Class : public BaseClass {
23
const MyType<T, V> member_;
24
25
public:
26
const MyType<T, V>& Method() const {
27
return member_;
28
}
29
30
void Method2(MyType<T, V>* value);
31
}
32
33
template <class T, class V>
34
void Class::Method2(MyType<T, V>* value) {
35
std::out << 1 >> method();
36
value->Method3(member_);
37
member_ = value;
38
}
39
Objective-C example
xxxxxxxxxx
1
/*
2
This is a longer comment
3
That spans two lines
4
*/
5
6
7
8
@import BFrameworkModule;
9
10
NS_ENUM(SomeValues) {
11
aValue = 1;
12
};
13
14
// A Class Extension with some properties
15
@interface MyClass ()<AProtocol>
16
@property(atomic, readwrite, assign) NSInteger anInt;
17
@property(nonatomic, strong, nullable) NSString *aString;
18
@end
19
20
@implementation YourAppDelegate
21
22
- (instancetype)initWithString:(NSString *)aStringVar {
23
if ((self = [super init])) {
24
aString = aStringVar;
25
}
26
return self;
27
}
28
29
- (BOOL)doSomething:(float)progress {
30
NSString *myString = @"This is a ObjC string %f ";
31
myString = [[NSString stringWithFormat:myString, progress] stringByAppendingString:self.aString];
32
return myString.length > 100 ? NO : YES;
33
}
34
35
@end
36
Java example
xxxxxxxxxx
1
import com.demo.util.MyType;
2
import com.demo.util.MyInterface;
3
4
public enum Enum {
5
VAL1, VAL2, VAL3
6
}
7
8
public class Class<T, V> implements MyInterface {
9
public static final MyType<T, V> member;
10
11
private class InnerClass {
12
public int zero() {
13
return 0;
14
}
15
}
16
17
18
public MyType method() {
19
return member;
20
}
21
22
public void method2(MyType<T, V> value) {
23
method();
24
value.method3();
25
member = value;
26
}
27
}
28
Scala example
xxxxxxxxxx
1
object FilterTest extends App {
2
def filter(xs: List[Int], threshold: Int) = {
3
def process(ys: List[Int]): List[Int] =
4
if (ys.isEmpty) ys
5
else if (ys.head < threshold) ys.head :: process(ys.tail)
6
else process(ys.tail)
7
process(xs)
8
}
9
println(filter(List(1, 9, 2, 8, 3, 7, 4), 5))
10
}
11
Kotlin mode
xxxxxxxxxx
1
package org.wasabi.http
2
3
import java.util.concurrent.Executors
4
import java.net.InetSocketAddress
5
import org.wasabi.app.AppConfiguration
6
import io.netty.bootstrap.ServerBootstrap
7
import io.netty.channel.nio.NioEventLoopGroup
8
import io.netty.channel.socket.nio.NioServerSocketChannel
9
import org.wasabi.app.AppServer
10
11
public class HttpServer(private val appServer: AppServer) {
12
13
val bootstrap: ServerBootstrap
14
val primaryGroup: NioEventLoopGroup
15
val workerGroup: NioEventLoopGroup
16
17
init {
18
// Define worker groups
19
primaryGroup = NioEventLoopGroup()
20
workerGroup = NioEventLoopGroup()
21
22
// Initialize bootstrap of server
23
bootstrap = ServerBootstrap()
24
25
bootstrap.group(primaryGroup, workerGroup)
26
bootstrap.channel(javaClass<NioServerSocketChannel>())
27
bootstrap.childHandler(NettyPipelineInitializer(appServer))
28
}
29
30
public fun start(wait: Boolean = true) {
31
val channel = bootstrap.bind(appServer.configuration.port)?.sync()?.channel()
32
33
if (wait) {
34
channel?.closeFuture()?.sync()
35
}
36
}
37
38
public fun stop() {
39
// Shutdown all event loops
40
primaryGroup.shutdownGracefully()
41
workerGroup.shutdownGracefully()
42
43
// Wait till all threads are terminated
44
primaryGroup.terminationFuture().sync()
45
workerGroup.terminationFuture().sync()
46
}
47
}
48
Ceylon mode
xxxxxxxxxx
1
"Produces the [[stream|Iterable]] that results from repeated
2
application of the given [[function|next]] to the given
3
[[first]] element of the stream, until the function first
4
returns [[finished]]. If the given function never returns
5
`finished`, the resulting stream is infinite.
6
7
For example:
8
9
loop(0)(2.plus).takeWhile(10.largerThan)
10
11
produces the stream `{ 0, 2, 4, 6, 8 }`."
12
tagged("Streams")
13
shared {Element+} loop<Element>(
14
"The first element of the resulting stream."
15
Element first)(
16
"The function that produces the next element of the
17
stream, given the current element. The function may
18
return [[finished]] to indicate the end of the
19
stream."
20
Element|Finished next(Element element))
21
=> let (start = first)
22
object satisfies {Element+} {
23
first => start;
24
empty => false;
25
function nextElement(Element element)
26
=> next(element);
27
iterator()
28
=> object satisfies Iterator<Element> {
29
variable Element|Finished current = start;
30
shared actual Element|Finished next() {
31
if (!is Finished result = current) {
32
current = nextElement(result);
33
return result;
34
}
35
else {
36
return finished;
37
}
38
}
39
};
40
};
41
Simple mode that tries to handle C-like languages as well as it
can. Takes two configuration parameters: keywords
, an
object whose property names are the keywords in the language,
and useCPP
, which determines whether C preprocessor
directives are recognized.
MIME types defined: text/x-csrc
(C), text/x-c++src
(C++), text/x-java
(Java), text/x-csharp
(C#),
text/x-objectivec
(Objective-C),
text/x-scala
(Scala), text/x-vertex
x-shader/x-fragment
(shader programs),
text/x-squirrel
(Squirrel) and
text/x-ceylon
(Ceylon)