WebCLConfiguration::WebCLConfiguration()
    : typePrefix_("_Wcl")
    , variablePrefix_("_wcl")
    , macroPrefix_("_WCL")

    , minSuffix_("min")
    , maxSuffix_("max")
    , indentation_("    ")
    , sizeParameterType_("ulong")

    , privateAddressSpace_("private")
    , localAddressSpace_("local")
    , constantAddressSpace_("constant")
    , globalAddressSpace_("global")

    , privateRecordType_(typePrefix_ + "Privates")
    , localRecordType_(typePrefix_ + "Locals")
    , constantRecordType_(typePrefix_ + "Constants")
    , globalRecordType_(typePrefix_ + "Globals")
    , addressSpaceRecordType_(typePrefix_ + "ProgramAllocations")

    , localLimitsType_(typePrefix_ + "LocalLimits")
    , constantLimitsType_(typePrefix_ + "ConstantLimits")
    , globalLimitsType_(typePrefix_ + "GlobalLimits")

    , localMinField_(variablePrefix_ + "_locals_min")
    , localMaxField_(variablePrefix_ + "_locals_max")
    , constantMinField_(variablePrefix_ + "_constant_allocations_min")
    , constantMaxField_(variablePrefix_ + "_constant_allocations_max")

    , privatesField_("pa")
    , localLimitsField_("ll")
    , constantLimitsField_("cl")
    , globalLimitsField_("gl")

    , localRecordName_(variablePrefix_ + "_locals")
    , constantRecordName_(variablePrefix_ + "_constant_allocations")
    , programRecordName_(variablePrefix_ + "_allocations_allocation")
    , addressSpaceRecordName_(variablePrefix_ + "_allocs")

    , nullType_("uint")
    , privateNullField_("pn")
    , localNullField_("ln")
    , constantNullField_("cn")
    , globalNullField_("gn")

    , localRangeZeroingMacro_(macroPrefix_ + "_LOCAL_RANGE_INIT")

    , dataWidths_(addValue(generateWidths(2, 16), 3))
    // this may be a little bit ridiculous but at least we get a constant list initialized
    , roundingModes_(addValue(addValue(addValue(addValue(StringList(), "rte"), "rtz"), "rtp"), "rtn"))

    , localVariableRenamer_(variablePrefix_ + "_", "_")
    , privateVariableRenamer_(variablePrefix_ + "_", "_")
    , typedefRenamer_("", "")
    , anonymousStructureRenamer_(typePrefix_, "")
{
}
WebCLConfiguration::WebCLConfiguration()
    : typePrefix_("_Wcl")
    , variablePrefix_("_wcl")
    , macroPrefix_("_WCL")
    , functionPrefix_("_wcl")

    , minSuffix_("min")
    , maxSuffix_("max")
    , indentation_("    ")
    , sizeParameterType_("ulong")

    , privateAddressSpace_("private")
    , localAddressSpace_("local")
    , constantAddressSpace_("constant")
    , globalAddressSpace_("global")

    , privateRecordType_(typePrefix_ + "Privates")
    , localRecordType_(typePrefix_ + "Locals")
    , constantRecordType_(typePrefix_ + "Constants")
    , globalRecordType_(typePrefix_ + "Globals")
    , addressSpaceRecordType_(typePrefix_ + "ProgramAllocations")

    , localLimitsType_(typePrefix_ + "LocalLimits")
    , constantLimitsType_(typePrefix_ + "ConstantLimits")
    , globalLimitsType_(typePrefix_ + "GlobalLimits")

    , localMinField_(variablePrefix_ + "_locals_min")
    , localMaxField_(variablePrefix_ + "_locals_max")
    , constantMinField_(variablePrefix_ + "_constant_allocations_min")
    , constantMaxField_(variablePrefix_ + "_constant_allocations_max")

    , privatesField_("pa")
    , localLimitsField_("ll")
    , constantLimitsField_("cl")
    , globalLimitsField_("gl")

    , localRecordName_(variablePrefix_ + "_locals")
    , constantRecordName_(variablePrefix_ + "_constant_allocations")
    , programRecordName_(variablePrefix_ + "_allocations_allocation")
    , addressSpaceRecordName_(variablePrefix_ + "_allocs")

    , nullType_("uint")
    , privateNullField_("pn")
    , localNullField_("ln")
    , constantNullField_("cn")
    , globalNullField_("gn")

    , localRangeZeroingMacro_(macroPrefix_ + "_LOCAL_RANGE_INIT")

    , dataWidths_(generateWidths(2, 16) + 3)
    , roundingModes_(StringList() + "rte" + "rtz" + "rtp" + "rtn")

    , atomicOperations1_(StringList() + "atomic_inc" + "atomic_dec")
    , atomicOperations2_(StringList() + "atomic_add" + "atomic_sub" + "atomic_xchg" + "atomic_min" + "atomic_max" + "atomic_and" + "atomic_or" + "atomic_xor")
    , atomicOperations3_(StringList() + "atomic_cmpxchg")

    , localVariableRenamer_(variablePrefix_ + "_", "_")
    , privateVariableRenamer_(variablePrefix_ + "_", "_")
    , typedefRenamer_("", "")
    , anonymousStructureRenamer_(typePrefix_, "")
{
}