root/src/add-ons/kernel/file_systems/packagefs/util/StringConstants.h
/*
 * Copyright 2013, Ingo Weinhold, ingo_weinhold@gmx.de.
 * Distributed under the terms of the MIT License.
 */
#ifndef STRING_CONSTANTS_H
#define STRING_CONSTANTS_H


#include "AutoPackageAttributes.h"
        // for the kAutoPackageAttributeNames array size
#include "String.h"


class StringConstants {
public:
                        // generate the member variable declarations
                        #define DEFINE_STRING_CONSTANT(name, value) \
                                String  name;
                        #define DEFINE_STRING_ARRAY_CONSTANT(name, size, ...) \
                                String  name[size];

                        #include "StringConstantsPrivate.h"

                        #undef DEFINE_STRING_CONSTANT
                        #undef DEFINE_STRING_ARRAY_CONSTANT

public:
        static  bool                            Init();
        static  void                            Cleanup();

        static  const StringConstants& Get()
                                                                        { return sDefaultInstance; }

private:
                        bool                            _Init();

private:
        static  StringConstants         sDefaultInstance;
};


#endif  // STRING_CONSTANTS_H