: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
<title>CodeMirror: C-like mode</title>
<link rel=stylesheet href="../../doc/docs.css">
<link rel="stylesheet" href="../../lib/codemirror.css">
<script src="../../lib/codemirror.js"></script>
<script src="../../addon/edit/matchbrackets.js"></script>
<link rel="stylesheet" href="../../addon/hint/show-hint.css">
<script src="../../addon/hint/show-hint.js"></script>
<script src="clike.js"></script>
<style>.CodeMirror {border: 2px inset #dee;}</style>
<a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a>
<li><a href="../../index.html">Home</a>
<li><a href="../../doc/manual.html">Manual</a>
<li><a href="https://github.com/codemirror/codemirror">Code</a>
<li><a href="../index.html">Language modes</a>
<li><a class=active href="#">C-like</a>
<div><textarea id="c-code">
int arg_int, arg_command;
#define p(X) (context->arg_##X)
void* zmq_thread(void* context_pointer) {
acl_zmq_context* context = (acl_zmq_context*)context_pointer;
char ok = 'K', err = 'X';
while ((res = sem_wait(&context->sem)) == EINTR);
if (res) {write(context->signal_fd, &err, 1); goto cleanup;}
case 1: p(socket) = zmq_socket(context->context, p(int)); break;
case 2: p(int) = zmq_close(p(socket)); break;
case 3: p(int) = zmq_bind(p(socket), p(string)); break;
case 4: p(int) = zmq_connect(p(socket), p(string)); break;
case 5: p(int) = zmq_getsockopt(p(socket), p(int), (void*)p(string), &p(len)); break;
case 6: p(int) = zmq_setsockopt(p(socket), p(int), (void*)p(string), p(len)); break;
case 7: p(int) = zmq_send(p(socket), p(msg), p(int)); break;
case 8: p(int) = zmq_recv(p(socket), p(msg), p(int)); break;
case 9: p(int) = zmq_poll(p(socket), p(int), p(len)); break;
write(context->signal_fd, &ok, 1);
close(context->signal_fd);
void* zmq_thread_init(void* zmq_context, int signal_fd) {
acl_zmq_context* context = malloc(sizeof(acl_zmq_context));
context->context = zmq_context;
context->signal_fd = signal_fd;
sem_init(&context->sem, 1, 0);
pthread_create(&thread, 0, &zmq_thread, context);
<div><textarea id="cpp-code">
#include "mystuff/util.h"
char32_t unicode_string = U"\U0010FFFF";
string raw_string = R"delim(anything
int Helper(const MyType& param) {
template <class T, class V>
class Class : public BaseClass {
const MyType<T, V> member_;
const MyType<T, V>& Method() const {
void Method2(MyType<T, V>* value);
template <class T, class V>
void Class::Method2(MyType<T, V>* value) {
std::out << 1 >> method();
<h2>Objective-C example</h2>
<div><textarea id="objectivec-code">
@implementation YourAppDelegate
// This is a one-line comment
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
char myString[] = "This is a C character array";
<div><textarea id="java-code">
import com.demo.util.MyType;
import com.demo.util.MyInterface;
public class Class<T, V> implements MyInterface {
public static final MyType<T, V> member;
private class InnerClass {
public void method2(MyType<T, V> value) {
<div><textarea id="scala-code">
object FilterTest extends App {
def filter(xs: List[Int], threshold: Int) = {
def process(ys: List[Int]): List[Int] =
else if (ys.head < threshold) ys.head :: process(ys.tail)
println(filter(List(1, 9, 2, 8, 3, 7, 4), 5))
<div><textarea id="kotlin-code">
import java.util.concurrent.Executors
import java.net.InetSocketAddress
import org.wasabi.app.AppConfiguration
import io.netty.bootstrap.ServerBootstrap
import io.netty.channel.nio.NioEventLoopGroup
import io.netty.channel.socket.nio.NioServerSocketChannel
import org.wasabi.app.AppServer
public class HttpServer(private val appServer: AppServer) {
val bootstrap: ServerBootstrap
val primaryGroup: NioEventLoopGroup
val workerGroup: NioEventLoopGroup
primaryGroup = NioEventLoopGroup()
workerGroup = NioEventLoopGroup()
// Initialize bootstrap of server
bootstrap = ServerBootstrap()
bootstrap.group(primaryGroup, workerGroup)
bootstrap.channel(javaClass<NioServerSocketChannel>())
bootstrap.childHandler(NettyPipelineInitializer(appServer))
public fun start(wait: Boolean = true) {
val channel = bootstrap.bind(appServer.configuration.port)?.sync()?.channel()
channel?.closeFuture()?.sync()
// Shutdown all event loops
primaryGroup.shutdownGracefully()
workerGroup.shutdownGracefully()
// Wait till all threads are terminated
primaryGroup.terminationFuture().sync()
workerGroup.terminationFuture().sync()
<div><textarea id="ceylon-code">
"Produces the [[stream|Iterable]] that results from repeated
application of the given [[function|next]] to the given
[[first]] element of the stream, until the function first
returns [[finished]]. If the given function never returns
`finished`, the resulting stream is infinite.
loop(0)(2.plus).takeWhile(10.largerThan)
produces the stream `{ 0, 2, 4, 6, 8 }`."
shared {Element+} loop<Element>(
"The first element of the resulting stream."
"The function that produces the next element of the
stream, given the current element. The function may
return [[finished]] to indicate the end of the
Element|Finished next(Element element))
=> let (start = first)
object satisfies {Element+} {
function nextElement(Element element)
=> object satisfies Iterator<Element> {
variable Element|Finished current = start;
shared actual Element|Finished next() {
if (!is Finished result = current) {
current = nextElement(result);
var cEditor = CodeMirror.fromTextArea(document.getElementById("c-code"), {
var cppEditor = CodeMirror.fromTextArea(document.getElementById("cpp-code"), {
var javaEditor = CodeMirror.fromTextArea(document.getElementById("java-code"), {
var objectivecEditor = CodeMirror.fromTextArea(document.getElementById("objectivec-code"), {
mode: "text/x-objectivec"
var scalaEditor = CodeMirror.fromTextArea(document.getElementById("scala-code"), {
var kotlinEditor = CodeMirror.fromTextArea(document.getElementById("kotlin-code"), {
var ceylonEditor = CodeMirror.fromTextArea(document.getElementById("ceylon-code"), {
var mac = CodeMirror.keyMap.default == CodeMirror.keyMap.macDefault;
CodeMirror.keyMap.default[(mac ? "Cmd" : "Ctrl") + "-Space"] = "autocomplete";
<p>Simple mode that tries to handle C-like languages as well as it
can. Takes two configuration parameters: <code>keywords</code>, an
object whose property names are the keywords in the language,
and <code>useCPP</code>, which determines whether C preprocessor
directives are recognized.</p>
<p><strong>MIME types defined:</strong> <code>text/x-csrc</code>
(C), <code>text/x-c++src</code> (C++), <code>text/x-java</code>
(Java), <code>text/x-csharp</code> (C#),
<code>text/x-objectivec</code> (Objective-C),
<code>text/x-scala</code> (Scala), <code>text/x-vertex</code>
<code>x-shader/x-fragment</code> (shader programs),
<code>text/x-squirrel</code> (Squirrel) and
<code>text/x-ceylon</code> (Ceylon)</p>