summaryrefslogtreecommitdiff
path: root/rsc/source/parser/rscinit.cxx
blob: 282b9cad33bfd09e28171997146a74ffb3a7ef8d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you 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 http://www.apache.org/licenses/LICENSE-2.0 .
 */


#include <stdlib.h>
#include <stdio.h>

#include <tools/rcid.h>
#include <tools/wintypes.hxx>

#include <rsctree.hxx>
#include <rsctop.hxx>
#include <rscrange.hxx>
#include <rscconst.hxx>
#include <rscstr.hxx>
#include <rsccont.hxx>
#include <rscmgr.hxx>
#include <rscclass.hxx>
#include <rsckey.hxx>
#include <rscdb.hxx>
#include <rsclex.hxx>
#include <rscyacc.hxx>

void RscTypCont::Init()
{
    RscTupel *  pStringLongTupel;
    RscCont  *  pStringLongTupelList;
    RscArray *  pLangStringLongTupelList;

    RscTop   *  pClassMgr;
    RscTop   *  pClassString;
    RscTop   *  pClassStringArray;

    Atom        nId;

    aNmTb.SetSort( false );
{
    aNmTb.Put( "LINE",               LINE,           (sal_IntPtr)0 );
    aNmTb.Put( "NOT",                NOT,            (sal_IntPtr)0 );
    aNmTb.Put( "DEFINE",             DEFINE,         (sal_IntPtr)0 );
    aNmTb.Put( "INCLUDE",            INCLUDE,        (sal_IntPtr)0 );
    aNmTb.Put( "DEFAULT",            DEFAULT,        (sal_IntPtr)0  );
    aNmTb.Put( "class",              CLASS,          (sal_IntPtr)0  );
    aNmTb.Put( "extendable",         EXTENDABLE,     (sal_IntPtr)0  );
    aNmTb.Put( "writeifset",         WRITEIFSET,     (sal_IntPtr)0  );

/* values for integer types */
    aNmTb.Put( "TRUE",               BOOLEAN,        (sal_IntPtr)true  );
    aNmTb.Put( "FALSE",              BOOLEAN,        (sal_IntPtr)false );
}
{
    aEnumLong.SetRange( SAL_MIN_INT32, SAL_MAX_INT32 );
}
{
    aLangType.Init( aNmTb );
    aBaseLst.push_back( InitFieldUnitsType() );

    aBaseLst.push_back( pStringLongTupel = InitStringLongTupel() );
    aBaseLst.push_back( pStringLongTupelList = InitStringLongTupelList( pStringLongTupel ) );
    aBaseLst.push_back( pLangStringLongTupelList = InitLangStringLongTupelList( pStringLongTupelList ) );
}
{
    pRoot = pClassMgr = InitClassMgr();

    aVersion.pClass = new RscClass( pHS->getID( "VersionControl" ),
                                    RSC_VERSIONCONTROL, pClassMgr );
    aVersion = aVersion.pClass->Create( nullptr, RSCINST() );

    pClassString = InitClassString( pClassMgr );
    pRoot->Insert( pClassString );

    // set String as reference class of the base strings
    aString.SetRefClass( pClassString );

    // initialize class
    nId = pHS->getID( "StringArray" );
    pClassStringArray = new RscClass( nId, RSC_STRINGARRAY, pClassMgr );
    pClassStringArray->SetCallPar( *pStdPar1, *pStdPar2, *pStdParType );
    aNmTb.Put( nId, CLASSNAME, pClassStringArray );
    pRoot->Insert( pClassStringArray );

    // initialize variables
    nId = aNmTb.Put( "ItemList", VARNAME );
    pClassStringArray->SetVariable( nId, pLangStringLongTupelList );
}

    aNmTb.SetSort();
}

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */