All Downloads are FREE. Search and download functionalities are using the official Maven repository.

uk.co.real_logic.sbe.generation.csharp.CSharp Maven / Gradle / Ivy

Go to download

FIX/SBE - OSI layer 6 presentation for encoding and decoding application messages in binary format for low-latency applications.

There is a newer version: 1.33.2
Show newest version
/*
 * Copyright 2013-2024 Real Logic Limited.
 * Copyright 2017 MarketFactory Inc
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package uk.co.real_logic.sbe.generation.csharp;

import uk.co.real_logic.sbe.generation.CodeGenerator;
import uk.co.real_logic.sbe.generation.TargetCodeGenerator;
import uk.co.real_logic.sbe.generation.TargetCodeGeneratorLoader;
import uk.co.real_logic.sbe.ir.Ir;

/**
 * {@link CodeGenerator} factory for the CSharp target programming language.
 */
public class CSharp implements TargetCodeGenerator
{
    private static final boolean GENERATE_DTOS = Boolean.getBoolean("sbe.csharp.generate.dtos");

    /**
     * {@inheritDoc}
     */
    public CodeGenerator newInstance(final Ir ir, final String outputDir)
    {
        final CSharpGenerator flyweightGenerator = new CSharpGenerator(
            ir,
            TargetCodeGeneratorLoader.precedenceChecks(),
            new CSharpNamespaceOutputManager(outputDir, ir.applicableNamespace()));

        if (GENERATE_DTOS)
        {
            final CSharpDtoGenerator dtoGenerator =
                new CSharpDtoGenerator(ir, new CSharpNamespaceOutputManager(outputDir, ir.applicableNamespace()));

            return () ->
            {
                flyweightGenerator.generate();
                dtoGenerator.generate();
            };
        }

        return flyweightGenerator;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy